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服务器。

原文地址:https://www.cnblogs.com/wzllzw/p/11994249.html