构建镜像

构建Golang编译环境

使用容器创建镜像

  • 创建并运行一个容器(基于ubuntu:14.04镜像)
$ sudo docker run --name golang -it ubuntu:14.04 /bin/bash
  • 安装Golang编译器
$ apt-get update
$ apt-get install -y golang
# 清除apt缓存
$ rm -rf /var/lib/apt/lists/*
  • 配置Golang编译环境
$ mkdir /gopath && cd /gopath && mkdir bin src
$ export GOPATH=/gopath
$ export PATH=$PATH:$GOPATH/bin
  • 构建Golang镜像
# Usage docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
$ docker commit -m "Golang compiler." golang golang:test

使用Dockerfile构建镜像

以上述操作为例,介绍一些常用指令,具体了解可参考附录A

  • Dockerfile指令
# 基础镜像
# Usage: FROM image:tag
FROM ubuntu:14.04

# 指定维护者信息
# Usage: MAINTAINER name
MAINTAINER tiannianshou@gmail.com

# 在shell中运行命令
# Usage: RUN command
RUN apt-get update && 
	apt-get install -y golang && 
	rm -rf /var/lib/apt/lists/* && 
	mkdir -p /gopath

# 指定环境变量
# Usage: ENV key value
ENV GOPATH /gopath
ENV PATH $GOPATH/bin:$PATH

# 工作目录
# Usage: WORKDIR /path
WORKDIR /gopath

# 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
# Usage: VOLUMES 
VOLUMES ["/gopath"]

# 容器暴漏给外侧的端口号
# Usage: EXPOSE port [port...]
EXPOSE 80

# 指定启动容器时执行的命令
# Usage: CMD ["executable","param1","param2"]
CMD ["/bin/bash"]
  • 构建镜像
# 使用指定的Dockerfile创建镜像
# Usage: docker build [OPTIONS] PATH | URL | - 
# .表示当前目录
$ sudo docker build -t golang:1.2 .
文章导航