我这边之前本地创建了个虚拟机,linux系统的,用于部署服务器。有时安装一些常用工具或者中间件,还是用docker安装方便,而且docker还有编排服务等功能,实际使用中还是会省不少事的,这里记录下安装docker的过程。
docker安装的帮助文档:https://docs.docker.com/engine/install/
因为我这边安装的rocky linux系统,就选择centos的docker了(rocky linux的安装可参考链接: link)
1.清理环境
如果之前linux机器上装过其它版本的docker服务,先将其清理掉
sudo dnf remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \podman \runc
因为我的机器刚装起来,是没有安装过docker的,所以提示没有
2.安装docker
这里我们采用在线安装的方式
首先,我们安装下dnf-plugins-core并且设置下docker的仓库,注意这里仓库我们替换成阿里云的,官方的仓库太慢了
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
然后我们安装docker
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3.启动容器
如果我们只希望此时启动,而不是每次linux机器启动,docker就自动启动的话,直接用下面这个命令即可
sudo systemctl start docker
如果我们希望每次linux机器打开时,docker就自动启动的话,就用下面这个命令
sudo systemctl enable --now docker
一般推荐下面这个命令,每次打开机器,自动就启动好了,免去手动启动;而且后面部署服务后,机器重启后,服务也能配置自动启动,这样能省去很多麻烦。如果只是自己临时使用,就根据自己的需要来了。
如图,docker已经启动成功了
4.配置镜像加速器
我们平时用docker下载镜像文件,经常是从国外的官网上下载的,速度比较慢,这里我们切换到阿里的镜像地址
。
首先,我们进入阿里的容器与镜像服务的页面
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
当然也可以在https://www.aliyun.com/这个页面直接搜索容器与镜像跳转
在这个页面点击镜像工具->镜像加速器即可看到加速地址,把下面的命令拷贝到自己的服务器上即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"] # 注意这个地址替换为自己的地址
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
接下来启动一下hello-word的镜像试试
sudo docker run hello-world
报错:docker: Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
哈哈,没启动成功,我查了下镜像地址又是配了的,难道这个地址不行吗,我又配置了其它几个镜像源,发现还是不行,会不会是虚拟机网络的问题呢,我又排查了下虚拟机网络,是能够访问外网的,这就奇怪了。
后来到虚拟机的页面上看了下,一直在报/etc/rc.d/rc.local is not marked executable, skipping的错误
然后我执行了下sudo systemctl daemon-reload,发现这个错误又报了一次,由此猜想是daemon文件没生效,然后我查看了下这个文件,果然没有执行权限
给它加个执行权限
chmod +x /etc/rc.d/rc.local
这时候再执行sudo systemctl daemon-reload并重启,就没有报错了
然后我们再安装个镜像试试。
嗯,还是不行,直接docker info查看下docker的信息
这个加速器地址也生效了啊
然后我上网查原因的时候,无意中瞥到有人说国内的加速器都不行了,我惊了下,然后这才注意到阿里云的公告
这个意思是只有使用阿里云服务器或者相关产品的才能使用这个服务吗?个人服务器可能用不了了。。。
然后我这边转头又去华为云那边看看,
华为云容器镜像服务地址为:
https://console.huaweicloud.com/swr/
当前也可以直接进华为云,然后搜索容器镜像服务,
点击图中的镜像加速器就可以获取到加速地址了
直接把这个地址拷贝到daemon.json文件里
然后再 sudo systemctl daemon-reload 并且重启下docker
此时再装个镜像试试
终于可以了,这么点东西搞了一个上午,真是折磨!!!
注:
在华为云上访问容器镜像服务需要实名认证,一开始没有实名认证,这边一直提示鉴权失败,然后也不提示具体什么原因鉴权失败,后来我想起来一开始有问要不要实名认证,就实名认证了下,这才可以访问这个页面