关键词:
Docker镜像
Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器
- 采用分层构建机制,最底层为bootfs,其之为rootfs
- bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源
- 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.62‘s 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镜像的获取镜像的生成基于容器制作镜像镜像的概念镜像可以理解为应用程序的集装箱... 查看详情
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,其上... 查看详情