70

Docker常用操作

批量删除 <none> 镜像

docker rmi $(docker images |grep 'none'|awk '{print $3}')

批量删除包含 container-name 关键词的容器

docker rm $(docker ps -a |grep 'container-name'|awk '{print $1}')

释放docker占用空间

docker volume prune

查看容器信息,启动命令等

# 查找容器全部新
docker inspect <容器名>

# 查看入口点
docker inspect -f "{{.Config.Entrypoint}}" <容器名>

# 查看网络名称
docker inspect --format '{{json .NetworkSettings.Networks}}' <容器名>
128

Docker程序配置代理

dockerd是Docker守护进程,负责管理和运行容器。当我们使用docker pull命令从Docker镜像仓库中拉取镜像时,实际上是由dockerd进程执行的。

要为dockerd设置代理,我们需要进行以下步骤:

  • 创建代理配置文件夹:首先,我们需要创建一个名为 /etc/systemd/system/docker.service.d 的文件夹,用于存放Docker服务的配置文件(.conf)
sudo mkdir -p /etc/systemd/system/docker.service.d
  • 创建代理配置文件:然后,我们需要在上述文件夹中创建一个名为proxy.conf的文件,用于配置代理设置
sudo vi /etc/systemd/system/docker.service.d/proxy.conf

加入如下内容:

[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"
  • 生效配置更改:保存并关闭文件后,我们需要重新加载systemd守护进程的配置,并重启Docker服务,以使代理配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 查看dockerd的环境变量配置
sudo systemctl show --property=Environment docker

现在可以使用指定的代理进行网络请求,包括从Docker镜像仓库中拉取镜像

参考文章:docker-ce代理

201

Ubuntu22.04 DockerCE 容器内使用GPU

注意只有DockerCE版本才能使用GPU
如果教程无法使用了,请参考官方地址:nvidia-container-toolkit

安装nvidia软件源

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

or

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update

安装

sudo apt install nvidia-container-toolkit

检查是否成功

sudo which nvidia-container-runtime-hook

如果找到nvidia-container-runtime-hook则安装成功了

重启Docker

sudo systemctl restart docker

测试使用

docker run --gpus all nvidia/cuda:latest nvidia-smi

显卡监控

docker run -d --gpus all -p 9200:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.3.5-3.4.0-ubuntu22.04
392

清理Docker占用空间

在Linux上,当删除Docker容器后,它们占用的磁盘空间并不会立即释放。这是因为Docker使用了一种称为"Copy-on-Write"的机制,即在删除容器时,底层的镜像和文件系统层仍然存在于磁盘上。

清理未使用的镜像

这将删除未使用的镜像,包括已删除的容器的基础镜像

docker image prune -a

清理Docker卷(Volumes)

这将删除未使用的Docker卷,以释放磁盘空间

docker volume prune

清理Docker网络(Networks)

这将删除未使用的Docker网络,以释放磁盘空间

docker network prune
498

Ubuntu中安装Docker-CE

适用于 Ubuntu 20.04 22.04

卸载原版本

安装docker-ce社区版前,先卸载docker-desktop等原有版本

apt remove docker-desktop

apt autoremove

安装依赖包

让apt支持https