Dockerfile构建镜像
参考书籍 :第一本docker书【澳】James Turnbull
1.第一个Dockerfile
(1)创建了一个dockerfile3的目录来保存Dockerfile。这个目录就是我们的构建环境。
$ mkdir dockerfile3
$ cd dockerfile3
$ touch Dockerfile
(2)Dockerfile文件如下。
在这个例子里,我们通过RUN指令更新了已经安装的APT仓库,安装了nginx包。之后将 ‘Hi, I am in your container’ 写入 /var/www/html/index.nginx-debian.html。
该Dockerfile由一系列指令和参数组成。指令必须为大写。文件从上到下依次执行,所以应根据需要合理安排指令的顺序。
每条指令都会创建一个新的镜像层并对镜像进行提交。
- Docker从基础镜像运行一个容器。
- 执行一条指令,对容器做出修改。
- 执行类似docker commit的操作,提交一个新的镜像层。
- Docker再基于刚提交的镜像层运行一个新容器。
- 执行Dockerfile中的下一条指令,直到所有指令都执行完毕。
From ubuntu:latest MAINTAINER WZL RUN apt-get update && apt-get install -y nginx RUN echo 'Hi, I am in your container' > /var/www/html/index.nginx-debian.html EXPOSE 80
(3)基于Dockerfile构建新镜像。
$ cd dockerfile3
$ docker build -t="dockerfile3" .
(4)从镜像启动容器
$ docker run -d -p 80 --name dockerfile3_1 dockerfile3 nginx -g "daemon off;"
-d :告诉docker以分离(detached)方式在后台运行。这种方式非常适合运行类似Nginx守护进程这样的需要长时间运行的进程。
-p : 用来控制Docker运行时应该公开那些网络端口给外部(宿主机)。
查看端口映射情况
$ docker port dockerfile3_1 80
这样,通过 ip:port的形式就能访问该容器的nginx服务器。