通过systemd配置Docker--systemd Service相关目录
2016-08-16 15:54
337 查看
后来参考官方文档通过配置systemd service文件的方式解决了这个问题。关于官方文档中介绍的更多通过systemd配置内容,请参考官方文档“Control
and Configure Docker with systemd”。本文重点通过介绍配置--insecure-registry来介绍如何通过systemd配置Docker。
1. systemd Service相关目录
通常情况下,我们有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)就可以解决问题。
2. Version 1.8.2 到 Version 1.9.1 docker.service文件的变化
版本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
3. 解决方案
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”
<
a811
pre class="plain" style="margin-top:10px;margin-bottom:0px;padding:0px;color:rgb(51,51,51);font-size:14px;line-height:20px;background-color:rgb(255,255,255);">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
相关文章推荐
- 通过systemd配置Docker
- docker 目录配置相关
- 通过systemd配置Docker
- 通过systemd配置Docker
- Docker 安装 Redis 方法一、通过 Dockerfile 构建 创建Dockerfile 首先,创建目录redis,用于存放后面的相关东西。 runoob@runoob:~$ mkdir -
- 实现通过ip地址访问远端服务器下tomcat指定目录下项目的相关配置
- 通过Net Manager 配置Oracle 11g本地监听服务(listener service)
- 通过将目录服务器配置为拒绝不请求签名(完整性验证)的 SASL (协商式、Kerberos、NTLM 或摘要式) LDAP 绑定和在明 文(非 SSL/TLS 加密的)连接上执行的 LDAP 简单绑定
- CentOS6.3下配置vsftpd,nginx通过http协议列出目录
- 【备份】信工apache中有关http.conf的虚拟目录相关配置参考
- python pip通过本地目录安装相关程序包
- spring 通过配置向quartz 注入service
- systemd下通过tmpfiles.d开机自动创建目录
- linux系统中用户(user)和用户组(group)相关的配置文件、命令或目录;
- [转]通过Net Manager 配置Oracle 11g本地监听服务(listener service)
- spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置
- Spring配置事务管理,service端通过@Transactional注解
- 通过minicom传送文件的相关配置及使用方法
- 移动佣金分类项及其相关报表通过配置表进行管理的使用说明
- spring 通过配置向quartz 注入service