Docker
参考自:https://yeasy.gitbook.io/docker_practice/
项目地址:https://github.com/yeasy/docker_practice
0x01 安装 Docker
手动安装
按照 gitbook 中的教程,首先卸载旧版本的 Docker(也称为 docker/docker-engine) ,命令如下:
1 | sudo apt-get remove docker \ |
由于 apt
源使用 HTTPS 以确保软件下载过程中不被篡改。接下来,需要添加使用 HTTPS 传输的软件包以及 CA 证书。
1 | sudo apt-get update |
这里在执行 apt-get update
命令时,出现了如下报错:
1 | E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi' |
参考该博客进行修复问题。
为了确认所下载软件包的合法性,需要添加软件源的 GPG
密钥,使用国内源。
1 | curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg |
然后,我们需要向 sources.list
中添加 Docker 软件源:
1 | echo \ |
更新 apt 软件包缓存,并安装 docker-ce(社区版):
1 | sudo apt-get update |
脚本安装
1 | $ curl -fsSL get.docker.com -o get-docker.sh |
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
启动 docker 服务
1 | sudo systemctl enable docker |
建立 Docker 用户组,避免每次都输入 sudo
参考自博客:https://murphypei.github.io/blog/2018/12/docker-add-group
为什么 docker 命令需要 sudo ?
默认情况下,docker
命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root
用户和 docker
组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root
用户。因此,更好地做法是将需要使用 docker
的用户加入 docker
用户组。目前最新的 Docker 会自动创建一个 docker 用户组。
建立 docker 组:
1 | sudo groupadd docker |
将当前用户加入到 docker 组:
1 | sudo usermod -aG docker $USER |
查看 docker 用户组:
1 | cat /etc/group | grep docker |
退出当前终端并重新登录,进行测试:
1 | su $USER |
出现下面的结果即表示安装成功:
1 | Unable to find image 'hello-world:latest' locally |
补充:
实测发现只按照 gitbook 上的命令,每次打开终端都需要退出当前用户并重新登陆,有些不方便,按照博客中的方法,修改守护进程绑定的套接字的权限,使其能够被 docker 分组访问:
1 | sudo chmod a+rw /var/run/docker.sock |
之后,打开新的终端也不需要再重新登陆了。
0x02 docker 常用命令及其参数
从 Docker 镜像仓库获取镜像的命令:docker pull
。其命令格式为:
1 | docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] |
······