一、二进制安装docker

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

二进制包下载: 地址

1.下载二进制包

cd /opt
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.8.tgz

2.解压并移动到/usr/bin/目录

tar xvf docker-20.10.8.tgz
cp docker/* /usr/bin/

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=processRestart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.targetEOF

启动 docker

systemctl daemon-reload
systemctl start docker
systemctl enable docker

4.安装docker-compose

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

# 下载
wget https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64mv docker-compose-linux-x86_64 /usr/bin/docker-composechmod +x /usr/bin/docker-compose

5、以非 root 用户身份管理

创建用户并设置密码

useradd dockeruserpasswd dockeruser

加入docker组

usermod -aG docker dockeruser

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

#登录 dockeruser用户
su - dockeruser# newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组
newgrp docker

二、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

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、修改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

修改方式2:

修改 /etc/docker/daemon.json

{"data-root": "/new/path"
}

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

3、配置私有镜像仓库

修改 /etc/docker/daemon.json

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

4、允许不安全的仓库连接

docker默认请求https仓库地址

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

修改 /etc/docker/daemon.json

{"insecure-registries": [ "http://10.10.10.10:8082" ]
}

docker安装配置相关推荐

  1. Docker 安装配置Crowd

    环景: ubuntu 16.04 docker Version: 20.10.7 crowd3.3.2 问题描述: Docker 安装配置Crowd 解决方案: 1.创建docker-compose. ...

  2. Docker安装配置Jenkins教程

    Docker安装配置Jenkins教程 前言 准备工作 一.安装Docker 1.安装 2.查看版本信息 二.配置Docker 镜像加速 1.编辑docker配置文件 2.配置镜像地址,编辑文件内容为 ...

  3. docker安装配置分布式elasticsearch、kibana、head、cerebro

    有三个节点分别是node-master(192.168.152.45),node-data1(192.168.152.39), node-data2(192.168.152.29) 在每一太节点上,使 ...

  4. 【Ubuntu-Docker】ubuntu16.04(18.04)Docker安装配置与卸载

    1. 查看是否已经安装Docker 打开一个terminal控制台,直行 sudo docker run hello-world 命令,若控制台有以下信息输出,则表示docker已经安装了 Hello ...

  5. docker安装配置gitlab详细过程

    1.方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2.方法二 如果服务器网路不好或者pull不下来镜像,只能在其它网路比较好的机器上pull下来镜像, ...

  6. Docker安装配置教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1 Docker要求: cd /etc/sysconfig/network-scripts/ ls ifcfg* vi if ...

  7. docker安装+配置镜像+命令操作+数据卷+网络管理+DockerFile+镜像服务+项目部署+[高级使用]

    文章目录 Docker基础 一.Docker介绍 1. 什么是虚拟化 2. 什么是Docker 3. 容器与虚拟机比较 4. Docker优势 5. Docker架构 [1]镜像服务(`Image`) ...

  8. 【Vegas原创】Gitbook的docker安装配置

    1.创建目录:/gitbook/gitbook 和 /gitbook/html 2. /gitbook/gitbook目录下,touch新建README.md 3. docker安装gitbook d ...

  9. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  10. CentOS Docker安装配置部署Golang web helloworld

    目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...

最新文章

  1. vim ctags使用方法
  2. Dalvik VM进程系统(二):分析Zygote的启动过程
  3. AS3.0函数定义的方法
  4. PyYAML——yaml.load()警告【YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated】解决方案
  5. linux c之STDIN_FILENO的作用及与stdin的区别
  6. iptables的基本概念及数据报文在iptables中的流传过程
  7. [原]批量生成AWR报告
  8. linux stubs 32.h,解决 error: gnu/stubs-32.h: No such file or directory
  9. sql数据库可以创建同义词_如何使用同义词简化SQL Server数据库对象的使用
  10. matlab字号单位是磅吗,Office软件中字体“号”与“磅”的关系
  11. 警告: A docBase inside the host appBase has been specified, and will be ignore
  12. 算法艺术(一):Hello world
  13. Android拉起拼多多
  14. 传统研发团队的敏捷转型实践之路
  15. 经纬度手动简单调整整位置
  16. 二进制数据文件中的字符串替换的实现(C++)
  17. 翻译工作的重要性_为什么翻译平台很重要
  18. 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“itJava练习之翁恺MOOC——第六周
  19. ReentrantLock源码分析
  20. 如何下载在线玩的游戏_在线下载游戏和玩游戏的最佳网站

热门文章

  1. python文字识别时、当文字不清晰时怎么处理_Python图像处理之图片文字识别功能(OCR)...
  2. Retrofit2封装之路(请求参数加密解密)(二)
  3. 大学物理(下)知识点总结
  4. 艾美捷Cas9 ELISA检测试剂盒的制备和文献参考
  5. swust oj 题解#509 寝室扫地问题
  6. 基于nsga2的多目标柔性车间调度问题matlab
  7. Qt扫盲-QSS语法概述
  8. 【元胞自动机】元胞自动机城市规划【含Matlab源码 125期】
  9. 和平分手?你根本不知道吴恩达在百度经历了什么
  10. 解决CDH 安装Kafka服务中的各种问题