docker 两种创建镜像的方式
一、docker commit
主要步骤是用镜像实例化docker,然后修改,然后提交制作新镜像
在环境中查看当前镜像
用centos镜像起一个容器,写入一个测试文件home/image_commit_test
也可以安装一个程序,有变化就行
因为容器是临时启动,退出就会销毁,新开窗口查看正在运行的容器
kickass_hugle emmmm, docker瞎起的名字
Docker commit 把当前运行的容器制作为centos_image_commit_test 镜像
进入镜像查看,文件已经存在
但是 docker 不建议这么构建镜像,(原因不管了,一点都不自动化)
二、docker file
先看当前路径,并且写一个 DockerFile
Docker build 创建镜像
[[email protected] DockerFile]# docker build -t centos_image_dockerfile_test .
# -t 将新镜像命名为 ubuntu-with-vi-dockerfile
# . 指明 build context 为当前目录
# 也可以通过 -f 参数指定 Dockerfile 的位置
Sending build context to Docker daemon 2.048 kB
# Docker 将 build context 中的所有文件发送给 Docker daemon
Step 1/2 : FROM centos
---> 470671670cac
# centos镜像的id
Step 2/2 : RUN echo "docker file test" >> home/docker_file_test
# 在470671670cac 基础上执行命令
---> Running in e63b8ecdeee0
# 启动 ID 为 e63b8ecdeee0的临时容器,在容器中重定向文件
---> 98e47ac9f82c
# 得到 98e47ac9f82c 的镜像,docker images 可以看到就是centos_image_dockerfile_test 的id
Removing intermediate container e63b8ecdeee0
# 删除临时容器
Successfully built 98e47ac9f82c
# 创建成功
查看镜像centos_image_dockerfile_test 已存在, 进入容器 home/docker_file_test 也在
Docker history 可以看到镜像的来龙去脉也就是 Dockerfile 的执行过程。
<missing>表示无法获取 IMAGE ID,可能网络原因,从国内镜像源应该不会这样
和原来的centos镜像相比,只是多了一个文件而已