1 安装 Docker
1.1 卸载旧版本 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
1.2 通过仓库安装
1.2.1 设置仓库
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
1.2.2 安装 Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 设置无需 sudo 运行 docker
sudo gpasswd -a $USER docker
newgrp docker
1.3 安装 NVIDIA Container Toolkit
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
# 验证是否安装成功
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
1.3 配置阿里云镜像加速
使用阿里云-容器镜像服务-镜像加速器
2 Docker 常用命令
2.1 帮助命令
# 查看 Docker 的版本信息
docker version
# 查看 Docker 的系统信息,包括镜像和容器数量
docker info
# 帮助命令
docker COMMAND --help
2.2 镜像命令
# 查看所有镜像
docker images
# 镜像搜索
docker search mysql
# 下载镜像,默认 tag 为 latest
docker pull mysql
# 删除镜像
docker rmi -f 97cca2bac989
# 删除全部镜像
docker rmi -f $(docker images --aq)
2.3 容器命令
# 运行容器
docker run [可选参数] [镜像名]
# 参数说明
--name="name" 容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
-P 随机指定端口
--gpus 使用 GPU
# 退出容器
exit 退出并停止容器
<C+p+q> 退出但不停止容器
# 列出正运行的容器
docker ps
# 参数说明
-a 列出所有运行历史记录
-n=? 列出最近 n 个运行记录
-q 只显示容器编号
# 删除容器
docker rm [容器id] 不能删除正在运行的容器
docker rm -f $(docker ps -aq) 强制删除所有容器
docker ps -a -q | xargs docker rm
# 操作容器
docker start [容器id] 启动容器
docker restart [容器id] 重启容器
docker stop [容器id] 停止当前正在运行的容器
docker kill [容器id] 强制停止当前容器
2.4 常用其他命令
# 后台启动容器
docker run -d [镜像名]
# 此时 Docker 容器使用后台运行,就必须要有一个前台进程,如果 Docker 发现自己没有提供服务,就会自动停止
# 查看日志
docker logs [可选参数] [容器id]
# 查看容器内进程
docker top [容器id]
# 查看镜像元数据
docker inspect [容器或镜像]
# 进入当前正在进行的容器
docker exec -it [容器id] /bin/bash 开启一个新终端
docker attach [容器id] 进入当前正在进行的终端
# 从容器内拷贝文件到主机
docker cp [容器id]:[容器路径] [主机路径]
# 提交容器成为新的副本
docker commit -m="描述信息" -a="作者" [容器id] [目标镜像名]:[标签名]
3 数据卷使用
数据卷是容器之间数据共享的技术,使得 Docker 容器与本地双向绑定,数据同步。以此可以进行容器的持久化和同步操作。
3.1 挂载命令
# 即使容器处在停止状态,数据的双向同步依旧进行
docker run -it -v [主机路径]:[容器路径]
[容器路径]
[名称]:[容器路径]
3.2 拓展
# 设置容器权限
docker run -it -v [主机路径]:[容器路径]:ro 只读
docker run -it -v [主机路径]:[容器路径]:rw 读写(默认)
4 Dockerfile 文件
DockerFile 是 Docker 镜像的构建文件。
4.1 基础知识
- 每个保留关键字都必须是大写字母
- 指令从上到下顺序执行
- “#” 表示注释
- 每一个指令都会创建新的镜像层
4.2 Dockerfile 命令
FROM # 基础镜像,是构建的起点
MAINTAINER # 镜像作者,姓名 + 邮箱
RUN # 镜像构建时运行的命令
ADD # 添加文件内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 指定暴露端口
CMD # 指定容器启动时运行的命令,只有最后一个生效,可被替代
ENTRYPOINT # 指定容器启动时运行的命令,可以追加命令
ONBUILD # 被继承时,会出发此命令
COPY # 将文件拷贝到镜像中
ENV # 构建时设置环境变量
Dockerfile 是官方命名,默认值。
5 发布镜像
# 登录命令
docker login
# 修改 docker 镜像名称,然后推送镜像
docker tag [原镜像] [账户名]/[镜像名]:[版本号]
docker push [账户名]/[镜像名]:[版本号]
Dockerfile 是官方命名,默认值。
5 发布镜像
# 登录命令
docker login
# 修改 docker 镜像名称,然后推送镜像
docker tag [原镜像] [账户名]/[镜像名]:[版本号]
docker push [账户名]/[镜像名]:[版本号]