用APT安装Docker
Docker官方文档链接 https://docs.docker.com/engine/install/ubuntu/

总结出快速安装,取代了原来的已被弃用的GPG-key方式,解决了无法安装问题。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
用DEB包安装Docker
下载安装包,https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/
sudo dpkg -i nvidia-container-toolkit_1.9.0-1_amd64.deb
sudo dpkg -i libnvidia-container-tools_1.9.0-1_amd64.deb
sudo dpkg -i libnvidia-container1_1.9.0-1_amd64.deb
sudo dpkg -i libnvidia-container-tools_1.9.0-1_amd64.deb
sudo dpkg -i nvidia-container-toolkit_1.9.0-1_amd64.deb
sudo dpkg -i nvidia-docker2_2.10.0-1_all.deb
安装后,检查Docker服务是否已运行。
sudo systemctl status docker
# 若显示没有该服务
sudo systemctl start docker
hello-world测试,
sudo docker run hello-world
快速入门
创建镜像
新建test_x.dockerfile文件
Dockerfile基本语法
FROM,指定初始系统
RUN,镜像内执行命令
COPY,镜像内复制
ENV,设置镜像内环境变量
ARG,Dockerfile内的变量
FROM ubuntu:22.04
MAINTAINER csu
RUN apt-get update
构建镜像
在Dockerfile所在路径下,命令为
docker build .
可加参数,-t <镜像标签> -f <path/to/Dockerfile>
常用命令
- 重启服务
sudo systemctl daemon-reloadsudo systemctl restart docker - 启动
docker run -it <镜像ID> - 查看所有镜像
docker images或docker image ls - 提交镜像
docker commit -m "commit message" -a "zhangpeike" <镜像ID> <name:tag> - 复制文件
docker cp <本地文件> <镜像ID>:<路径> - 新终端进入运行的容器,docker exec [OPTIONS] CONTAINER COMMAND [ARG…]:
docker exec -it 9df1cd89a8fe /bin/bash新开一个正在运行容器的终端docker exec -it <容器ID> /bin/bash - 前端打开运行中的镜像
docker attach <镜像ID> - 保存镜像
docker save <镜像ID> > xxx.tar - 导出镜像
docker export <镜像ID> > xxx.tardocker import 新镜像命名 < xxx.tar,注意导出不能保存镜像的历史信息。 - 加载镜像
docker load -i xxx.tar - 本地与镜像路径的映射
docker run -v /local_path:/docker_path - 设置共享内存大小:
docker --shm-size="16g" - 查看commit记录:
docker inspect <镜像ID>
重启服务命令无效,Failed to start Docker Application Container Engine,
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo rm -rf /var/run/docker.sock
sudo systemctl restart docker
Docker使用常见问题及解决
- 编译Dockerfile遇错
Get https://registry-1.docker.io/v2/: authenticationrequire
由于网络代理需要
在/etc/systemd/system/docker.service.d/下新建文件docker-proxy.conf,
[Service]
Environment="HTTP_PROXY=http://公司账号:密码@proxy.xxx.com:8080"
Environment="HTTPS_PROXY=http://公司账号:密码@proxy.xxx.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"
或新建http_proxy.conf,
[Service]
Environment="HTTP_PROXY=192.168.2.194:7890"
Environment="HTTPS_PROXY=192.168.2.194:7890"
- no such host问题
Get https://registry-1.docker.io/v2/: proxyconnect tcp: dial tcp: lookup http: no such host
推断为无法访问docker镜像官网,设置镜像加速器地址,如国内云厂商的地址,修改文件/etc/docker/daemon.json
{
"registry-mirrors": [
"https://xxx.mirror.x.com"
]
}
重启daemon和docker
systemctl daemon-reload && systemctl restart docker
- 编译Dockerfile,
RUN apt-get install失败
容器需要代理方可上网,主机上新建或编辑~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://账号:密码@proxy.x.com:8080",
"httpsProxy": "http://账号:密码@proxy.x.com:8080",
"noProxy": "localhost,127.0.0.1"
}
}
}
设置后镜像中apt-get install出现Failed to fetch http...,软件版本问题,改为apt-get install --fix-missing
如何在docker镜像中使用GPU
安装Nvidia-docker
官方链接 https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
比旧版解决了GPGkey报错问题。
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
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
配置与使用
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 免除sudo,自动root运行docker
nvidia-ctk runtime configure --runtime=docker --config=$HOME/.config/docker/daemon.json
systemctl --user restart docker
sudo nvidia-ctk config --set nvidia-container-cli.no-cgroups --in-place
用hello-world测试
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
顺利的结果,能看到nvidia-smi打印的显卡列表。

本文详细介绍了如何在Ubuntu系统上安装Docker,包括设置Docker源,安装Nvidia相关工具,处理网络代理和镜像加速,以及解决Rviz运行时错误。涵盖了从基础配置到高级问题的解决方案。
4587

被折叠的 条评论
为什么被折叠?



