获取docker的镜像的方法

背景

需要下载一个mysql的docker的镜像,但是遇到了问题,这里把相关的方法记录下

问题

1
2
3
[root@lab103 data]# docker pull mysql:8.0
Trying to pull repository docker.io/library/mysql ...
Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

直接下载的时候无法下载,这个需要给这个做个代理,但是机器可能是内网的机器,那么我们可以下载下来

处理方法

我的mac本身可以直接联通上面的外网地址,那么可以通过下载一个docker客户端,然后给客户端设置代理,然后下载,把镜像保存好即可

具体操作

下载docker桌面

1
https://www.docker.com/products/docker-desktop/

在官方下载即可

配置代理

这个填写自己本地的代理地址即可

上面配置代理后,就可以下载了

搜索下载的镜像

这个地方下载的是arm64架构的,我们需要x86的就需要命令行下载

1
docker pull --platform amd64 mysql:8.0

查询导出

1
2
3
4
zphj1987@zphj1987deMacBook-Pro docker % docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0 f5da8fc4b539 2 months ago 573MB
zphj1987@zphj1987deMacBook-Pro docker % docker save f5da8fc4b539 > mysql8.0.tar

导入

传输到需要用的机器上面

1
2
3
4
5
6
7
8
9
[root@lab103 data]# docker  load -i  mysql8.0.tar
sha256:d0e2993cf4498a437735cd6b74253e1e541da55198240567a37570d51ee4599a
[root@lab103 data]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d0e2993cf449 5 seconds ago 607 MB
[root@lab103 data]# docker tag d0e2993cf449 mysql:8.0
[root@lab103 data]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0 d0e2993cf449 About a minute ago 607 MB

上面的就完成了导入和重命名的操作

注意,上面的导出命令用save,导入命令使用load,这个会保留image里面的执行命令,也就是跟pull的是相同的
如果用export和import,这个启动的时候会有问题,提示命令找不到

1
2
3
[root@lab103 backup]# docker run -p 3307:3306 --name mysql8 -v /data/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
/usr/bin/docker-current: Error response from daemon: No command specified.
See '/usr/bin/docker-current run --help'.

备注

查询容器启动的执行命令

1
docker ps -a --no-trunc

总结

上面的操作就完成了下载和导入的操作