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💖点点关注,收藏不迷路💖 |

相关推荐
星恒讯工业路由器14 分钟前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨19 分钟前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化
techdashen1 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿1 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
珠海西格电力1 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
木雷坞2 小时前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
wj3055853782 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
人生匆匆2 小时前
通过nginx解决跨域问题
运维·nginx
原来是猿2 小时前
【Socket编程预备知识】
linux·运维·服务器·网络
吴爃3 小时前
Spring Boot 项目在 K8S 中的打包、部署与运维发布实践
运维·spring boot·kubernetes