docker

官网:Docker: Accelerated Container Application Development

docker,docker,docker.多年过去,本想与你再无交集,奈何苍天弄人,还得再上你的贼船……

与 docker 的种种

常用命令

#   1、镜像相关

#   列出本地主机上的镜像
docker images

#   拉取镜像
docker pull xxx

#   [强制 -f]删除一个或多个镜像
docker rmi -f xxx yyy zzz
#   删除所有已标记的镜像(docker images -q 会列出所有镜像的ID)
docker rmi $(docker images -q)
#   删除所有未使用的镜像,包括未标记的镜像(-a 参数表示删除所有未使用的镜像,而不仅仅是悬空的镜像)
docker image prune -a

#   2、容器相关

#   列出当前正在运行的容器(添加 -a 列出所有容器,包括未运行的)
docker ps

#   运行一个新的容器实例
#       -d 表示以 detached 模式运行容器,-p 80:80 表示将容器的 80 端口映射到宿主机的 80 端口,--name nginx001 为容器指定一个名称。
docker run -d -p 80:80 --name nginx001 nginx

#   停止一个或多个正在运行的容器
docker stop nginx001
#   停止所有容器
docker stop $(docker ps -aq)

#   启动一个或多个已经停止的容器
docker start nginx001

#   删除所有已停止的容器(不会影响正在运行的容器)
docker container prune
#   [强制 -f]删除一个或多个容器
docker rm -f nginx001 nginx002
#   [强制 -f]删除所有正在运行和已停止的容器
docker rm -f $(docker ps -aq)

#   在运行的容器中执行命令(-it 提供一个交互式的终端)
docker exec -it nginx001 /bin/bash

#   获取容器的日志输出
#       -f 实时输出日志信息
#       -n 或 --lines:仅显示最后几行日志
#       --since 仅显示自给定时间以来的日志
docker logs nginx001

#   3、其他

#   下面命令不仅会删除所有未使用的镜像,还会删除所有未使用的容器、网络和可选地,使用 --volumes 参数还可以删除未使用的卷
docker system prune -a
            

Ubuntu

这里讲述一下ubuntu 22.04docker的故事

卸载

参考:Uninstall Docker Engine

#   卸载安装的程序
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

#   删除  images, containers, and volumes
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

#   删除 apt 源相关
sudo rm -rf /etc/apt/keyrings
sudo rm -rf /etc/apt/sources.list.d/docker.list

#   删除 docker 用户组
sudo groupdel docker
            

安装

参考:Uninstall Docker Engine

#   添加 GPG key
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 添加仓储到 apt 源:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.huaweicloud.com/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update


#   安装
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
            

ubuntu 22.04 安装 docker,添加 GPG key

ubuntu 22.04 安装 docker,检查 docker 是否安装成功

添加 GPG key
这部分会创建/etc/apt/keyrings以及该目录下的docker.asc文件
https://download.docker.com/docker-ce/linux/ubuntu/gpg替换成了国内镜像
添加仓储到 apt 源
https://download.docker.com/docker-ce/linux/ubuntu替换成了国内镜像

非 sudo

上图中使用docker info查看信息时,server 部分会提示权限问题,那么不使用sudo可以吗?当让没有问题,您上眼:

#   判断 docker 用户组是否存在
#       查看用户组列表
cat /etc/group
#       搜索特定的用户组
grep 'docker:' /etc/group

#   添加 docker 用户组
sudo groupadd docker

#   删除 docker 用户组
sudo groupdel docker

#   添加当前用户到docker组( ${USER}是一个环境变量,代表当前登录的用户名 )
#       如果你需要为另一个用户添加权限,将${USER}替换为那个用户的用户名。
sudo usermod -aG docker ${USER}

#   为了使组变更生效,你需要注销并重新登录,或者重新启动你的终端,可以通过以下命令重新加载组
exec sg docker
#       或者
newgrp docker
            

ubuntu 22.04 安装 docker,非 sudo 检查 docker 是否安装成功

设置国内镜像

干啥都得镜像啊,当然也少不了docker。需要修改/etc/docker/daemon.json文件,如果不存在,则先创建一下。修改如下:

{
    "registry-mirrors": [
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com",
        "https://dockerproxy.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
    ]
}
            

你可能需要先修改一下目录的权限

#   如果不存在 daemon.json 文件
sudo chmod -R 777 /etc/docker

#   直接修改文件权限
sudo chmod -R 777 /etc/docker/daemon.json
            

ubuntu 22.04 安装 docker,设置国内镜像

修改之后需要重启一下服务sudo systemctl restart docker,之后在终端docker info就能看到你的修改了