前面一直是用的1.8.2版本的Docker,最近集群中增加了几个节点装了1.9.1版本,结果在配置使用“--insecure-registry"方式不通过key直接登录local registry时,发现1.9.1版本中没有了"/etc/sysconfig/docker"文件,也没有”/etc/default/docker"这个文件。
后来参考官方文档通过配置systemd service文件的方式解决了这个问题。关于官方文档中介绍的更多通过systemd配置内容,请参考官方文档“Control and Configure Docker with systemd”。本文重点通过介绍配置--insecure-registry来介绍如何通过systemd配置Docker。
通常情况下,我们有3种方式可以配置etcd中的service。以docker为例,1)在目录/etc/systemd/system/docker.service.d目录下放systemd drop-in文件;2)通过修改/etc/systemd/system/docker.service文件;3)通过修改/lib/systemd/system/docker.service文件。如果2)和3)的文件同时存在,2)将覆盖3)。
默认情况下1)和2)都不存在,我们此处也用不着太复杂的去使用选项1)和2),直接修改3)就可以解决问题。
版本1.8.2的docker.service文件内容如下。可以看到“/etc/sysconfig/docker" 文件是如何被引用的,以及该文件中定义的”INSECURE_REGISTRY"变量是如何生效的。首先,在“/etc/sycconfig/docker" 中定义变量;然后通过“EnvironmentFile” 引用“/etc/sysconfig/docker"文件;最后在”ExecStart“启动daemon时,将”INSECURE_REGISTRY"变量作为daemon选项执行。
[Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target Wants=docker-storage-setup.service [Service] Type=notify EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network Environment=GOTRACEBACK=crash ExecStart=/usr/bin/docker daemon $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $ADD_REGISTRY \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity MountFlags=slave TimeoutStartSec=1min Restart=on-failure [Install] WantedBy=multi-user.target
版本1.9.1的docker.service文件内容如下所示。可以看到一个很主要的区别就是1.9.1中缺少了对EnvironmentFile的引用,以及在‘ExecStart’启动docker daemon时对环境变量的使用。
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify ExecStart=/usr/bin/docker daemon -H fd:// MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity
1)参考1.8.2的方式,也为了保持与1.8.2的向上兼容。首先在创建"/etc/sysconfig/docker"文件,并在文件加入如下行:
<span style="font-size:14px;">INSECURE_REGISTRY='--insecure-registry=https://xingwangc.docker.rg --insecure-registry=xingwangc.docker.rg'</span>
注:上面变量定义中,第一个“--insecure-registry=https://xingwangc.docker.rg”用于通过用户名/密码登陆registry,第二个“--insecure-registry=xingwangc.docker.rg"用于向registry push image和从registry pull image。第二个定义中没有指明“https”协议,如果加了“https”将造成无法从registry pull/push。理解了这个过程之后,就可以定义任何变量名了。
2)修改/lib/systemd/system/docker,增加EnvironmentFile引用/etc/sysconfig/docker文件,并在ExecStart中增加对环境变量的引用。
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket Requires=docker.socket [Service] Type=notify EnvironmentFile=-/etc/sysconfig/docker ExecStart=/usr/bin/docker daemon -H fd:// $INSECURE_REGISTRY MountFlags=slave LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity [Install] WantedBy=multi-user.target
3)在刷新改动前,先查看下是否使用了EnvironmentFile,默认的是没有引用EnvironmentFile的。使用命令“systemctl show”
sudo systemctl show docker | grep EnvironmentFile EnvironmentFile=-
4)刷新改动,并重启docker,并检查EnvironmentFile
sudo systemctl daemon-reload sudo systemctl restart docker
5)验证登陆registry,pull image
参考链接:
Control and Configure Docker with Systemd
热门文章
- 动物疫苗经营许可证在哪里办(动物疫苗经营许可证在哪里办理)
- 动物园宠物医院电话号码多少啊(动物医院的电话)
- 3月8日 - 最高速度21M/S,2025年Nekobox每天更新免费节点订阅地址
- 【内江宠物领养|内江宠物赠送】(内江宠物狗)
- 4月5日 - 最高速度19.9M/S,2025年Nekobox每天更新免费节点订阅地址
- 4月8日 - 最高速度19.1M/S,2025年Nekobox每天更新免费节点订阅地址
- 动物疫苗行业排名(动物疫苗上市公司排名)
- 宠物医院好评模板50字内容怎么写(宠物医院优质好评500字)
- 4月29日 - 最高速度21.6M/S,2025年Nekobox每天更新免费节点订阅地址
- 深圳市领养宠物中心电话 深圳市领养宠物中心电话号码