将用户添加到 docker 组内

sudo usermod -aG docker $USER

设置 docker 默认存储位置

/etc/docker/daemon.json
{ 
  "data-root": "/home/<user>/work/docker"
}

设置 docker 代理

docker 守护进程代理

创建一个 Drop-in snippet 内容如下:

/etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=192.168.1.1:8080"
Environment="HTTPS_PROXY=192.168.1.1:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

注意: 这假定 192.168.1.1 是你的代理服务器,不要使用 127.0.0.1.

确定配置被加载了:

sudo systemctl daemon-reload 
sudo systemctl show docker --property Environment
 
# Environment=HTTP_PROXY=192.168.1.1:8080 HTTPS_PROXY=192.168.1.1:8080

docker 容器内代理:

~/.docker/config.json
{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://proxy.example.com:8080",
     "httpsProxy": "http://proxy.example.com:8080",
     "noProxy": "localhost,127.0.0.1,.example.com"
   }
 }
}

注意,有一些服务可能需要取消代理,例如 immich,此时可能可以通过设置 env 解决。

docker 运行某个 container

docker exec -it <container_name> /bin/sh

docker 重命名镜像

首先用

docker tag <IMAGE ID> <REPOSITORY>:<TAG>

重命名镜像,再删除原来的镜像

docker rmi <REPOSITORY>:<TAG>

docker-compose 查看 log

docker-compose logs -f -t

docker build with proxy

docker build --build-arg http_proxy=<proxy> --build-arg https_proxy=<proxy> . -t <image_name>

清理

清理没用的镜像

docker image prune

它支持的子命令有:

  • -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;
  • -f, --force:强制删除镜像文件,无需弹出提示确认;

docker 资源占用

docker stats # 连续输出状态
docker stats --no-stream # 只输出当前状态