docker
docker
版本
- docker-ce(Docker 社区版):Docker Community Edition(CE)
- docker-ee(Docker 企业版):Docker Enterprise Edition(EE)
组成
- Docker Engine:完整的容器管理系统,通常包含以下几个主要部分:
-
- Docker Daemon:管理高层容器操作,负责解析用户的请求并通过调用
containerd
来管理容器的生命周期。
- Docker Daemon:管理高层容器操作,负责解析用户的请求并通过调用
-
- docker-cil:与用户交互的命令行工具,用户通过它发送命令(如
pull
、build
、run
、exec
等)给Docker Daemon
。
- docker-cil:与用户交互的命令行工具,用户通过它发送命令(如
-
- containerd:管理和运行容器的守护进程,负责容器的生命周期管理、镜像拉取、存储管理以及网络配置。它调用
runc
来执行容器的启动和管理操作。
- containerd:管理和运行容器的守护进程,负责容器的生命周期管理、镜像拉取、存储管理以及网络配置。它调用
-
- runc:容器的低级运行时,负责实际的容器创建和运行。利用
libcontainer
(一个基于 Go 语言的库)来实现容器的创建和管理。
- runc:容器的低级运行时,负责实际的容器创建和运行。利用
- containerd.io:提供对
containerd
的分发和安装,管理容器运行时的环境,作为Docker
和Kubernetes
等容器平台的基础组件,提供容器的生命周期管理功能。 - docker-buildx-plugin:提供对多平台构建支持的功能,允许用户在不同的架构和操作系统上构建容器镜像,增强构建功能(如构建缓存和分层缓存)。
- docker-compose-plugin:提供类似
docker-compose
的功能,允许用户通过docker-compose
命令定义和管理多容器 Docker 应用。
安装
在线安装
## ubuntu
# 卸载旧版本 docker
sudo apt-get remove docker docker-engine docker.io containerd runc
# Docker 仓库设置
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# Docker 官方 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 验证 fingerprint
sudo apt-key fingerprint 0EBFCD88
# 添加 Docker CE 的 stable 版本的仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# Docker CE 最新版本安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 存在多个 Docker 仓库时,会安装最新版本的 docker-ce
## Docker CE 指定版本安装
# 列出仓库中所有的 Docker CE 版本
apt-cache madison docker-ce
docker-ce | 5:19.03.5~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:19.03.4~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.3~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.2~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
sudo apt-get install \
docker-ce=18.09.1~3-0~ubuntu-xenial \
docker-ce-cli=18.09.1~3-0~ubuntu-xenial \
containerd.io
离线安装
离线安装包:https://download.docker.com/(/dists/xenial/pool/stable)
# ubuntu
sudo dpkg -i docker-ce_<version>.deb docker-ce-cli_<version>.deb containerd.io_<version>.deb
# 查看 Docker 状态
sudo service docker status
sudo docker info
修改存储路径
默认情况下,docker 镜像的默认存储路径是 /var/lib/docker,这相当于直接挂载系统目录下,而一般在搭系统时,这个区都不会太大,所以如果长期使用 docker 开发应用,就需要把默认的路径更改到需要路径下或外挂存储。
方法1:修改 dockerd 配置文件
# 查看默认存储路径
docker info | grep "Root Dir"
Docker Root Dir: /var/lib/docker
# 创建存储目录
mkdir -p /data/docker
# 修改 docker 的 systemd 的 docker.service 的配置文件
vim /usr/lib/systemd/system/docker.service
# 注释原先的
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 新增
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph=/data/docker
# 重启 docker 服务
systemctl daemon-reload
systemctl restart docker
# 确认
docker info | grep "Root Dir"
Docker Root Dir: /data/docker
方法2:修改 docker daemon 配置文件
# /etc/docker/daemon.json
{
"data-root": "/data/docker"
}
设置镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fird1mfg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
设置代理
参考连接:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
# 创建配置文件
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://wwwproxy.mysite.com:80"
Environment="HTTPS_PROXY=http://wwwproxy.mysite.com:80"
# 重启
systemctl daemon-reload
systemctl restart docker.service
# 验证
systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://wwwproxy.mysite.com:80 HTTPS_PROXY=http://wwwproxy.mysite.com:80
修改运行中的容器
示例1:添加挂载路径
# 停止所有 docker 容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
# 停止 docker 服务
service docker stop
# 修改容器的配置信息
### /var/lib/docker/containers/<hash>/hostconfig.json
# 修改前
"Binds": ["/opt/jenkins:/var/jenkins_home"]
# 修改后
"Binds": ["/opt/jenkins:/var/jenkins_home", "/opt/data:/opt/data"]
### /var/lib/docker/containers/<hash>/config.v2.json
# 修改前
"MountPoints": {
"/var/jenkins_home": {
"Source": "/opt/jenkins",
"Destination": "/var/jenkins_home",
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "/opt/jenkins",
"Target": "/var/jenkins_home"
},
"SkipMountpointCreation": false
}
}
# 修改后
"MountPoints": {
"/var/jenkins_home": {
"Source": "/opt/jenkins",
"Destination": "/var/jenkins_home",
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "/opt/jenkins",
"Target": "/var/jenkins_home"
},
"SkipMountpointCreation": false
},
"/opt/data": {
"Source": "/opt/data",
"Destination": "/opt/data",
"RW": true,
"Propagation": "rprivate"
}
}
# 启动 docker 服务
service docker start
NGC 设置
参考链接:https://ngc.nvidia.com/setup/installers/cli
- 获取 API Key
-
登录账户,选择 setup,点击 Generate API Key, 在页面最下面生成 Key, 复制
- 安装 NGC
wget --content-disposition https://ngc.nvidia.com/downloads/ngccli_linux.zip && unzip ngccli_linux.zip && chmod u+x ngc-cli/ngc
find ngc-cli/ -type f -exec md5sum {} + | LC_ALL=C sort | md5sum -c ngc-cli.md5
sudo ln -s $(pwd)/ngc-cli/ngc /usr/local/bin/ngc
ngc config set
# 填写 API Key
# 卸载 dirname `which ngc` | xargs rm -r
nvidia-docker
组件 | 功能 | 最低 Docker 版本要求 |
---|---|---|
nvidia-docker | 旧版工具包,2014 年发布,依赖于 Docker 插件模型,主要通过 nvidia-docker 命令和 nvidia-docker-plugin 来实现 GPU 支持。 | Docker 1.12 或更高版本 |
nvidia-docker2 | 新版工具包,2018 年 12 月发布,基于 nvidia-container-runtime ,不再依赖插件,深度集成到 Docker 中。 | Docker 1.13 或更高版本,建议 Docker 19.03 或更高版本 |
nvidia-container-toolkit | 独立工具包,2019 年发布,为 Docker 和 Kubernetes 等平台提供兼容的GPU支持。包含 nvidia-container-runtime 。 | Docker 1.13 或更高版本,建议 Docker 19.03 或更高版本 |
产品组件
组件名称 | 所属产品 | 用途 |
---|---|---|
nvidia-docker | nvidia-docker | 最早的 NVIDIA GPU 容器工具,提供基础 GPU 支持,现已被 nvidia-docker2 替代。 |
nvidia-docker-plugin | nvidia-docker | nvidia-docker 的核心插件,负责 GPU 资源挂载和环境变量设置,现已被 nvidia-docker2 替代。 |
nvidia-container-runtime | nvidia-docker2 | GPU 容器的运行时,替代 Docker 默认的 runc ,实现 GPU 容器的环境配置和资源管理。 |
nvidia-docker2 | nvidia-docker2 | Docker GPU 支持插件,简化 GPU 容器配置和启动,整合了 nvidia-container-runtime 。 |
libnvidia-container1 | nvidia-container-toolkit | 核心库,提供 GPU 隔离和管理功能,所有 GPU 容器工具的基础组件。 |
libnvidia-container-tools | nvidia-container-toolkit | 命令行工具,支持 GPU 容器的配置、调试和管理。 |
nvidia-container-toolkit | nvidia-container-toolkit | 包含 GPU 支持配置和工具,负责与 Docker 集成,提供 GPU 容器环境设置。 |
nvidia-container-toolkit-base | nvidia-container-toolkit | 提供 nvidia-container-toolkit 的基础库,包含基础的配置和依赖项支持。 |
libnvidia-container-devel | nvidia-container-toolkit | 开发库,包含头文件,用于开发者集成 GPU 支持。 |
libnvidia-container-static | nvidia-container-toolkit | 静态库,用于开发者在编译时静态链接 libnvidia-container 。 |
安装
nvidia-docker
依赖项:
- nvidia-docker
- nvidia-docker-plugin
离线安装
版本 | docker版本要求 | NVIDIA Driver版本要求 | 备注 |
---|---|---|---|
1.0.0 | >=1.10 | >= 367.57 | nvidia-docker_<version>.deb 和nvidia-docker_<version>.rpm 文件中包含nvidia-docker-plugin 。 |
1.0.1 | >=1.10 | >= 367.57 | nvidia-docker_<version>.deb 和nvidia-docker_<version>.rpm 文件中包含nvidia-docker-plugin 。 |
# Ubuntu
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
# CentOS
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker-1.0.1-1.x86_64.rpm
sudo rpm -i /tmp/nvidia-docker*.rpm && rm /tmp/nvidia-docker*.rpm
sudo systemctl start nvidia-docker
# Other
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1_amd64.tar.xz
sudo tar --strip-components=1 -C /usr/bin -xvf /tmp/nvidia-docker*.tar.xz && rm /tmp/nvidia-docker*.tar.xz
# Run nvidia-docker-plugin
sudo -b nohup nvidia-docker-plugin > /tmp/nvidia-docker.log
## Test nvidia-smi
nvidia-docker run --rm nvidia/cuda nvidia-smi
nvidia-docker2
各版本依赖项:
nvidia-docker2 | docker版本要求 | NVIDIA Driver版本要求 | libnvidia-container1 | libnvidia-container-tools | nvidia-container-runtime | nvidia-container-toolkit |
---|---|---|---|---|---|---|
2.0.0 | >= 1.12 | >= 384.81 | 1.0.0 | 1.0.0 | 2.0.0 | |
2.1.0 | >= 1.12 | >= 384.81 | 1.0.1 | 1.0.1 | 2.0.0 | |
2.2.0 | >= 1.12 | >= 384.81 | 1.1.0 | 1.1.0 | 2.1.0 | |
2.3.0 | >= 1.12 | >= 396.26 | 1.2.0 | 1.2.0 | 2.2.0 | |
2.4.0 | >= 18.09 | >= 410.48 | 1.2.0 | 1.2.0 | 2.3.0 | |
2.5.0 | >= 18.09 | >= 410.48 | 1.2.0 | 1.2.0 | 2.3.0 | |
2.6.0 | >= 19.03 | >= 410.48 | 1.3.0 | 1.3.0 | 3.4.0 | |
2.7.0 | >= 19.03 | >= 418.87 | 1.3.3 | 1.3.3 | 3.6.0 | 1.6.0 |
2.8.0 | >= 19.03 | >= 440.33 | 1.3.4 | 1.3.4 | 3.7.0 | 1.7.0 |
2.9.0 | >= 19.03 | >= 450.51 | 1.4.0 | 1.4.0 | 3.8.0 | 1.8.0 |
2.9.1 | >= 19.03 | >= 450.51 | 1.4.1 | 1.4.1 | 3.8.1 | 1.8.1 |
2.10.0 | >= 20.10 | >= 460.32 | 1.5.0 | 1.5.0 | 3.9.0 | 1.9.0 |
2.11.0 | >= 20.10 | >= 465.19 | 1.5.1 | 1.5.1 | 3.10.0 3.11.0 | 1.10.0 1.11.0 |
2.12.0 | >= 20.10 | >= 470.57 | 1.6.0 | 1.6.0 | 3.12.0 | 1.12.0 |
2.13.0 | >= 20.10 | >= 495.29 | 1.7.0 | 1.7.0 | 3.13.0 | 1.13.0 |
2.14.0 | >= 20.10 | >= 510.39 | 1.14.0 | 3.14.0 | 1.14.0 |
1. 从版本 2.7.0 开始,nvidia-docker2 包直接依赖 nvidia-container-toolkit。不再需要安装 nvidia-container-runtime,其功能已经被整合进 nvidia-container-toolkit,不再是单独的依赖项。
2. 1.14.0 是最后一个包含 nvidia-container-runtime 和 nvidia-docker2 包的版本。从此版本开始,所有必需的功能都已集成到 nvidia-container-toolkit 包中。这意味着以后不再需要单独安装 nvidia-container-runtime 或 nvidia-docker2。
在线安装
# Ubuntu
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 nvidia-docker2
#sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
离线安装
sudo dpkg -i libnvidia-container1_<version>.deb
sudo dpkg -i libnvidia-container-tools_<version>.deb
sudo dpkg -i nvidia-container-runtime_<version>.deb
sudo dpkg -i nvidia-docker2_<version>.deb
sudo systemctl restart docker
nvidia-container-toolkit
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/release-notes.html
在线安装
# Apt
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
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# Yum or Dnf
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum install -y nvidia-container-toolkit
# Zypper
sudo zypper ar https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
sudo zypper --gpg-auto-import-keys install -y nvidia-container-toolkit
离线安装
各版本包含内容:
nvidia-container-toolkit | docker版本要求 | NVIDIA Driver版本要求 | libnvidia-container1 | libnvidia-container-tools | nvidia-container-runtime | nvidia-docker2 |
---|---|---|---|---|---|---|
1.0.0 | >= 1.12 | >= 384.81 | 1.0.0 | 1.0.0 | ||
1.1.0 | >= 1.12 | >= 384.81 | 1.1.0 | 1.1.0 | ||
1.2.0 | >= 1.12 | >= 396.44 | 1.2.0 | 1.2.0 | ||
1.3.0 | >= 18.09 | >= 410.48 | 1.2.0 | 1.2.0 | ||
1.4.0 | >= 18.09 | >= 410.48 | 1.3.0 | 1.3.0 | ||
1.5.0 | >= 18.09 | >= 418.40 | 1.3.3 | 1.3.3 | ||
1.6.0 | >= 19.03 | >= 418.40 | 1.6.0 | 1.6.0 | ||
1.7.0 | >= 19.03 | >= 440.33 | 1.7.0 | 1.7.0 | ||
1.8.0 | >= 19.03 | >= 450.51 | 1.8.0 | 1.8.0 | ||
1.8.1 | >= 19.03 | >= 450.51 | 1.8.1 | 1.8.1 | ||
1.9.0 | >= 19.03 | >= 460.32 | 1.9.0 | 1.9.0 | ||
1.10.0 | >= 19.03 | >= 465.19 | 1.10.0 | 1.10.0 | ||
1.11.0 | >= 20.10 | >= 470.57 | 1.11.0 | 1.11.0 | ||
1.12.0 | >= 20.10 | >= 470.57 | 1.12.0 | 1.12.0 | ||
1.13.0 | >= 20.10 | >= 495.29 | 1.13.0 | 1.13.0 | ||
1.13.1 | >= 20.10 | >= 495.29 | 1.13.1 | 1.13.1 | ||
1.13.2 | >= 20.10 | >= 495.29 | 1.13.2 | 1.13.2 | ||
1.13.3 | >= 20.10 | >= 495.29 | 1.13.3 | 1.13.3 | ||
1.13.4 | >= 20.10 | >= 495.29 | 1.13.4 | 1.13.4 | ||
1.13.5 | >= 20.10 | >= 495.29 | 1.13.5 | 1.13.5 | ||
1.14.0 | >= 20.10 | >= 510.39 | 1.14.0 | 3.14.0 | 2.14.0 | |
1.14.1 | >= 20.10 | >= 510.39 | 1.14.1 | 1.14.1 | ||
1.14.2 | >= 20.10 | >= 510.39 | 1.14.2 | 1.14.2 | ||
1.14.3 | >= 20.10 | >= 510.39 | 1.14.3 | 1.14.3 | ||
1.14.4 | >= 20.10 | >= 510.39 | 1.14.4 | 1.14.4 | ||
1.14.5 | >= 20.10 | >= 510.39 | 1.14.5 | 1.14.5 | ||
1.14.6 | >= 20.10 | >= 510.39 | 1.14.6 | 1.14.6 | ||
1.15.0 | >= 20.10 | >= 515.43 | 1.15.0 | 1.15.0 | ||
1.16.0 | >= 20.10 | >= 520.56 | 1.16.0 | 1.16.0 | ||
1.16.1 | >= 20.10 | >= 520.56 | 1.16.1 | 1.16.1 | ||
1.16.2 | >= 20.10 | >= 520.56 | 1.16.2 | 1.16.2 | ||
1.17.0 | >= 20.10 | >= 525.60 | 1.17.0 | 1.17.0 |
# 依次安装
sudo dpkg -i libnvidia-container1_<version>.deb
sudo dpkg -i libnvidia-container-tools_<version>.deb
sudo dpkg -i nvidia-container-runtime_<version>.deb
sudo dpkg -i nvidia-container-toolkit-base_<version>.deb
sudo dpkg -i nvidia-container-toolkit_<version>.deb
# 设定 Docker 使用 NVIDIA Driver
sudo nvidia-ctk runtime configure — runtime=docker
# 重启 Docker
sudo systemctl restart docker
docker-compose
模板
version: "3"
services:
# 服务名
triton-server-20.09:
# 镜像标签
image: nvcr.io/nvidia/tritonserver:20.09-py3
# 重启策略
restart: always
# 网络
# network_mode: "bridge"
networks:
front-tier:
ipv4_address: 172.16.238.10
ipv6_address: 2001:3984:3989::10
# 容器名称
container_name: triton-server-20.09
# 主机名
# hostname: "leinao_devel"
# env_file:
# - .env/xq_cross_border
working_dir: /workspace
# 容器的标准输入保持打开。相当于 docker run 的 -i
# stdin_open: true
# 分配一个虚拟终端并绑定到容器的标准输入上。相当于 docker run 的 -t
# tty: true
# 共享内存大小
shm_size: 1gb
# 限制容器使用的系统资源
ulimits:
# 堆栈的最大值
stack: 67108864
# 获取主机root权限
privileged: true
# 容器中添加的功能
cap_add:
- SYS_PTRACE
security_opt:
- seccomp:unconfined
- apparmor:unconfined
ports:
- "8000:8000"
- "8001:8001"
- "8002:8002"
environment:
# - NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
volumes:
- /home/zkln/workspace/triton-r20.09/model_repository:/workspace/model_repository
command:
- tritonserver
- --model-repository=/workspace/model_repository
# - /bin/bash
# docker-compose > 1.28.0
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
driver: nvidia
device_ids: ["1"]
networks:
front-tier:
ipam:
driver: default
config:
- subnet: "172.16.238.0/24"
- subnet: "2001:3984:3989::/64"
restart
:容器重启策略。
"no"
:默认策略。任何情况下都不会重启。always
:始终重启容器,直到将其删除。on-failure
:如果退出代码指示错误,重启容器。unless-stopped
:无论如何退出代码都重启容器。容器停止或删除时停止重启。
shm_size
:容器允许的共享内存(Linux上的/dev/shm分区)的大小。单位b
(bytes),k
or kb
(kilo bytes),m
or mb
(mega bytes),g
or gb
(giga bytes)。
- 2b
- 1024kb
- 2048k
- 300m
- 1gb
privileged
:出于安全考虑,docker容器中默认的root用户只是相当于主机上的一个普通用户权限,不允许访问主机上的任何设备。使用该参数让容器获取主机root权限,允许容器访问连接到主机的所有设备(位于/dev文件夹下)。
cap_add
:为容器添加指定功能。
SYS_PTRACE
: 添加ptrace
能力。用于对进程进行调试或者进程注入。
security_opt
:覆盖容器的默认标签方案。
-
seccomp:unconfined
: 关闭seccomp profile功能。docker有Seccomp filtering功能,以伯克莱封包过滤器(Berkeley Packer Filter,缩写BPF)的方式允许用户对容器内的系统调用(syscall)做自定义的”allow”,”deny”,”trap”,”kill”,or “trace”操作,由于Seccomp filtering的限制,在默认配置下,会导致在使用GDB的时候run失败。 -
apparmor:unconfined
: 关闭apparmor
(Application Armor 内核安全模块)限制。
附:常见问题
-
python 提示错误 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
docker 中 python 代码的 print(“中文”) 出现错误,但宿主机不会出现该错误,如下:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-127: ordinal not in range(128)
原因:
因为 locale 的设置导致 shell 的stdin/stdout/stderr 的默认编码为 ascii,当用ascii编码去解释 python3 默认 unicode 编码的时候,则会有问题
解决方法:
python3 的解决方式是 容器在初始化时候 需要设置 shell 的 stdin/stdout/stderr 的默认编码方式为 utf-8, 需要重启容器
# docker run 方式 docker run -e PYTHONIOENCODING=utf-8 m_container:latest my-python3 # docker-compose 方式 environment: - PYTHONIOENCODING=utf-8
-
docker: Error response from daemon: Unknown runtime specified nvidia
解决方法:
# 重启 docker 服务 sudo systemctl daemon-reload sudo systemctl restart docker
-
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: signal: segmentation fault (core dumped), stdout: , stderr:: unknown.
解决方法:
# 降级 sudo apt-get install nvidia-docker2=2.4.0-1 # 重启 docker 服务 sudo systemctl daemon-reload sudo systemctl restart docker