docker的安装和简单配置

时间:2023-03-08 16:32:46

docker的安装和简单配置

docker是balabalabala...懒得介绍。

国内安装docker很蛋疼,按照官方配置好了软件源之后,几十MB的安装文件下载要半天,没办法,docker默认的软件源是在国外的,速度很慢。幸好国内有docker软件源镜像,注意这里说的是软件源镜像,也就是deb系统下的apt源镜像,只用来安装docker。

阿里提供了软件源镜像及安装的步骤,写的还算比较详细。这里摘录关键步骤如下:

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/debian buster stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

本人用Debian sid系统,手里部分服务器使用Ubuntu系统,Ubuntu的安装很简单,阿里官方文档就有介绍,这里以有点麻烦的Debian sid进行讲解,纯属炫(low)技。

上述命令,原文中都是ubuntu,这里简单将ubuntu替换为debian

另外原文命令中的$(lsb_release -cs) 用于查询codename,这里直接替换为buster,注意,因为我用的是Debian sid,其对应的codename有可能在debian下面不存在,这里替换之前我是到这里确认过buster这个codename确实存在才这么写的。如果有新版的Debian sid(估计很快就有了),使用上一个版本的codename一般也没啥问题。

镜像源的配置

安装完了docker,还不能开心的使用,因为docker只是一个运行时,我们真正要用的是在docker里面运行的各种images,但是这个images的镜像还是在国外的,慢的要死。幸好国内也有镜像,我们可以使用国内的镜像来代替国外镜像。执行以下命令:

sudo mkdir /etc/docker/ # 如果这个文件夹不存在的话
sudo nano /etc/docker/daemon.josn # Fedora、Centos等系统这个文件的位置不同。

可以在指定位置创建一个docker的配置文件,并打开,将以下内容写入文件并保存:

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

这是一个json格式的文件。

注意,有一些docker插件如nvidia-docker等安装的时候也会要求修改这个文件,所以记得随时查看这个文件的内容并做相应的调整。

其实这里应该重启一下docker服务才能让服务生效的,但是我们的设置还没做完,所以dwSun犯懒,就跟下次一起弄了。

免sudo使用

到这里,还是不能愉快的使用,因为docker的cli跟dameon通信用的socket文件他的所有权属于docker组,而当前用户不在docker组里面,所以只能sudo才能使用docker。啥,不明白dwSun这里写了个啥,没关系,跟着操作就行了。

将用户加入 docker group 内。然后退出并重新登录。

sudo gpasswd -a ${USER} docker

如果你跟dwSun一样比较懒,那么执行到这里然后直接

sudo reboot

就好了,可以安全的忽略后面的东西。

重启 docker 服务

sudo service docker restart

切换当前会话到新 group 或者重启 X 会话

newgrp - docker
OR
pkill X
OR
ctrl alt backspace

注意,最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。

测试

都弄好了,做个测试吧:

docker run hello-world

如果你的终端里面有hello world输出和一些奇奇怪怪但明显不是错误的提示,那么恭喜你,docker安装完成。

如果是服务器操作,有可能出现重启之后ssh登录不上的情况,必须要到机器上登录一下才能用远程ssh登录,反正我碰到了。查了很久也没看明白是为啥,也许是docker的安装修改了iptables的设置,可以试试下面的操作让iptable允许ssh的连接:

iptables -A INPUT -p tcp --dport ssh -j ACCEPT

参考

阿里docker参考文档: https://yq.aliyun.com/articles/110806