Skip to content

Docker

docker

构建

网路不好的情况下,先pull基础镜像,再build

常用命令

docker ps
docker stop <容器名或id>
docker exec -it <容器名或id> /bin/sh
 #进入shell
docker logs [容器ID或容器名]
docker logs -f [容器ID或容器名] #实时输出文件名

给docker服务设置代理 (docker pull时执行)

推荐的使用 systemddrop-in 文件来配置,因为它在大多数现代 Linux 发行版上是标准的做法,并且可以更好地控制 Docker 服务。

假设使用本地代理 127.0.0.1:7890,你需要将 http_proxyhttps_proxy 这两个环境变量指向它。

推荐方法:使用 Systemd Drop-in 文件 (适用于大多数 Linux)

这种方法通过为 Docker 服务设置环境变量来实现代理配置。

步骤 1: 创建配置目录

为 Docker 服务创建一个 systemd drop-in 目录:

Bash

sudo mkdir -p /etc/systemd/system/docker.service.d

步骤 2: 创建代理配置文件

创建一个名为 http-proxy.conf 的文件,并添加代理配置。

Bash

sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

文件内容 (http-proxy.conf):

Ini, TOML

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,::1"
  • HTTP_PROXY: 用于 HTTP 连接。

  • HTTPS_PROXY: 用于 HTTPS 连接(Docker Hub 使用 HTTPS)。注意: 即使代理是 HTTP 代理,也需要将 HTTPS_PROXY 设置为 http://127.0.0.1:7890,因为这是告诉 Docker daemon 通过这个代理转发 HTTPS 请求。

  • NO_PROXY: 排除不需要走代理的地址。127.0.0.1localhost 必须保留,以确保本地 Docker 通信不受影响。

步骤 3: 重新加载 systemd 配置并重启 Docker

应用更改并重启 Docker 服务:

Bash

sudo systemctl daemon-reload
sudo systemctl restart docker

步骤 4: 验证配置

检查配置是否已成功加载:

Bash

sudo systemctl show --property=Environment docker

你应该能看到输出中包含你设置的代理环境变量。


nvidia-docker

检查是否安装

docker info | grep -i nvidia

安装NVIDIA Docker

运行以下命令安装NVIDIA Docker:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

查询是否可以

docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi  

权限问题

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

方法一:将当前用户添加到 docker 组:

sudo usermod -aG docker $USER

然后注销并重新登录,或者重启系统以使更改生效。

2. 使用 sudo 运行 Docker 命令

如果你不想将用户添加到 docker 组,可以使用 sudo 来运行 Docker 命令:

docker compose

command not found: docker-compose

 sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
 sudo chmod +x /usr/local/bin/docker-compose  
 docker-compose --version  #理论上就可以输出了

或者用新的 docker compose (没有-)

Comments