一、编写程序
二、编译成可执行文件
三、编写Dockerfile
四、构建镜像
在镜像制作的时候,Docker 会启动一个容器,并在该容器里制作这个镜像。可通过 docker ps 来查看。
基本步骤如下:
1、解析 Dockerfile 文件,并找到基础镜像
2、以基础镜像为基础创景一个容器
3、在容器中顺序执行 Dockerfile 中的命令
4、如果不是 RUN 命令,比如 ENV 命令,记录下来以便启动时执行
5、属性命令记录在 Image 的属性中
6、所有执行执行完后,commit 该容器为新的镜像
五、查看镜像
六、运行镜像
七、Build 上下文的概念
在使用 docker build 命令通过 Dockerfile 创建镜像时,会产生一个 build 上下文(context)。所谓的 build 上下文就是 docker build 命令的 PATH 或 URL 指定的路径中的文件的集合。
在镜像 build 过程中可以引用上下文中的任何文件,比如我们要介绍的 COPY 和 ADD 命令,就可以引用上下文中的文件。
默认情况下 docker build -t testx . 命令中的 . 表示 build 上下文为当前目录。当然我们可以指定一个目录作为上下文,比如下面的命令:
$ docker build -t testx /home/nick/hc
我们指定 /home/nick/hc 目录为 build 上下文,默认情况下 docker 会使用在上下文的根目录下找到的 Dockerfile 文件。
COPY 和 ADD 命令不能拷贝上下文之外的本地文件
对于 COPY 和 ADD 命令来说,如果要把本地的文件拷贝到镜像中,那么本地的文件必须是在上下文目录中的文件。
其实这一点很好解释,因为在执行 build 命令时,docker 客户端会把上下文中的所有文件发送给docker daemon。
考虑 docker 客户端和 docker daemon 不在同一台机器上的情况,build 命令只能从上下文中获取文件。
如果我们在 Dockerfile 的 COPY 和 ADD 命令中引用了上下文中没有的文件,就会收到类似下面的错误:
ADD failed: stat /var/lib/docker/tmp/docker-builder196712271/opt/skywalking/skywalking-agent.jar: no such file or directory
八、docker run 中的privileged参数
docker 应用容器 获取宿主机root权限(特殊权限-)
docker run -d --name="centos7" --privileged=true centos:7 /usr/sbin/init
九、日期同步
docker cp /etc/localtime 14290b95330a:/etc/
参考资料:
docker训练-使用dockerfile构建自己的java项目
docker Dockerfile java8构建微服镜像并运行