RHEL8安装docker-ce
RHEL8安装docker-ce
rhel8安装docker-ce
Docker解决了什么问题
系统版本声明: RHEL8
Docker解决了:“程序在我这跑的好好的,在你那怎么就不能运行了呢!”
解决了环境一致性的问题
.
容器就是将一套运行环境打包成一个镜像.实现开箱即用.
容器不是虚拟机,与宿主机共享一个内核.
安装DOcker
参考文档: https://help.aliyun.com/document_detail/264695.html#section-m0l-g22-ska
关闭防火墙和SELinux
# 关闭防火墙和SELinux
systemctl disable --now firewalld
## 清空现有的所有iptables策略
iptables -F
# 禁用邮件服务
systemctl disable --now postfix
# 禁用selinux
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
# 立即禁用临时SElinux
setenforce 0
配置宿主机网卡转发
参考: https://feisky.gitbooks.io/sdn/content/linux/params.html
加载br_netfilter内核
br_netfilte
r内核模块,用于在网络桥接设备
上启用网络过滤
功能
# 加载br_netfilter内核
modprobe br_netfilter
# 开机自动加载netfilter网桥过滤模块
cat <<EOF | sudo tee /etc/modules-load.d/netfilter.conf
br_netfilter
EOF
# 查看模块是否加载
lsmod br_netfilter
ls /proc/sys/net/bridge
bridge-nf-call-arptables bridge-nf-filter-pppoe-tagged
bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged
bridge-nf-call-iptables bridge-nf-pass-vlan-input-dev
开启网卡转发功能
vim /etc/sysctl.d/k8s.conf
# 开启ipv4转发功能
net.ipv4.ip_forward = 1
# 启用 Linux 内核对所有网络接口的 Proxy ARP 功能
net.ipv4.conf.all.proxy_arp = 1
# 在ip6tables链中过滤IPv6包
net.bridge.bridge-nf-call-ip6tables = 1
# 在iptables链中过滤IPv4包
net.bridge.bridge-nf-call-iptables = 1
# netfilter防火墙内核模块最大跟踪连接数
net.netfilter.nf_conntrack_max=2310720
# 禁用用swap
vm.swappiness = 0
# 关闭IPV6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
生效sysctl配置
# 使内核配置生效
sysctl -p
卸载旧版本Docker-CE(如果有)
https://docs.docker.com/engine/install/centos/
# 卸载旧版本Docker-CE
sudo yum -y remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
# 新版本卸载
yum -y autoremove docker-ce docker-scan-plugin docker-compose-plugin docker-ce-cli docker-buildx-plugin
# 查看卸载完没有
rpm -qa |grep docker
添加docker-ce的软件仓库(aliyun)
# 安装yum-utils和dnf-utils
yum install -y yum-utils dnf-utils
# docker官方源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 添加docker-ce的软件仓库(国内源)
dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看repolist中docker-ce仓库是否添加成功
yum repolist
卸载podman冲突包(Centos8无需执行)
# 卸载podman冲突包
yum erase podman buildah -y
#方法2: 安装时使用--allowerasing参数自动替换冲突包
yum -y install docker-ce --allowerasing
安装docker-ce
# 安装docker-ce
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
开机自启动docker服务并现在启动
# 开机自启动并现在启动docker服务
systemctl enable --now docker
# 查看docker版本
docker --version
配置docker存储目录
有些服务器分区的var
目录不是独立的分区.而是和/分区
共用的.而docker默认的存储路径是在/var/lib/docker
,这就很容易导致将/分区
磁盘空间占满.
查看docker的默认存储目录
# 获取有关Docker守护程序(Docker Daemon)的详细信息
docker info
# 默认目录是:
## Docker Root Dir: /var/lib/docker
修改docker主配置文件
# 创建/etc/docker目录(如果没有)
mkdir -p /etc/docker
# 写入配置信息
vim /etc/docker/daemon.json
配置如下:
{
"data-root": "/data/docker"
}
重启docker服务
# 重载服务(如果出错就执行)
systemctl daemon-reload
# 重启docker服务
systemctl restart docker
查看新的存储目录
docker info
# 默认目录是:
## Docker Root Dir: /data/docker
配置国内镜像加速源
docker的默认镜像源在美国,国内下载会很慢,可以修改为国内的镜像源地址.
编辑docker配置文件
# 编辑docker配置文件
vim /etc/docker/daemon.json
配置内容如下:
{
"registry-mirrors": [
"https://isdp30x2.mirror.aliyuncs.com"
]
}
如果和存储目录一起修改
json格式注意格式
{
"data-root": "/data/docker",
"registry-mirrors": [
"https://isdp30x2.mirror.aliyuncs.com"
]
}
Docke配置科学网络
参考:https://www.cnblogs.com/Chary/p/18096678
Docker官方方案–不推荐
systemd
也会从/etc/systemd/system/docker.service.d
和/lib/systemd/system/docker.service.d
文件夹下读取配置,创建docker.service.d
目录。
sudo mkdir -p /etc/systemd/system/docker.service.d
编辑文件:
vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
# 绕过科学网络 直连
Environment="NO_PROXY=your-registry.com,10.10.10.10,*.example.com"
通过daemon.json配置代理–推荐
在/etc/docker/daemon.json
中增加代理配置:
{
"proxies": {
"http-proxy": "http://<user>:<password>@<domain>:<port>",
"https-proxy": "http://<user>:<password>@<domain>:<port>",
"no-proxy": "<registry.domain>"
}
}
检查配置是否生效:
# 检查配置是否生效
docker info| grep Proxy
改完要重启docker服务
# 重载服务(如果出错就执行)
sudo systemctl daemon-reload
# 重启docker服务
sudo systemctl restart docker
拉取测试镜像
[rhel8 root ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:37a0b92b08d4919615c3ee023f7ddb068d12b8387475d64c622ac30f45c29c51
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
其他配置参数
# 创建/etc/docker目录
sudo mkdir -p /etc/docker
# 添加配置
## 官方建议使用overlay2
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"experimental": true,
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 重新加载服务
sudo systemctl daemon-reload
# 重启docker服务
sudo systemctl restart docker
配置代理拉取海外镜像
https://blog.csdn.net/omaidb/article/details/122102988
免root运行docker
# 将当前(普通)用户添加到docker组
sudo usermod -aG docker $USER
## 或
# 将当前(普通)用户添加到docker组
sudo gpasswd -a $USER docker
# 测试普通用户是否可以执行docker
## 登入dockre组
newgrp docker
## 执行docker命令启动一个容器
docker run hello-world
## 删除容器
docker run --rm hello-world
更多推荐
所有评论(0)