Docker学习之四Docker自定义容器镜像

Posted cac2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker学习之四Docker自定义容器镜像相关的知识,希望对你有一定的参考价值。

环境
  docker-ce-19.03.1-3.el7.x86_64

  centos 7

一、使用已有容器创建镜像-docker commit
1、查看本地已有镜像

[root@node105 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              5a3221f0137b        9 days ago          126MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
training/webapp     latest              6fae60ef3446        4 years ago         349MB

查看本地正在运行的容器

[root@node105 ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
15ff843a3404        training/webapp     "python app.py"          21 minutes ago      Up 21 minutes       0.0.0.0:32768->5000/tcp   stoic_moore
db8b3e2f1c64        nginx               "nginx -g ‘daemon of…"   About an hour ago   Up 36 minutes       0.0.0.0:8081->80/tcp      nginx-test
[root@node105 ~]# 

查看所有容器运行情况

[root@node105 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                     NAMES
cdb6408b8370        training/webapp     "/bin/bash"              20 minutes ago      Exited (0) 15 minutes ago                             funny_ramanujan
15ff843a3404        training/webapp     "python app.py"          22 minutes ago      Up 22 minutes               0.0.0.0:32768->5000/tcp   stoic_moore
db8b3e2f1c64        nginx               "nginx -g ‘daemon of…"   About an hour ago   Up 37 minutes               0.0.0.0:8081->80/tcp      nginx-test
[root@node105 ~]# 

2、以交互方式进入容器并进行修改

[root@node105 ~]# docker run -ti training/webapp /bin/bash
root@cdb6408b8370:/opt/webapp# ls
Procfile app.py requirements.txt tests.py
root@cdb6408b8370:/opt/webapp# touch app1.py
root@cdb6408b8370:/opt/webapp# ls
Procfile app.py app1.py requirements.txt tests.py
root@cdb6408b8370:/opt/webapp# exit
exit
[root@node105 ~]#

3、提交修改生成新的镜像

[root@node105 ~]# docker commit -m "Added app1.py" -a "cac2020" 15ff843a3404 training/webapp:v2
sha256:71b135d88d62ba40637c839c2cd955c10c23e187d48e6902f8b8095cf379f251
[root@node105 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
training/webapp     v2                  71b135d88d62        7 seconds ago        349MB
nginx               latest              5a3221f0137b        9 days ago           126MB
hello-world         latest              fce289e99eb9        7 months ago         1.84kB
training/webapp     latest              6fae60ef3446        4 years ago          349MB

-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息

4、删除镜像-dcoker rmi

[root@node105 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
training/webapp     v2                  71b135d88d62        8 minutes ago       349MB
nginx               latest              5a3221f0137b        9 days ago          126MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
training/webapp     latest              6fae60ef3446        4 years ago         349MB
[root@node105 ~]# docker rmi 71b135d88d62
Untagged: training/webapp:v2
Deleted: sha256:71b135d88d62ba40637c839c2cd955c10c23e187d48e6902f8b8095cf379f251
[root@node105 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              5a3221f0137b        9 days ago          126MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB
training/webapp     latest              6fae60ef3446        4 years ago         349MB

二、使用Dockerfile创建镜像-docker build

1、Dockerfile语法:
(1)#是注释符
(2)FROM 指定一个依赖的镜像,一个镜像不能超过 127 层
(3)


三、本地文件系统导入构建镜像-docker import
要从本地文件系统导入一个镜像,可以使用 openvz(容器虚拟化的先锋技术)的模板来创建:openvz 的模板下载地址为templates 。
1、先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入:
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04

2、然后查看新导入的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB

四、上传镜像-docker push
把创建的镜像上传到仓库中来共享。Docker Hubhuo或者自己搭建的仓库。

docker push 镜像名

五、存储和载入镜像

1、保存镜像为文件
docker save -o 要保存的文件名 要保存的镜像
eg:
docker save -o java8.tar lwieske/java-8

2、从文件载入镜像
docker load --input 文件
或者
docker load < 文件名
eg:
docker load < java8.tar

 

参考:

Dockerfile语法简介

创建docker镜像的两种方式
Docker 创建镜像、修改、上传镜像

以上是关于Docker学习之四Docker自定义容器镜像的主要内容,如果未能解决你的问题,请参考以下文章

Docker学习之三Docker查找拉取镜像启动容器容器使用

(2021-04-27)后端开发学习之Docker入门

Docker学习之镜像

Docker 学习之镜像导入导出及推送阿里云服务器

Linux学习-Docker学习之数据卷

Docker 安全学习之——Docker基础知识