本文系统环境:RHEL8
本文字符:# 代表root用户执行,$代表普通用户
写在前面:我有多年安装维护调试 VMware+Vsan 经验,一直关注虚拟化方面的技术,但平时工作较忙,终于在19年底收获了颈椎病,在将维护强度降下来的同时也让我有时间可以好好学一下Docker技术,我在这里将我平时的学习感悟总结成——从零开始学Docker。
安装篇
一、老版本卸载
如果之前没装过,可以跳过这步
# dnf remove docker docker-ce docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # rm -rf /var/lib/docker
卸载老版本
二、设置官方REPO源
# dnf install -y yum-utils device-mapper-persistent-data lvm2 # dnf config-manager --add-repo
REPO源
目前只有针对CentOS7的源,在RHEL8测试时,可以满足安装需要。
三、安装Docker
先用如下命令检查一下当前官方源可安装的版本
# dnf list docker-ce --showduplicates | sort -r # dnf list docker-ce-cli --showduplicates | sort -r # dnf list con --showduplicates | sort -r
官方源的版本
安装指定版本
# dnf install docker-ce-3:19.03.5-3.el7 docker-ce-cli-1:19.03.5-3.el7 con-1.2.6-3.3.el7
安装
四、启动服务
# systemctl enable docker # systemctl start docker
启动服务
五、安全
用root用户执行程序是及其不安全的,更何况是Docker,好在Docker已经想到了,程序安装后会自动创建一个名为docker的组(仅组,无用户,注意),它让我们自己将可运行docker的用户加入到组里去,姑且起一个test的用户名吧
# usermod -aG docker test # su test $ id $USER uid=1000(test) gid=1000(test) groups=1000(test),983(docker)
我们看到,多了一个983(docker),证明test用户已经加入到docker组里了,测试一下
$ docker version
错误?什么鬼?
想了想,启动的时候是用root用户启动的,现在就应该用test用户启动才对
# systemctl disable docker # systemctl stop docker $ sudo systemctl enable docker $ sudo systemctl start docker $ docker version
重新用test用户启动
用test用户再执行一次docker version 不报错了。
六、验证Docker安装
测试1:
# sudo docker run hello-world
hello world
测试2:
# sudo docker run centos /bin/echo 'hello world'
这一步我们不仅仅启动了一个container,还传输了一个echo命令进去执行。
自动下载centos8镜像
七、思考题
为啥测试1和测试2命令执行后,用
$ sudo docker ps
命令看不到,只能用
$ sudo docker ps -a
能看到?