docker 的基础操作

docker 是一个开源的应用容器引擎,轻量化、可移植、一键打包、快速测试等特点不容错过

docker 是一个开源的应用容器引擎,它使用 Go 编程语言编写,提供一种名为”容器”的隔离工作空间技术,使得用户可以快速使用、跨平台移植,就如海上的集装箱,docker 把打包好的应用通过守护进程发布到任何流行的Linux 或 Windows 机器上。

docker 工作原理图示,来自:官方文档

以下内容是基于使用 docker 过程的记录和心得体会,将实时更新。

环境准备

  • Windows 10 电脑
  • 树莓派4B(系统版本如下)
    1
    2
    3
    4
    $ uname -a
    Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux
    $ lsb_release -cs
    buster
  • 联网环境

安装docker-ce

目前公共的版本是 docker-ce ,即社区版

以树莓派为例(Debian 发行版)为例,安装前先配置环境

  1. 确保安装依赖
1
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
  1. 信任 Docker 的 GPG 公钥
1
2
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
ok
  1. 添加软件仓库
  • 树莓派等ARM架构计算机

    1
    2
    3
    echo "deb [arch=armhf] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
    $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list
  • amd64 架构的计算机

    1
    2
    3
    4
    sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
    $(lsb_release -cs) \
    stable"
  1. 最后一步,使用命令行安装 docker-ce
1
2
sudo apt update
sudo apt install docker-ce

换源加速 docker pull 的速度

详见另一篇博文 国内开源镜像站点及替换方式
思路是修改 /etc/docker/daemon.json 的文件内容,最后重载配置、重启 docker即可

docker 去除 sudo 启动

不加 sudo 时启动 docker 会报错:

1
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json: dial unix /var/run/docker.sock: connect: permission denied

解决办法如下:

1
2
3
4
5
6
# 新建一个 docker 组
sudo groupadd docker
# 将docker账户给与权限
sudo gpasswd -a <username> docker
# 重启 docker
sudo service docker restart

退出 shell ,重进即可不带 sudo 使用 docker

或者使用如下命令:

1
2
3
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

docker 的查询命令

1
2
3
4
# 列出所有在运行的容器信息:
docker ps
# 查询所有已安装的 docker 镜像文件:
docker images

Ref

Changlog

  • 2023/06/04 修改细节,更新补充内容
  • 2021/08/25 init
查看评论