当前位置:   article > 正文

docker安装配置_docker.service配置文件

docker.service配置文件

一、二进制安装docker

官方文档:Install Docker Engine from binaries | Docker Documentation

二进制包下载: 地址

1.下载二进制包
cd /opt
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz
  • 1
  • 2
2.解压并移动到/usr/bin/目录
tar xvf docker-20.10.24.tgz
cp docker/* /usr/bin/
  • 1
  • 2
3.将docker注册为service
cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# 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 --selinux-enabled=false -H unix://
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process

Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

EOF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

启动 docker

systemctl daemon-reload
systemctl start docker
systemctl enable docker
  • 1
  • 2
  • 3
4.安装docker-compose

下载地址 : Releases · docker/compose · GitHub

# 下载
wget https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64

mv docker-compose-linux-x86_64 /usr/bin/docker-compose

chmod +x /usr/bin/docker-compose

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
5、以非 root 用户身份管理

创建用户并设置密码

useradd dockeruser

passwd dockeruser
  • 1
  • 2
  • 3

加入docker组

usermod -aG docker dockeruser
  • 1

如果权限还是不够,切换用户的有效组

#登录 dockeruser用户
su - dockeruser

# newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组
newgrp docker
  • 1
  • 2
  • 3
  • 4
  • 5

二、docker配置参数

docker.service文件内容

/usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin

## docker启动执行命令
ExecStart=/usr/bin/dockerd-current 
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current 
          --default-runtime=docker-runc 
          --exec-opt native.cgroupdriver=systemd 
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current 
          $OPTIONS 
          $DOCKER_STORAGE_OPTIONS 
          $DOCKER_NETWORK_OPTIONS 
          $ADD_REGISTRY 
          $BLOCK_REGISTRY 
          $INSECURE_REGISTRY
      $REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
KillMode=process

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
ExecStart中启动参数

ExecStart=/usr/bin/dockerd -H fd://

参数介绍
-b, --bridge=“”桥接一个系统上的网桥设备到 Docker 容器里,当使用 none 可以停用容器里的网络
–bip=“”使用 CIDR 地址来设定网络桥的 IP。此参数和 -b 不能一起使用
-D, --debug=false开启Debug模式。例如:docker -d -D
-d, --daemon=false开启Daemon模式。
–dns=[]设置容器使用DNS服务器。例如: docker -d --dns 8.8.8.8
-dns-search=[]设置容器使用指定的DNS搜索域名。如: docker -d --dns-search example.com
–exec-driver=“native”设置容器使用指定的运行时驱动。如:docker -d -e lxc
-G, --group=“docker”在后台运行模式下,赋予指定的Group到相应的unix socket上。注意,当此参数 --group 赋予空字符串时,将去除组信息
–data-root=“/var/lib/docker”设置Docker运行时根目录
-H, --host=[]设置后台模式下指定socket绑定,可以绑定一个或多个 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。如:$ docker -H tcp://0.0.0.0:2375 ps 或者$ export DOCKER_HOST=“tcp://0.0.0.0:2375”$ docker ps
-icc=true设置启用内联容器的通信。
–ip=“0.0.0.0”设置容器绑定IP时使用的默认IP地址
–ip-forward=true设置启动容器的 net.ipv4.ip_forward
–iptables=true设置启动Docker容器自定义的iptable规则
-p, --pidfile=“/var/run/docker.pid”设置后台进程PID文件路径。
-r, --restart=true设置重启之前运行中的容器
-s, --storage-driver=“”设置容器运行时使用指定的存储驱动,如,指定使用devicemapper,可以这样:docker -d -s devicemapper
–selinux-enabled=false设置启用selinux支持
–storage-opt=[]设置存储驱动的参数
–config-file=“”docker引擎配置文件,默认为/etc/docker/daemon.json
Docker Engine 配置文件

/etc/docker/daemon.json

用作docker服务中 ExecStart 后参数的补充

{
	# 注意此为json语法,有的是数据类型,有的是数组类型
	# 方括号为数组类型,数据由逗号分隔,数据在名称/值对中
	
    "authorization-plugins": [],//访问授权插件
    "data-root": "",//docker数据持久化存储的根目录
    "dns": [],//DNS服务器
    "dns-opts": [],//DNS配置选项,如端口等
    "dns-search": [],//DNS搜索域名
    "exec-opts": [],//执行选项
    "exec-root": "",//执行状态的文件的根目录
    "experimental": false,//是否开启试验性特性
    
    "storage-driver": "",//存储驱动器
    "storage-opts": [],//存储选项
    
    "labels": [],//键值对式标记docker元数据
    "live-restore": true,//dockerd挂掉是否保活容器(避免了docker服务异常而造成容器退出)
    
    "log-driver": "",//容器日志的驱动器
    "log-opts": {},//容器日志的选项
    
    "mtu": 0,//设置容器网络MTU(最大传输单元)
    "pidfile": "",//daemon PID文件的位置
    "cluster-store": "",//集群存储系统的URL
    "cluster-store-opts": {},//配置集群存储
    "cluster-advertise": "",//对外的地址名称
    "max-concurrent-downloads": 3,//设置每个pull进程的最大并发
    "max-concurrent-uploads": 5,//设置每个push进程的最大并发
    "default-shm-size": "64M",//设置默认共享内存的大小
    "shutdown-timeout": 15,//设置关闭的超时时限(who?)
    "debug": true,//开启调试模式
    
    "hosts": [],//监听地址(?)
    "log-level": "",//日志级别
    
    "tls": true,//开启传输层安全协议TLS
    "tlsverify": true,//开启输层安全协议并验证远程地址
    "tlscacert": "",//CA签名文件路径
    "tlscert": "",//TLS证书文件路径
    "tlskey": "",//TLS密钥文件路径
    "swarm-default-advertise-addr": "",//swarm对外地址
    "api-cors-header": "",//设置CORS(跨域资源共享-Cross-origin resource sharing)头
    "selinux-enabled": false,//开启selinux(用户、进程、应用、文件的强制访问控制)
    "userns-remap": "",//给用户命名空间设置 用户/组
    "group": "",//docker所在组
    "cgroup-parent": "",//设置所有容器的cgroup的父类(?)
    "default-ulimits": {},//设置所有容器的ulimit
    "init": false,//容器执行初始化,来转发信号或控制(reap)进程
    "init-path": "/usr/libexec/docker-init",//docker-init文件的路径
    "ipv6": false,//开启IPV6网络
    "iptables": false,//开启防火墙规则
    "ip-forward": false,//开启net.ipv4.ip_forward
    "ip-masq": false,//开启ip掩蔽(IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术)
    "userland-proxy": false,//用户空间代理
    "userland-proxy-path": "/usr/libexec/docker-proxy",//用户空间代理路径
    "ip": "0.0.0.0",//默认IP
    
    "bridge": "",//将容器依附(attach)到桥接网络上的桥标识
    "bip": "",//指定桥接ip
    
    "fixed-cidr": "",//(ipv4)子网划分,即限制ip地址分配范围,用以控制容器所属网段实现容器间(同一主机或不同主机间)的网络访问
    "fixed-cidr-v6": "",//(ipv6)子网划分
    "default-gateway": "",//默认网关
    "default-gateway-v6": "",//默认ipv6网关
    "icc": false,//容器间通信
    "raw-logs": false,//原始日志(无颜色、全时间戳)
    "allow-nondistributable-artifacts": [],//不对外分发的产品提交的registry仓库
    
    "registry-mirrors": [],//registry仓库镜像
    "insecure-registries": [],//非https的registry地址
        
    "seccomp-profile": "",//seccomp配置文件
    "no-new-privileges": false,//禁止新优先级(??)
    "default-runtime": "runc",//OCI联盟(The Open Container Initiative)默认运行时环境
    "oom-score-adjust": -500,//内存溢出被杀死的优先级(-1000~1000)
    "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],//对外公布的资源节点
    "runtimes": {//运行时
        "cc-runtime": {
            "path": "/usr/bin/cc-runtime"
        },
        "custom": {
            "path": "/usr/local/bin/my-runc-replacement",
            "runtimeArgs": [
                "--debug"
            ]
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

三、常用配置

1、修改docker运行时根目录

Docker的默认存放位置是在 /var/lib/docker

修改方式1:

修改 docker.service

# 通过 --data-root 参数来设置运行时目录
# 找到 ExecStart=/usr/bin/dockerd 行,在其后添加
# 修改后需要重载配置并重启服务
# 会自动生成/new/path 目录(0700),并在该目录下创建 docker 相关文件
# 重启后原来的镜像和容器都找不到了,因为路径改了

ExecStart=/usr/bin/dockerd --data-root=/new/path

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

修改方式2:

修改 /etc/docker/daemon.json

{
    "data-root": "/new/path"
}
  • 1
  • 2
  • 3
2、开启远程API访问端口

修改 docker.service

# 在 ExecStart 后添加-H 0.0.0.0:2375,端口可以随意指定
# 修改后重启服务
# 访问http://127.0.0.1:2375/info进行验证

ExecStart=/usr/bin/dockerd -H fd:// -H 0.0.0.0:2375
  • 1
  • 2
  • 3
  • 4
  • 5
3、配置私有镜像仓库

修改 /etc/docker/daemon.json

{
	"registry-mirrors": ["my.custom-mirror.com",
	"10.10.10.10:8082"]
}

  • 1
  • 2
  • 3
  • 4
  • 5
4、允许不安全的仓库连接

docker默认请求https仓库地址

要访问非https的registry地址 ,需要配置 insecure-registries

修改 /etc/docker/daemon.json

{
	"insecure-registries": [ "http://10.10.10.10:8082" ]
}
  • 1
  • 2
  • 3
5. 配置国内镜像源
cat >  /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",  # 最好用
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}
EOF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/73983
推荐阅读
相关标签
  

闽ICP备14008679号