解决Docker Hub被封的问题
问题描述:在中国大陆访问 Docker Hub 可能受到网络限制或政策限制,因为 Docker Hub 位于国外。
之前,还可以使用阿里云、腾讯云等提供的镜像加速器。但是,现在即使使用这些镜像加速器也无法通过docker pull命令拉取Docker镜像了。
如下所示:
[root@localhost ~]# docker pull mysql:8.0.43
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 199.59.149.205:443: i/o timeout
解决措施:
在镜像前,增加前缀
m.daocloud.io/docker.io/
或
docker.m.daocloud.io/
如下所示:
[root@localhost ~]# docker pull m.daocloud.io/docker.io/mysql:8.0.43
8.0.43: Pulling from mysql
806f49275cbf: Pull complete
12e135f0f080: Pull complete
bb0089c87520: Pull complete
59bdefbbef78: Pull complete
6145eb690748: Pull complete
46c5bb883eca: Pull complete
1b25d67bc0be: Pull complete
729dd3a03ada: Pull complete
1a66f49d571a: Pull complete
7faf9da2445b: Pull complete
98c1a0a82ce7: Pull complete
Digest: sha256:4a8843ef1c30d30937dea3cba5b72665bae17051af7a72b1651f3b7681f76aee
Status: Downloaded newer image for m.daocloud.io/docker.io/mysql:8.0.43
m.daocloud.io/docker.io/mysql:8.0.43
等待镜像下载完成后,再使用docker tag命令修改镜像名称。如下所示:
##镜像下载后,使用docker images查看镜像列表
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
m.daocloud.io/docker.io/mysql 8.0.43 94753e67a0a9 2 weeks ago 780MB##使用docker tag修改镜像名称
[root@localhost ~]# docker tag m.daocloud.io/docker.io/mysql:8.0.43 mysql:8.0.43##修改镜像名称后,使用docker images查看镜像列表
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.43 94753e67a0a9 2 weeks ago 780MB
m.daocloud.io/docker.io/mysql 8.0.43 94753e67a0a9 2 weeks ago 780MB##删除带前缀的镜像
[root@localhost ~]# docker image rm m.daocloud.io/docker.io/mysql:8.0.43
Untagged: m.daocloud.io/docker.io/mysql:8.0.43
Untagged: m.daocloud.io/docker.io/mysql@sha256:4a8843ef1c30d30937dea3cba5b72665bae17051af7a72b1651f3b7681f76aee##删除后,使用docker images查看镜像列表
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.43 94753e67a0a9 2 weeks ago 780MB##使用镜像,启动容器
[root@localhost docker]# mkdir -p /data/docker/mysql/data
[root@localhost docker]# mkdir -p /data/docker/mysql/conf
[root@localhost docker]# mkdir -p /data/docker/mysql/logs[root@localhost docker]# docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_HOST='%' -e MYSQL_ROOT_PASSWORD=password -v /etc/localtime:/etc/localtime -v /data/docker/mysql/conf/:/etc/mysql/conf.d/ -v /data/docker/mysql/logs:/var/log/mysql -v /data/docker/mysql/data:/var/lib/mysql --restart=always -d mysql:8.0.43