Docker 二进制包官方下载
x86 架构
代码语言:javascript复制https://download.docker.com/linux/static/stable/x86_64/
aarch 架构
代码语言:javascript复制https://download.docker.com/linux/static/stable/aarch64/
下载安装Docker
1、下载 docker二进制包文件
代码语言:javascript复制wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz
2、解压docker压缩包
代码语言:javascript复制tar -zxvf docker-20.10.7.tgz
3、移动二进制文件到 /usr/bin 目录
代码语言:javascript复制mv docker/* /usr/bin/
4、创建docker 组
代码语言:javascript复制groupadd docker
5、启动dockerd服务
代码语言:javascript复制 ./dockerd
添加 systemd
1、编辑docker的系统服务文件
代码语言:javascript复制vi /usr/lib/systemd/system/docker.service
2、添加服务启动配置
代码语言:javascript复制[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
3、添加docker.service文件执行权限
代码语言:javascript复制chmod x /usr/lib/systemd/system/docker.service
systemctl daemon-reload
4、编辑daemon.json
代码语言:javascript复制vi /etc/docker/daemon.json
配置国内镜像加速器,添加以下内容
代码语言:javascript复制{
"registry-mirrors": ["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
5、启动docker
代码语言:javascript复制systemctl start docker
6、开机自启动
代码语言:javascript复制systemctl enable docker
7、查看docker 版本
代码语言:javascript复制docker -v
docker网络
docker服务部署会自动创建3种网络:bridge、host、none。
docker在启动时会开启一个Linux bridge(虚拟网桥设备)docker0,默认的地址为172.17.0.1/16,容器启动后都会被桥接到docker0上,并自动分配到一个ip地址。
bridge
bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机是不可见的,但容器通过宿主机的NAT规则后可以访问外网。容器的ip地址以单调递增的方式进行分配,如果容器禁用,其ip地址会被释放,可以分配给其他容器使用。
host
host网络模式需要在容器创建时指定 --network=host 。host 模式是 bridge 桥接模式很好的补充。采用 host 模式的 Docker Container,可以直接使用宿主机的 IP地址与外界进行通信,若宿主机的 eth0 是一个公有 IP,那么容器也拥有这个公有IP。同时容器内服务的端口也可以使用宿主机的端口,无需额外进行 NAT 转换。host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。
none
none模式是指禁用网络功能,只有lo接口,在容器创建时使用–network=none指定。