dockerfile

基于dockerfile创建镜像

使用docker build命令来创建新的docker镜像

1, 创建Dockerfile文件,然后进行编辑

From python
Cmd python -m http.server
  • FROM 是指定基础镜像,它必须是第一条指令。这里使用python作为基础镜像。

  • Cmd 表示镜像作为容器运行时运行的程序命令。 这里是启动了一个python的http.server模块。

2, build

docker build -t zhang:1.0 . # 基于当前目录的Dockfile来创建镜像,镜像名称为zhang:v1

-t 表示给镜像命名

3, 运行容器进行验证

docker run -p 8000:8000 -it –rm zhang:v1

-p 端口进行映射, -it交互式模式, –rm 当容器结束后自动删除容器。

然后通过浏览器访问容器所在主机的8000端口,我这里地址为http://192.168.56.131:8000这样可以查看容器内的所有文件, 这个功能是由python的http.server模块提供的。

端口映射是通过iptables的DNAT来实现的,写入的规则为

-A DOCKER ! -i docker0 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 172.17.0.3:8000

我们可以知道容器的内部IP为 172.17.0.3 , 通过docker exec -it 232d2ccf4ec9 /bin/bash命令进入 到docker查看,确实是172.17.0.3

在 Dockerfile 中使用 ENV 指令设置环境变量

环境变量设置格式有两种 :

  • ENV key1 value1

  • ENV key1=value1 key2=value2

示例如下

ENV GOPROXY https://goproxy.cn