2.docker镜像管理基础

docker 码头工人,镜像集装箱

启动容器时,docker daemon会试图从本地获取相关的镜像,本地镜像不存在时,其将从Registry中下载该镜像并保存到本地

Registry分类

  1. Sponsor Registry  第三方的Registry,供客户和社区使用
  2. Mirror Registry       第三方的Registry,只让客户使用
  3. Vendor Registry            由发布Docker镜像的供应商提供的Registry
  4. Private Registry   通过设有防火墙和额外的安全层的私有实体提供Registr

每个仓库可以包含多个的Tag,每个标签对应一个镜像,Docker Registry中的镜像通常由开发人员制作,而后推送至‘公共’或‘私有’Registry上保存,供其他人使用。

带服务器地址下载镜像

docker pull quay.io/coreos/flannel:v0.10.0-amd64

镜像制作

  1. Dockerfile

  2. 基于容器制作镜像。

本节主要针对基于容器制作

1.启动一个容器

[root@zanghao01 ~]# docker run --name b1 -it busybox
/ # ls /
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # mkdir -p /data/html
/ # vim /data/html/index.html
sh: vim: not found
/ # vi /data/html/index.html   #####<h1>Busybox httpd server.</h1>

2.重新开个客户端,保存 刚刚的容器更改docker commit -p b1

[root@zanghao01 ~]# docker commit -p b1
sha256:f832307f826307dc5390a5912a4e465650a948c783372bb126c7bf119788b92d
[root@zanghao01 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
<none>                   <none>              f832307f8263        9 seconds ago       1.22MB
nginx                    latest              a1523e859360        2 days ago          127MB
busybox                  latest              6d5fcfe5ff17        2 months ago        1.22MB
centos                   latest              0f3e07c0138f        5 months ago        220MB
mycentos                 latest              0f3e07c0138f        5 months ago        220MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        2 years ago         44.6MB
[root@zanghao01 ~]# docker tag f832307f8263 zanghao/httpd:v0.1-1
[root@zanghao01 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
zanghao/httpd            v0.1-1              f832307f8263        2 minutes ago       1.22MB
nginx                    latest              a1523e859360        2 days ago          127MB
busybox                  latest              6d5fcfe5ff17        2 months ago        1.22MB
centos                   latest              0f3e07c0138f        5 months ago        220MB
mycentos                 latest              0f3e07c0138f        5 months ago        220MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        2 years ago         44.6MB

3.制作出一个新的镜像,使用TAG标签

[root@zanghao01 ~]# docker tag zanghao/httpd:v0.1-1 zanghao/httpd:latest
[root@zanghao01 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
zanghao/httpd            latest              f832307f8263        7 minutes ago       1.22MB
zanghao/httpd            v0.1-1              f832307f8263        7 minutes ago       1.22MB
nginx                    latest              a1523e859360        2 days ago          127MB
busybox                  latest              6d5fcfe5ff17        2 months ago        1.22MB
mycentos                 latest              0f3e07c0138f        5 months ago        220MB
centos                   latest              0f3e07c0138f        5 months ago        220MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        2 years ago         44.6MB

4.启动新建的镜像,可以查看到更改的变化

[root@zanghao01 ~]# docker run --name t1 -it zanghao/httpd:v0.1-1
/ # ls /
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data
/data # ll
sh: ll: not found
/data # ls
html
/data # cat html
cat: read error: Is a directory
/data # cd html
/data/html # ls
index.html
/data/html # cat index.html
<h1>Busybox httpd server.</h1>

镜像分享

1.将镜像push到仓库(例如Dcoker Hub)

首先前提是有Dcoker Hub账号(docker login -u 用户名),然后docker push命令进行推送

2.镜像的导入和导出

将镜像文件打包

[root@zanghao01 ~]# docker save -o myimages.gz zanghao/httpd:v0.1-1 nginx:latest
[root@zanghao01 ~]# ls
-                dead.letter  EOF                    index.html?serve       myimages.gz     testdelete1.py  zanghao
anaconda-ks.cfg  dump.rdb     etc_2018-11-03.tar.gz  mariadb-10.3.7.tar.gz  plush_color.sh  testdelete.py

虚拟机root2安装docker

[root@zanghao02 yum.repos.d]# yum stall docker-ce

将roo1的文件myimages.gz复制到root

[root@zanghao01 ~]# scp myimages.gz root@192.168.121.128:~
root@192.168.121.128's password: 
myimages.gz   

在root2上加载导入的镜像 docker load -i myimages.gz

[root@zanghao02 ~]# docker load -i myimages.gz
195be5f8be1d: Loading layer [==================================================>]  1.437MB/1.437MB
abfb1a19084a: Loading layer [==================================================>]  4.608kB/4.608kB
Loaded image: zanghao/httpd:v0.1-1
f2cb0ecef392: Loading layer [==================================================>]  72.48MB/72.48MB
fe08d5d042ab: Loading layer [==================================================>]  58.04MB/58.04MB
318be7aea8fc: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nginx:latest
[root@zanghao02 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
zanghao/httpd       v0.1-1              f832307f8263        About an hour ago   1.22MB
nginx               latest              a1523e859360        2 days ago          127MB


 

1. Docker 的优势主要包括: - **轻量级封装**:Docker使用容器作为软件打包方式,每个容器都是一个独立的运行环境,包含应用程序及其依赖,使得部署更简单。 - **环境一致性**:无论在哪个开发或生产环境中,容器内的应用都能保持一致的行为,减少“it works on my machine”问题。 - **资源隔离**:通过命名空间和控制组,Docker确保容器之间相互隔离,避免资源争抢。 - **快速启动**:由于容器基于镜像启动,启动速度比传统虚拟机快得多。 - **可移植性**:Docker镜像可以轻松在不同平台上运行,便于部署和迁移。 - **持续集成/持续部署(CI/CD)**:支持自动化流程,有助于团队协作和自动化运维。 2. **Dockerfile** 是一个文本文件,它包含了创建 Docker 镜像的指令序列。当你构建一个新的 Docker 镜像时,Dockerfile会指导 Docker 守护进程一步步安装软件、设置环境变量、复制文件等,最后生成一个完整的镜像。它是 Docker 容器化应用的蓝图,类似于源代码管理中的 Makefile。 3. **Docker镜像和层的区别**: - **镜像(Image)**:是一个读-only 的静态模板,包含了应用程序的文件系统结构、运行时环境和其他配置。它是基础的构建单元,可以被拉取、创建、推送和删除。 - **层(Layer)**:是镜像中的基本结构单元,每个新的 Dockerfile 命令都会创建一个新的层。层之间的差异仅在于上层对下层所做的更改,比如添加或修改文件,这样在构建过程中可以节省磁盘空间,并通过层的复用减少复杂性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值