31 实战-centos上安装docker(超详细)-2021912

31 实战-centos上安装docker(超详细)-2021912

image-20210912091000787

目录

前言

本文,我将带你手把手如何在centos系统上成功安装docker服务

各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人免费帮您解决问题,微信:x2675263825 qq:2675263825。

个人微信二维码:(舍得)

image-20210913130033222

个人博客地址:www.onlyonexl.cn

实验环境

1.虚机版本:1台Centos.7.6 1810 vmworkstation虚机;
2.虚机IP:172.29.9.2 nat网络(保证可通外网)  主机名:docker;
3.docker版本:20.10.8

一、基础环境配置

1、关闭且禁用firewalld、NetworkManager、selinux服务

systemctl stop firewalld
systemctl disable  firewalld

systemctl stop NetworkManager
systemctl disable  NetworkManager

setenforce 0
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config

2、配置网络yum源(或者本地yum源)

cd /etc/yum.repos.d/
mkdir backup-`date +%F`
mv * !$

wget -O /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

yum install -y net-tools
yum install -y vim
yum install -y wget
yum install -y lrzsz

二、卸载旧版本docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

三、安装必要的一些系统工具

[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

四、配置国内 docker 的 yum 源

因为默认的yum源包含docker的安装包版本真的太低了,因此这里需要特别配置国内docker的yum源:

[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#生成yum缓存,后续准备安装docker:
[root@docker ~]# yum makecache

image-20210912220107875

五、安装 docker-ce

1、安装 docker-ce

  • 先来查看docker yum软件包中可用的版本:
[root@docker ~]# yum list docker-ce --showduplicates | sort -r #可以看到,阿里云docker-ce仓库默认提供20/19/18/17 4个版本

image-20210912222258809

image-20210912222319911

  • yum默认安装的是最新版本的docker:
[root@docker ~]#yum install -y docker-ce

image-20210912222555402

  • 查看当前系统已经安装的docker-ce安装包:
[root@docker ~]#rpm -Q|grep docker-ce
[root@docker ~]#rpm -Q|grep containerd

image-20210912222644535

2、启动并开机自启docker服务

注意:刚安装好docker,用docker version查看版本时,报如下提示,是因为docker服务没启动起来起来

image-20210912223632560

启动并开机自启docker服务:

[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl enable docker

image-20210912224011206

3、查看docker版本

[root@docker ~]#docker version #查看docker版本
[root@docker ~]#docker info #查看docker详细信息

image-20210913094747592

image-20210912191240693

image-20210912191250679

六、配置国内阿里云镜像加速器并下载镜像

使用阿里云 docker 镜像加速器,提升 pull 的速度:

1、获取阿里云自己专有的镜像加速器地址

​ 你只需要登录容器Hub服务 https://cr.console.aliyun.com的控制台,使用你的支付宝帐号,第一次登录时,需要设置一个独立的密码,左侧的加速器帮助页面就会显示为你独立分配的加速地址。

image-20210522163321229

image-20210522163332145

#本人的阿里云镜像加速器地址为:
https://kvuwuws2.mirror.aliyuncs.com

#命令如下:
sudo mkdir -p /etc/dockersudo 
tee /etc/docker/daemon.json <<-'EOF
'{  	
	"registry-mirrors": ["https://kvuwuws2.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

2、配置docker镜像地址

#直接执行如下代码即可:
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors":["https://kvuwuws2.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn"]
}
EOF
systemctl daemon-reload
systemctl restart docker

备注:
#我们在安装了docker服务后,默认在就会生成/etc/docker目录了,以上命令再次创建了/etc/docker目录,是没问题的,原来目录下的文件不会被覆盖的;

image-20210913114026987

验证:

在最后,可以看到镜像仓库的地址,已经改为阿里云了,原来默认镜像仓库的地址还在,但是默认会优先使用刚添加的阿里云地址的;
[root@docker ~]#docker info

image-20210913114044197

image-20210913114105668

再下载,就可以了,可以发现下载速度贼快:

[root@docker ~]#docker images
[root@docker ~]#docker pull centos

image-20210913103250230

image-20210913103313789

七、开启网络转发功能

(1)永久生效方法:
[root@docker ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
[root@docker ~]# sysctl -p #生效net.ipv4.ip_forward = 1
[root@docker ~]# cat /proc/sys/net/ipv4/ip_forward #查看,1代表开启网络路由转发功能
1

(2)临时生效方法:
[root@docker ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@docker ~]# cat /proc/sys/net/ipv4/ip_forward
1

#最终输出脚本:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
sysctl -p 
cat /proc/sys/net/ipv4/ip_forward

八、验证:拉取一个nginx镜像运行起来并观看效果

  • 拉取镜像:
[root@docker ~]# docker pull nginx:1.16.1

image-20210913103956678

  • 查看下载好的nginx镜像:
[root@docker ~]# docker images

image-20210913104017124

  • 运行一个docker实例:
[root@docker ~]# docker run -d -p 80:80 nginx:1.16.1 #-d代表后台,宿主机端口:容器端口 先在本地查找镜像,本地不存在的话,就去官网下载(docker.hub.com),如果有配置其他yum源,就会优先到配置的yum源去拉取进行镜像
602c24fa33e3a93a40899db38590f3a1287a8362a29be56328f715db7e62d869[root@docker ~]#

image-20210913104143370

  • 查看正在运行的容器:
[root@docker ~]# docker ps

image-20210913104158513

  • 此时在宿主机上访问这个地址,查看效果:
[root@docker ~]#curl 172.29.9.2

image-20210913104217937

http://172.29.9.2/

image-20210913104250832

  • 此时,如何知道这个是我们的容器呢?可以通过进入刚才创建的容器,命令修改nginx index.html文件,来验证:
root@docker:~# docker ps
root@docker:~# docker exec -it 00f7ff787d47 bash #-i代表标准输入,t代表tty
root@00f7ff787d47:/# pwd/
root@00f7ff787d47:/# cat /etc/issue #查看容器系统是debaian的Debian GNU/Linux 10 \n \l
root@00f7ff787d47:/# cd /usr/share/nginx/html/
root@00f7ff787d47:/usr/share/nginx/html# ls -l
total 8-rw-r--r-- 1 root root 494 Aug 13  2019 50x.html
-rw-r--r-- 1 root root 612 Aug 13  2019 index.html
root@00f7ff787d47:/usr/share/nginx/html# cat index.html 
<!DOCTYPE html>
……
</html>
root@00f7ff787d47:/usr/share/nginx/html# echo "Linux39" > index.html #修改nginx index.html文件

image-20210913104532233

image-20210913104621720

image-20210913104634810

此时再次在宿主机上刷新网页观看效果:(符合预期)

image-20210913104647184

实验到此结束!

安装过程需要注意的问题

Q:docker安装时的包名问题

​ 在之前,不配置任何的源,我们就可以直接使用yum install docker来安装docker了。在那个时候安装的都老版本,并且dcoker也是在近2-3年,做了docker ce/ee的区分。也就是在早期有很多的命名,在早期你直接用yum install docker就把docker可以装上了,还有段时间用yum install docker-engine,还有段时间用yum install docker.io,所在在早期是有很多这种名字的,但是你现在在linux并不配置源的情况下,你直接用yum install docker,那么它安装的一定是比较旧的版本,并且是落后了好多个版本,至少有3/4个大版本

​ 所以我们是非常不建议再使用这些老版本了,因此就需要把这些老版本卸载掉。只要你的软件包名不是docker-ce,那么就不会再用它了,因为那些都是老版本的了

image-20210912114403346

image-20210912114645457

  • 注意:默认yum源里早起很老的docker版本

image-20210913133035574

Q:docker-ce常见国内软件包yum源

(1)阿里docker-ce yum源
[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(2)清华 docker-ce yum源:
[root@docker ~]# yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

Q:docker常见国内镜像加速器地址

镜像源可以添加多个,根据自己的网络环境选择速度快的,这里给大家添加了 3 个老师常用的(阿里、网易、上海蓝云网络科技有限公司):

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors":["https://kvuwuws2.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn"]
}
EOF
systemctl daemon-reload
systemctl restart docker

#扩展:azk8s.cn 这个域名是上海蓝云网络科技有限公司的。上海蓝云网络科技有限公司于2013年3月成立,由世纪互联与门为在中国境内提供Windows Azure和 Office 365 服务而成立,为世纪互联的全资子公司。

image-20210913114026987

image-20210913114044197

image-20210913114105668

Q:docker官方安装文档

  • 一般主要会去看docker的官方文档:https://docs.docker.com/

image-20210912111743664

https://docs.docker.com/get-started/

image-20210912111803961

  • 官方安装docker文档:https://docs.docker.com/engine/install/

image-20210912111923934

image-20210912111954221

1.centos上安装docker官方文档
  • centos上安装docker官方文档:https://docs.docker.com/engine/install/centos/

image-20210912112239296

2.ubuntu上安装docker官方文档
  • ubuntu上安装docker官方文档:https://docs.docker.com/engine/install/ubuntu/

image-20210912112310686

3.二进制方法安装docker官方文档

https://docs.docker.com/engine/install/binaries/

其实二进制安装docker也挺简单的,因为官方已经把源码编译成一个个二进制程序包了,我们只需要下载下来将其移动到linux /usr/bin目录下即可。

image-20210912112826229

image-20210912112903073

cpu架构:国产一般都是arm系列的一般。

image-20210912113316775

image-20210912113506008

Q:yum安装dcoker安装包时的方法

官方文档的安装docker的命令如下:

yum install docker-ce docker-ce-cli containerd.io

#docker-ce-cli 作用是 docker 命令行工具包
#containerd.io 作用是容器接口相关包

image-20210912191637050

而阿良课件提供的只需要一条命令即可:

yum install docker-ce -y

image-20210912191726865

总结:直接一条命令搞定就好

yum install docker-ce -y

Q:安装特定版本的docker

yum install -y yum install docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io #指定需要安装的版本号

Q:docker rpm包下载地址(一般离线rpm包安装docker,需要制作离线yum源)

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ #官方

https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/ #阿里云

https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/Centos/7.7/x86_64/stable/Packages/ #清华

image-20210223230224604

image-20210523072138480

image-20210523072049658

image-20210523072104527

Q:关于安装docker后开启网络转发功能问题

  • 开启网络转发功能,如果安装了docker的话,默认会自动开启,但是建议手动配置使其永久生效!
[root@docker ~]# cat /proc/sys/net/ipv4/ip_forward #注意,在启动docker服务之前,默认这个参数是0,但一旦docker服务启动后,这个参数会被更改为1的!!!

#但是建议手动配置使其永久生效!
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
sysctl -p
cat /proc/sys/net/ipv4/ip_forward 
  • 如果未开启,docker 启动实例时,会报错以下警告:

image-20210522183314549

Q:注意下:安装docker前必须要先关闭防火墙

  • 默认情况下,如果防火墙开启的话,通过iptables -L -n查看会有很多规则的:

image-20210522183903221

image-20210522184058328

image-20210522183929378

image-20210522184012938

  • 如果关闭了firewalld的话后,再次用命令查看就会发现是空的:

image-20210522184132700

  • 注意:起了docker服务后,再次用iptables查看就会发现多了很多关于docker的规则。

image-20210522184239309

image-20210522184349187

  • 结论:
[root@docker ~]# systemctl stop firewalld && systemctl disable firewalld #关了防火墙
[root@docker ~]# systemctl restart docker 

# 关了防火墙,要把 docker 服务重启一下,不然 docker 的 ip 包转发功能无法使用。即使防火墙关了,docker 会调用内核模块 netfilter 增加规则,所以有防火墙规则。     
# 备注:因为我在基础环境配置那里已经关闭了防火墙,这里只需要开启理由转发功能即可,不用再关闭防火墙及重启docker操作了。

docker一键安装脚本==(重要)==

systemctl stop firewalld
systemctl disable  firewalld

systemctl stop NetworkManager
systemctl disable  NetworkManager

setenforce 0
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config

cd /etc/yum.repos.d/
mkdir backup-`date +%F`
mv * !$

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

yum install -y net-tools
yum install -y vim
yum install -y wget
yum install -y lrzsz


yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache

yum install docker-ce-y
systemctl start docker && systemctl enable docker

docker version
docker info

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors":["https://kvuwuws2.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn"]
}
EOF

cat /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
sysctl -p
cat /proc/sys/net/ipv4/ip_forward

systemctl daemon-reload
systemctl restart docker

总结

​ 以上,就是如何在Centos上安装docker服务的完整过程了。关于docker进一步如何使用,请看后续博客,欢迎大家的阅读。

image-20210523091442762

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值