docker-镜像管理基础(代码片段)

mustark mustark     2023-02-27     798

关键词:

Docker镜像

Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器

  • 采用分层构建机制,最底层为bootfs,其之为rootfs
  1. bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源
  2. rootfs:位于bootfs之上,表现为docker容器的跟文件系统;

    ①传统模式中,系统启动时,内核挂载rootfs时会首先将其挂载为"只读"模式,完整性自检完成后将其重新挂载为读写模式

    ②docker中,rootfs由内核挂载为"只读"模式,而后通过“联合挂载”技术额外挂载一个“可写”层

 

基于容器制作镜像

一、分布构建

1、基于busybox镜像,启动一个名为b1的容器

[[email protected] ~]# docker run --name b1 -it busybox
/ # ls 
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # mkdir -p /data/html
/ # 
/ # vi /data/html/index.html
/ # 

2、以b1容器制作镜像,此时仓库、标签都为空

[[email protected] ~]# docker commit -p b1
sha256:f586aa9b0f116e2c2ed625f94057923d9f2f1173f851ab7da81131bdacb8a9c0
[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
<none>                   <none>              f586aa9b0f11        24 seconds ago      1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

3、为其打上标签

[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
<none>                   <none>              f586aa9b0f11        2 minutes ago       1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
[[email protected] ~]# docker tag f586aa9b0f11 mustark/httpd:v0.1-1
[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd            v0.1-1              f586aa9b0f11        4 minutes ago       1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

  同一镜像打多个标签

[[email protected] ~]# docker tag mustark/httpd:v0.1-1 mustark/httpd:latest
[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd            latest              f586aa9b0f11        7 minutes ago       1.2MB
mustark/httpd            v0.1-1              f586aa9b0f11        7 minutes ago       1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

  此时删除其中一个镜像,不会产生影响。类似“硬链接”

[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED              SIZE
mustark/httpd            latest              0d3bbdaa506f        About a minute ago   1.2MB
mustark/httpd            v0.1-1              0d3bbdaa506f        About a minute ago   1.2MB
busybox                  latest              3a093384ac30        3 weeks ago          1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago          30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago          17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago        44.6MB
[[email protected] ~]# 
[[email protected] ~]# docker image rm mustark/httpd:latest
Untagged: mustark/httpd:latest
[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd            v0.1-1              0d3bbdaa506f        2 minutes ago       1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
[[email protected] ~]# 

 

二、一步构建

修改默认CMD,打上标签、仓库

[[email protected] ~]# docker commit -a "Mustark <[email protected]>" -c CMD ["/bin/httpd","-f","-h","/data/html"] -p b1 mustark/httpd:v0.2
sha256:f36ec7798fe63e4e13eb339e74cf4ecd0b15bfd126bf142b302265907daec619
[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd            v0.2                f36ec7798fe6        4 seconds ago       1.2MB
mustark/httpd            v0.1-1              0d3bbdaa506f        9 minutes ago       1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

基于mustark/httpd:v0.2这个镜像启动一个容器

[[email protected] ~]# docker run --name t2 mustark/httpd:v0.2


[[email protected] ~]# docker container ls
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
5a94ded28cfe        mustark/httpd:v0.2   "/bin/httpd -f -h /d…"   19 seconds ago      Up 18 seconds                           t2
fcba9b952998        busybox              "sh"                     30 minutes ago      Up 30 minutes                           b1
125c76bcd270        redis:4-alpine       "docker-entrypoint.s…"   6 hours ago         Up 6 hours          6379/tcp            kvstor1
fac034deb8a7        nginx:1.14-alpine    "nginx -g ‘daemon of…"   6 hours ago         Up 6 hours          80/tcp              web01

进入容器获取地址

[[email protected] ~]# docker inspect t2

技术分享图片

访问172.17.0.5

[[email protected] ~]# curl 172.17.0.5
<h1>Busybox httpd server.</h1>

 

 

保存制作的镜像

一、docker hub

创建一个Repositories

技术分享图片

推镜像前先登录,默认login登录为docker hub

[[email protected] ~]# docker login -u mustark
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

进行推送镜像

[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd            v0.2                f36ec7798fe6        18 minutes ago      1.2MB
mustark/httpd            v0.1-1              0d3bbdaa506f        28 minutes ago      1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
[[email protected] ~]# docker push mustark/httpd
The push refers to repository [docker.io/mustark/httpd]
8c5f5b80130c: Pushed 
683f499823be: Mounted from library/busybox 
v0.1-1: digest: sha256:289223ea342ab3c5142b122d915684da6f265b62d0b0c48ad91be4cd450daf47 size: 734
8c5f5b80130c: Layer already exists 
683f499823be: Layer already exists 
v0.2: digest: sha256:cde5b6de7d22af4be7f824b9fc08e365407a2b50a41067b919f77e5e53144fa9 size: 734

 

此时docker hub下也会同步有这些镜像

技术分享图片

 

二、阿里云

创建命名空间

技术分享图片

 

技术分享图片

创建镜像仓库

技术分享图片

第三方镜像仓库都会有自己的镜像管理规则,例如登录、镜像命名

修改镜像名字

[[email protected] ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd            v0.2                f36ec7798fe6        18 minutes ago      1.2MB
mustark/httpd            v0.1-1              0d3bbdaa506f        28 minutes ago      1.2MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
[[email protected] ~]# docker tag mustark/httpd:v0.2 registry.cn-shenzhen.aliyuncs.com/mustark/httpd:v0.2
[[email protected] ~]# docker image ls
REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd                                     v0.2                f36ec7798fe6        36 minutes ago      1.2MB
registry.cn-shenzhen.aliyuncs.com/mustark/httpd   v0.2                f36ec7798fe6        36 minutes ago      1.2MB
mustark/httpd                                     v0.1-1              0d3bbdaa506f        45 minutes ago      1.2MB
busybox                                           latest              3a093384ac30        3 weeks ago         1.2MB
redis                                             4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                                             1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel                            v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

登录(登录密码是Registry密码,不是阿里云账号登录的密码)

[[email protected] ~]# docker login --username=chen_虫儿飞 registry.cn-shenzhen.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

推送镜像到仓库

[[email protected] ~]# docker push registry.cn-shenzhen.aliyuncs.com/mustark/httpd
The push refers to repository [registry.cn-shenzhen.aliyuncs.com/mustark/httpd]
8c5f5b80130c: Pushed 
683f499823be: Pushed 
v0.2: digest: sha256:cde5b6de7d22af4be7f824b9fc08e365407a2b50a41067b919f77e5e53144fa9 size: 734

技术分享图片

 

 

镜像导出

[[email protected] ~]# docker images
REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd                                     v0.2                f36ec7798fe6        About an hour ago   1.2MB
registry.cn-shenzhen.aliyuncs.com/mustark/httpd   v0.2                f36ec7798fe6        About an hour ago   1.2MB
mustark/httpd                                     v0.1-1              0d3bbdaa506f        About an hour ago   1.2MB
busybox                                           latest              3a093384ac30        3 weeks ago         1.2MB
redis                                             4-alpine            37abb58bfd68        4 weeks ago         30MB
nginx                                             1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
quay.io/coreos/flannel                            v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
[[email protected] ~]# docker save -o myimages.gz mustark/httpd:v0.2 mustark/httpd:v0.1-1
[[email protected] ~]# ls
anaconda-ks.cfg  git_test  myimages.gz

镜像导入,将打包好的镜像发送到另外一个节点node2

[[email protected] ~]# scp myimages.gz [email protected]10.0.0.62:/
[email protected]10.0.0.62s password: 
myimages.gz  

在node2节点上导入镜像

[[email protected] ~]# docker load -i myimages.gz 
683f499823be: Loading layer [==================================================>]  1.416MB/1.416MB
8c5f5b80130c: Loading layer [==================================================>]  4.608kB/4.608kB
Loaded image: mustark/httpd:v0.2
Loaded image: mustark/httpd:v0.1-1
[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mustark/httpd       v0.2                f36ec7798fe6        About an hour ago   1.2MB
mustark/httpd       v0.1-1              0d3bbdaa506f        2 hours ago         1.2MB

 

docker镜像管理基础(代码片段)

docker镜像管理基础镜像的概念镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱。docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。docker镜像采用分层构建机制,最底层为bootfs,其上为... 查看详情

docker基础:本地镜像管理相关命令(代码片段)

...地镜像管理列出本地镜像删除本地镜像标记本地镜像使用DockerFile创建镜像查看指定镜像的创建历史镜像保存镜像导入从归档文件中创建镜像从容器修改中创建新镜像本地镜像管理dockerimages:列出本地镜像;dockerrmi:删除本地镜像... 查看详情

docker镜像管理基础(代码片段)

镜像的概念镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱。docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。docker镜像采用分层构建机制,最底层为bootfs,其上... 查看详情

docker镜像管理基础(代码片段)

镜像的概念镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱。docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。docker镜像采用分层构建机制,最底层为bootfs,其上... 查看详情

docker基础(代码片段)

目录Docker基础一docker容器介绍1.1docker的理念1.2docker的组成1.3docker能干什么1.4docker改变了什么1.5基于docker的不可变基础设施二Docker镜像和容器管理2.1相关站点2.2Docker部署与实践三Docker的网络访问和数据管理3.1Docker网络3.2Docker数据数... 查看详情

docker入门之镜像管理基础(代码片段)

docker镜像管理基础首发:arppinging一、镜像概述1.1联合挂载在之前的文章我们提到过,容器是基于镜像启动的,镜像的存储驱动是overlay2overlayFS将单个Linux主机上的两个目录合成一个目录,这些目录称为层,统一过程被称为联合挂载... 查看详情

docker镜像管理基础(代码片段)

docker镜像管理基础文章目录docker镜像管理基础镜像的概念docker镜像层docker存储驱动AUFSOverlayFSDeviceMapperdockerregistrydocker镜像的制作DockerHubdocker镜像的获取镜像的生成基于容器制作镜像镜像的概念镜像可以理解为应用程序的集装箱&#x... 查看详情

docker系列容器基础docker镜像管理(代码片段)

...f1a;念舒_C.ying个人博客🌏:念舒_C.ying2容器基础2.1Docker镜像查找命令查找dockersearchmysqldocker官网查找https://hub.docker.com2.2Docker镜像管理拉取MySQL镜像dockerpullmysql:latest查看本地镜像dockerimages镜像加速(阿里云)sudomkdir-p... 查看详情

docker入门基础(代码片段)

目录一、简介1、docker架构2、docker的概念二、docker的安装和管理1、docker安装2、docker配置阿里云镜像加速3、基础命令一、简介参考https://www.cnblogs.com/linuxk/p/8984242.html1、docker架构Docker使用客户端-服务器(C/S)架构模式,使用远程API来... 查看详情

docker:docker镜像管理(代码片段)

一、基本介绍docker镜像是容器启动的基础,镜像里面包含容器启动所需要的文件系统及其内容。docker镜像采用分层构建的机制,这种分层大致分为两部分,一部分是最底层的引导文件系统bootfs,类型有aufs,btffs或者overlay2等;另... 查看详情

docker镜像管理基础与基于容器的镜像制作示例(代码片段)

一、Docker镜像  Docker镜像是启动Docker容器的一个非常重要的组件。Docker各组件之间的关系如图:  Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建并启动容器。并且Docker镜像是采用分层构建,联合... 查看详情

docker-镜像管理基础(代码片段)

Docker镜像Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器采用分层构建机制,最底层为bootfs,其之为rootfsbootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节... 查看详情

docker镜像制作和管理(代码片段)

一、Docker镜像说明二、基于容器通过dockercommit手动制作镜像1、基于容器手动制作镜像步骤1、下载官方系统镜像2、基于官方基础镜像启动容器,并进入容器3、在容器中进行配置操作  3.1、安装基础工具  3.2、配置运行环境... 查看详情

docker基础知识和命令使用入门(代码片段)

本文介绍了Docker相关的基础知识和命令的简单使用。基础知识部分包括Docker的用途和意义,Docker的镜像、容器、仓库、Dockerfile和DockerCompose的理解,以及Docker图形管理工具Portainer的基础功能。Docker命令的使用包括镜像使用、容器... 查看详情

docker基础知识!(代码片段)

dockerDocker概述Docker与传统虚拟化的区别Docker原理Docker三大组件Docker网络模式DockerfileDocker镜像的分层Docker安装部署Docker命令管理镜像容器操作网络管理Docker数据卷Docker概述Docker是Linux中运行应用的开源工具,是一种轻量级的虚... 查看详情

docker基础知识!(代码片段)

dockerDocker概述Docker与传统虚拟化的区别Docker原理Docker三大组件Docker网络模式DockerfileDocker镜像的分层Docker安装部署Docker命令管理镜像容器操作网络管理Docker数据卷Docker概述Docker是Linux中运行应用的开源工具,是一种轻量级的虚... 查看详情

docker基础知识!(代码片段)

dockerDocker概述Docker与传统虚拟化的区别Docker原理Docker三大组件Docker网络模式DockerfileDocker镜像的分层Docker安装部署Docker命令管理镜像容器操作网络管理Docker数据卷Docker概述Docker是Linux中运行应用的开源工具,是一种轻量级的虚... 查看详情

docker镜像管理基础(代码片段)

镜像的概念镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱。docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。docker镜像采用分层构建机制,最底层为bootfs,其上... 查看详情