一、准备工作
selinux 防火墙的设置:
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
Firewalld 防火墙的设置:
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
如果要将容器内的服务可以使外部访问,需要添加策略(举例):
firewall-cmd 的基本使用:
开启端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent 永久生效,没有此参数重启后失效)
重新载入:firewall-cmd --reload 修改 firewall-cmd 配置后必须重启
查看:firewall-cmd --zone= public --query-port=80/tcp
删除:firewall-cmd --zone= public --remove-port=80/tcp --permanent
查看所有打开的端口:firewall-cmd --zone=public --list-ports
二、安装docker
1、安装需要的软件包:
[root@localhost ~]# yum install yum-utils -y
2、配置 docker 源
阿里云的源
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
使用yum包管理器进行docker软件包的搜索
[root@localhost ~]# yum search docker
3、安装docker
问题一:
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io -y
安装过程中可能有这个问题warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-buildx-plugin-0.11.2-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY01:04 ETA docker-buildx-plugin-0.11.2-1.el7.x86_64.rpm 的公钥尚未安装
这是因为安装一个RPM软件包,但是该软件包的签名公钥尚未被安装到系统中。在安装RPM软件包时,系统会验证软件包的签名以确保其来源可信。如果软件包的签名公钥尚未安装,系统就无法验证软件包的真实性。
可以将docker-ce的gpg验证关闭
[root@localhost ~]# vim /etc/yum.repos.d/docker-ce.repo
如果修改不了的话:sudo chmod 777 /etc/yum.repos.d/docker-ce.repo
然后再执行下载操作即可
问题二:
这个报错是由于 container-selinux 版本过低或者未安装所致。一般的 yum 源中找不到 container-selinux 包,因此需要安装 epel 源才能使用 yum 安装 container-selinux。
wget安装
[root@localhost ~]# yum -y install wget
下载epel源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
安装源以及依赖包container-selinux
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum makecache
[root@localhost ~]# yum -y install container-selinux
然后再执行下载操作即可
4、启动docker
[root@localhost ~]# systemctl start docker && systemctl enable docker
查看状态
[root@localhost ~]# systemctl status docker
查看docker信息
[root@localhost ~]# docker info
5、配置国内镜像源
Docker在默认安装之后,通过命令docker pull 拉取镜像时,默认访问docker hub上的镜像,在国内网络环境下,下载时间不能保证,所以要配置国内镜像仓库;
新建或编辑daemon.json
[root@localhost docker]# vim /etc/docker/daemon.json
daemon.json中编辑如下(可供选择)
中科大
{
"registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ]
}
华为云
{
"registry-mirrors": [ "https://9871944d085e4817a11247169cc16509.mirror.swr.myhuaweicloud.com" ]
}
阿里
{
"registry-mirrors": ["https://02xz0m84.mirror.aliyuncs.com"]
}
选择一个就行
加载配置文件并重启docker
[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker
查看是否修改成功
如果执行docker info出现如下警告
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
这些警告是由于Docker发现在您的系统上bridge-nf-call-iptables和bridge-nf-call-ip6tables被禁用了。这些警告通常意味着Docker可能无法正确配置网络规则,这可能会导致某些网络功能无法正常工作。您可以通过启用这些内核模块来解决这些警告。
可以使用以下命令来启用这些内核模块:
[root@localhost ~]# vim /etc/sysctl.conf
添加以下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@localhost ~]# sysctl -p