背景
在进行本地docker hub使用过程中,docker hub使用http 协议提供服务。但docker默认使用https协议进行镜像拉取,使用过程中会出现报错,如下:
上述两个问题均为docker拉取镜像使用的https,而提供镜像的hub 是http导致。
修改方式
docker 拉取镜像
方法一
1、添加或修改/etc/docker/daemon.json
文件,添加insecure-registries
字段,字段内添加hub服务地址。添加后文件内容如下:
{
"registry-mirrors":[
"https://docker.mirrors.ustc.edu.cn",
"https://docker.awsl9527.cn"],
"insecure-registries" : ["register-mirror-ip:port"]
}
2、重启docker服务
$ systemctl restart docker
方法二
1、查看当前系统docker服务启动配置,以centos系统为例:
$ cat /usr/lib/systemd/system/docker.service
...
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd \
--host=fd:// \
--exec-opt native.cgroupdriver=systemd \
$OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
...
2、在文件中增加dockerd的启动参数--insecure-registry
,参数后为hub 服务地址。
$ cat /usr/lib/systemd/system/docker.service
...
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd \
--host=fd:// \
--exec-opt native.cgroupdriver=systemd \
--insecure-registry register-mirror-ip:port \
$OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
...
3、重启docker服务
$ systemctl restart docker
buildx 构建镜像
在使用docker buildx拉取http镜像时,除了需要配置docker,buildx的配置也需要修改。
1、增加或修改配置文件buildkitd.toml
,添加如下内容:
...
[registry."register-mirror-ip:port"]
http = true
...
buildkitd详细配置文件可参考 buildkitd
2、在创建buildx的节点时,使用--config
参数指定配置文件:
$ docker buildx create --use --name name --driver-opt image=moby/buildkit:buildx-stable-1 --config ./buildkitd.toml
podman 拉取镜像
1、修改container配置文件/etc/containers/registries.conf
,将要访问的服务设置为insecure状态:
[[registry]]
prefix = ""
location = "register-mirror-ip:port"
insecure = true