【Docker入门学习】(一) docker的安装与配置
一、安装docker
官方文档:Install Docker Engine on CentOS,Docker离线安装文件:https://download.docker.com。
安装 Docker需要 64 位版本的CentOS 7。
1.升级CentOS7系统和内核
首先,升级一下系统,保证工具包都是最新的。
yum update -y
然后,升级一下系统内核。
centos7默认的内核版本是3.10,低版本的内核在使用docker时会出现兼容性和稳定性的问题,docker官方对内核的说明:https://docs.docker.com/storage/storagedriver/overlayfs-driver/。通常,我们推荐至少要将内核版本升级到4.18+。离线安装内核可以到https://elrepo.org/linux/kernel/el7/x86_64/RPMS下载,下面记录在线安装步骤。
#查看当前内核版本 uname -a #下载公钥 rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #安装elrepo repo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-5.el7.elrepo.noarch.rpm #列出可用的内核包(lt表示longterm,长期维护版。ml表示mainline,最新稳定版) [vagrant@centos7 ~]$ yum --disablerepo="*" --enablerepo=elrepo-kernel list available Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * elrepo-kernel: hkg.mirror.rackspace.com Available Packages kernel-lt-doc.noarch 5.4.157-1.el7.elrepo elrepo-kernel kernel-lt-headers.x86_64 5.4.157-1.el7.elrepo elrepo-kernel kernel-lt-tools.x86_64 5.4.157-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs.x86_64 5.4.157-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs-devel.x86_64 5.4.157-1.el7.elrepo elrepo-kernel kernel-ml.x86_64 5.15.0-1.el7.elrepo elrepo-kernel kernel-ml-devel.x86_64 5.15.0-1.el7.elrepo elrepo-kernel kernel-ml-doc.noarch 5.15.0-1.el7.elrepo elrepo-kernel kernel-ml-headers.x86_64 5.15.0-1.el7.elrepo elrepo-kernel kernel-ml-tools.x86_64 5.15.0-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs.x86_64 5.15.0-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs-devel.x86_64 5.15.0-1.el7.elrepo elrepo-kernel perf.x86_64 5.15.0-1.el7.elrepo elrepo-kernel python-perf.x86_64 5.15.0-1.el7.elrepo #下面开始安装内核了,安装LTS版本吧,没必要用最新的。 ##安装内核(LTS版)-选这个吧 yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y ##安装内核(最新版) yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y #查看系统可用内核 [vagrant@centos7 ~]$ sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 0 : CentOS Linux (5.4.157-1.el7.elrepo.x86_64) 7 (Core) 1 : CentOS Linux (3.10.0-1160.45.1.el7.x86_64) 7 (Core) 2 : CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core) #通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置 grub2-set-default 0 #重新生成grub配置 grub2-mkconfig -o /boot/grub2/grub.cfg #重启 reboot #验证 uname -a
2.配置国内源
先修改CentOS7系统yum源。
#备份系统自带的yum源 cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.backup #下载阿里源 wget http://mirrors.aliyun.com/repo/Centos-7.repo #生成缓存 yum clean all yum makecache
再配置Docker的yum源。
#安装yum-utils包,它提供了yum-config-manager工具。同时安装docker稳定版仓库。 sudo yum install -y yum-utils #官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #改用阿里云仓库,速度更快 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
如果已经安装过docker旧版本可以先卸载。卸载将会保留 /var/lib/docker/ 的内容,包括镜像、容器、存储卷和网络,可以手动将其删除。
#卸载已安装的docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo rm -rf /var/lib/docker # 1.安装最新版docker sudo yum install docker-ce docker-ce-cli containerd.io # 2.安装指定版本docker # 列出可用版本 yum list docker-ce --showduplicates | sort -r # 安装指定版 sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
安装docker同时会自动创建docker组,但不会添加任何用户。
4.启动docker并设置开机启动
sudo systemctl start docker sudo systemctl enable docker
5.验证
验证是否正确安装了docker,方法是运行hello-world 镜像。此命令将下载一个测试镜像并在容器中运行它。容器运行时,它将输出一条参考消息并退出。
sudo docker run hello-world
二、配置
官方文档:Post-installation steps for Linux
1.设置以非root用户身份管理Docker
docker
守护进程绑定至 Unix 套接字,而不是 TCP 端口。默认情况下,该 Unix 套接字由用户 root
所有,而其他用户只能使用 sudo
访问它。docker
守护进程始终以 root
用户身份运行。
在使用 docker
命令时,如果您不想使用 sudo
,请创建名为 docker
的 Unix 组并向其中添加用户。docker
守护进程启动时,它将使 Unix 套接字的所有权可由 docker
组进行读取/写入。
如需创建 docker
组并添加您的用户,请执行下列操作:
#创建docker组【安装docker时会自动创建docker组】。
sudo groupadd docker
#向docker组中添加用户 sudo usermod -aG docker $USER
注销并重新登录,以便对您的组成员资格进行重新评估。
(如果在虚拟机上进行测试,可能必须重启此虚拟机才能使更改生效。在桌面Linux环境(例如,X Windows)中,彻底从您的会话中注销,然后重新登录。)
#验证您是否可以在不使用sudo的情况下运行docker命令。
docker run hello-world
2.配置阿里云镜像加速
国内通过docker官方仓库下载镜像比较慢,使用国内的阿里云、163等提供的docker仓库速度更快。
使用阿里云加速,需要到阿里云进行注册,获取到自己专属的加速地址,当然也可以使用别人的加速地址。
第一步,打开阿里云网站,点击控制台。
第二步,进行登录,如果没有账号就先注册个账号,登录成功后会跳转到控制台页面,找到容器服务。进入容器镜像服务,镜像加速器。按照提示来操作即可。
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://561my9m4.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
这样就配置好了镜像加速。
3.修改默认Cgroup驱动(可选)
Docker默认使用cgroups作为文件驱动,而Kubernetes推荐使用systemd来替代cgroups,两者不一致。
可以进行如下配置。当然,也可以暂时不修改,等用到Kubernetes时再修改。
cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"] } EOF systemctl restart docker
4.修改默认镜像仓库位置(可选)
Ubuntu 中的位置是:/etc/default/docker。CentOS中的位置是:/etc/sysconfig/docker。指定镜像和容器存放路径的参数是--graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可。
CentOS7的修改方法
# 关闭docker服务
systemctl stop docker.service
# 移动数据。
mv /var/lib/docker 新路径
----------------------------------------------------------
# 修改docker.service文件
vim /usr/lib/systemd/system/docker.service
# 添加使用-g参数
ExecStart=/usr/bin/dockerd --graph /new-path/docker
---------------------------------------------------------
# reload配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker.service
# 查看数据目录
docker info | grep Dir
Ubuntu修改方法
#关闭docker 服务
service docker stop
#移动数据到新的目录
mv /var/lib/docker 新目录
#修改默认配置
vim /etc/default/docker
# 在配置文件最后一行追加下面配置即可
DOCKER_OPTS="-g /root/data/docker"
#重启docker 服务
service docker start
#查看数据目录
docker info | grep Dir