Docker基础入门:镜像、容器导入导出与私有仓库搭建

Docker基础入门:镜像导入导出与私有仓库搭建

|-----------------------------|
| 💖The Begin💖点点关注,收藏不迷路💖 |

一、 Docker镜像、容器的导入和导出

1.1、Docker镜像的导出

python 复制代码
docker save [options]  images [images...]

docker save > uu.tar ubuntu:latest
或
docker save ubuntu:latest > uu.tar

1.2、Docker镜像的载入

python 复制代码
#在镜像包所在的文件夹下操作
docker load --input  uu.tar
#也可以使用
docker load -i uu.tar
或
docker load < uu.tar

1.3、Docker容器的导出

python 复制代码
docker export 容器id/名称 > 导出的路径

docker export 220aee82cfea > -o mysql.tar.gz

1.4、Docker容器的导入

python 复制代码
容器的导入
docker import  - 镜像用户/镜像名:镜像版本号

cat mysql.tar.gz | docker import - test/mysql:5.7

二、 镜像和容器导出和导入的区别:

1.镜像导入 是复制的过程。

2.容器导入 是将当前容器 变成一个新的镜像。

save 和 export区别:

1)save 保存镜像所有的信息-包含历史信息。

2)export 只导出当前的信息。

首先,两者的操作对象不同。docker save是将一个镜像保存为一个tar包,而docker export是将一个容器快照保存为一个tar包。

然后,docker export导出的容器快照文件将丢弃所有的历史记录和元数据信息,即仅保存容器当时的快照状态;而docker save保存的镜像存储文件将保存完整记录,体积也要大。

三、commit操作_本地镜像发布到阿里云

3.1、commit操作有关步骤

提交容器副本成为新的镜像。

python 复制代码
docker commit -m="提交的信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

本地镜像发布到阿里云:

  1. 登录阿里云Docker Registry
python 复制代码
$ docker login --username=aliyun075054**** registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
  1. 从Registry中拉取镜像
python 复制代码
$ docker pull registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos:[镜像版本号]
  1. 将镜像推送到Registry
python 复制代码
$ docker login --username=aliyun075054**** registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
  1. 选择合适的镜像仓库地址
python 复制代码
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
  1. 示例
python 复制代码
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

3.2、使用" docker push" 命令将centos镜像提交至阿里云

python 复制代码
####将centos镜像IMAGE ID (5d0da3dc9764)提交至阿里云  
[root@zyl-server ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         latest    605c77e624dd   19 months ago   141MB
hello-world   latest    feb5d9fea6a5   23 months ago   13.3kB
centos        latest    5d0da3dc9764   23 months ago   231MB
[root@zyl-server ~]# docker tag 5d0da3dc9764  registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos:7.9
[root@zyl-server ~]# docker push  registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos:7.9
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos]
74ddd0ec08fa: Layer already exists 
7.9: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529
[root@zyl-server ~]# 

四、Docker私有仓库搭建(registry)

4.1、下载镜像

python 复制代码
[root@zyl-server ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
79e9f2f55bf5: Pull complete 
0d96da54f60b: Pull complete 
5b27040df4a2: Pull complete 
e2ead8259a04: Pull complete 
3790aef225b9: Pull complete 
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@zyl-server ~]# 

4.2、查看

python 复制代码
[root@zyl-server ~]# docker images

4.3、运行 registry

python 复制代码
docker run -d  -p 5000:5000 -v /zyl/myregistry/:/tmp/registry  --privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器数据卷映射,方便宿主机联调

[root@zyl-server ~]# docker run -d  -p 5000:5000 -v /zyl/myregistry/:/tmp/registry  --privileged=true registry
4c3babd80e86c8e2b21f4ad1dffeec5ca42270e5d467bed2a93839e323bcd5c6
[root@zyl-server ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED             STATUS             PORTS                                       NAMES
4c3babd80e86   registry   "/entrypoint.sh /etc..."   10 seconds ago      Up 8 seconds       0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   amazing_rhodes
780530eaf656   centos     "/bin/bash"              About an hour ago   Up About an hour                                               wizardly_dhawan
95420eae9ad9   nginx      "/docker-entrypoint...."   About an hour ago   Up About an hour   80/tcp                                      great_pasteur
[root@zyl-server ~]# 

浏览器访问http://IP:5000/v2,显示"{}" 说明registry运行正常。

4.4、测试上传镜像到Registry

1、提交centos容器副本成为新的镜像,Tag----》1.2 。

python 复制代码
[root@zyl-server ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED             STATUS             PORTS                                       NAMES
4c3babd80e86   registry   "/entrypoint.sh /etc..."   5 minutes ago       Up 5 minutes       0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   amazing_rhodes
780530eaf656   centos     "/bin/bash"              About an hour ago   Up About an hour                                               wizardly_dhawan
95420eae9ad9   nginx      "/docker-entrypoint...."   2 hours ago         Up 2 hours         80/tcp                                      great_pasteur
[root@zyl-server ~]# docker commit -m="centos" -a="zyl" 780530eaf656 centos:1.2
sha256:d0a52e21dd65f98f7cd106d996e97e1b3e709431e4bb80cd2e3599953fa95fe6
[root@zyl-server ~]# docker images
REPOSITORY                                            TAG       IMAGE ID       CREATED          SIZE
centos                                                1.2       d0a52e21dd65   20 seconds ago   231MB
nginx                                                 latest    605c77e624dd   19 months ago    141MB
registry                                              latest    b8604a3fe854   21 months ago    26.2MB
hello-world                                           latest    feb5d9fea6a5   23 months ago    13.3kB
centos                                                latest    5d0da3dc9764   23 months ago    231MB
registry.cn-hangzhou.aliyuncs.com/zhaohaibao/centos   7.9       5d0da3dc9764   23 months ago    231MB
[root@zyl-server ~]# 

2、查看当前私有仓库镜像(空)

python 复制代码
[root@zyl-server ~]# curl -XGET http://192.168.234.10:5000/v2/_catalog
{"repositories":[]}
[root@zyl-server ~]# 

3、将主机的registry镜像命名为符合仓库要求的格式。registry_url:port/ImageName:tag

python 复制代码
docker tag centos:1.2 192.168.234.10:5000/centos:1.2

4、上传centos镜像到Registry仓库

python 复制代码
docker push 192.168.234.10:5000/centos:1.2

push失败:

python 复制代码
[root@zyl-server ~]# docker push 192.168.234.10:5000/centos:1.2
The push refers to repository [192.168.234.10:5000/centos]
Get "https://192.168.234.10:5000/v2/": http: server gave HTTP response to HTTPS client
[root@zyl-server ~]# 

解决:

python 复制代码
这是因为我们启动的registry服务不是安全可信赖的。这时需要修改客户端docker的配置文件vi /etc/docker/daemon.json,



添加下面的内容(insecure-registries服务地址):

{
""registry-mirrors": ["https://XXX.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.234.10:5000"]
}
   "registry-mirrors": ["https://XXX.mirror.aliyuncs.com"] 是阿里云代理的Registry Hub仓库的地址,可以加快国内访问Registry Hub仓库的速度。
   
修改好之后需要重启Docker服务才能生效,

执行命令:systemctl restart docker ,再push即可.

5、再次推送

python 复制代码
[root@zyl-server ~]# docker push 192.168.234.10:5000/centos:1.2
The push refers to repository [192.168.234.10:5000/centos]
Get "http://192.168.234.10:5000/v2/": dial tcp 192.168.234.10:5000: connect: connection refused
[root@zyl-server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@zyl-server ~]# 

报错:connect: connection refused

解决:docker ps 查看发现没有运行的镜像实例,重新运行 registry。

python 复制代码
docker run -d  -p 5000:5000 -v /zyl/myregistry/:/tmp/registry  --privileged=true registry

### push

docker push 192.168.234.10:5000/centos:1.2

6、检查--查看当前私有仓库镜像

python 复制代码
[root@zyl-server ~]# curl -XGET http://192.168.234.10:5000/v2/_catalog
{"repositories":["centos"]}
[root@zyl-server ~]# 



至此,我们的Registry私有仓库搭建完成,如果在今后中要使用,可以使用命令:

python 复制代码
docker pull 192.168.234.10:5000/centos:1.2

|---------------------------|
| 💖The End💖点点关注,收藏不迷路💖 |

相关推荐
吴声子夜歌10 分钟前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
梦想不只是梦与想10 分钟前
Docker 常用命令
docker
wzq11_66618 分钟前
Kubernetes集群——Pod篇
云原生·容器·kubernetes
资深技术分享员24 分钟前
Geejing WebBuilder 数据库连接配置与在线 SQL 工具,运维的左右手
运维·数据库·sql·低代码
高山有多高28 分钟前
【Linux笔记】UpdSocket
linux·运维·笔记
皓月盈江37 分钟前
Linux系统grep、sed 、awk介绍下,使用方法及区别?
linux·运维·服务器·sed·grep·awk
云栖梦泽1 小时前
Linux内存管理
linux·运维·服务器
吴声子夜歌1 小时前
Nginx应用与运维——Nginx Web服务应用实战(静态文件服务器的搭建)
运维·前端·nginx
海宇服务1 小时前
零信任架构实战:基于海宇身份证OCR构建自动化自助终端核验网关
运维·人工智能·架构·自动化
ken22322 小时前
ubuntu 24.04, audacity 4 AppImage 加载 libavdevice.so.62 /.61 /.63 失败:依赖缺失?
linux·运维·ubuntu