引言
- 本系列作为一个dockers使用的总结,不是从讲解原理开始的故仅供使用的时候参考。
- 本文主要详细介绍了如何使用Dockerfile的方式来构建一个容器,以及相关的参数介绍和构建流程
补:参数-c的作用
docker run --name 容器名 --rm -it 容器来源镜像地址 bash -c "pip install nvitop -i https://pypi.tuna.tsinghua.edu.cn/simple && nvitop -o 0"
- 个人理解的话是将命令拆解成bash之前和之后两部分,前一部分是建立一个用完即删的容器(包含容器来源镜像地址),后一部分则是使用-c,且用bash执行容器中的文件,这里就不需要用
/bin/bash了,因为执行文件功能也可以让容器不销毁。- 关于GPU占用显示工具Nvitop
一般流程
Dockerfile
- Dockerfile文件是构造Docker容器的重要文件,里面包含了我们创建的容器的配置信息以及需要容器执行的命令,比如项目工程化的时候就可以把项目启动文件直接放进去,这样启动容器项目就自动运行了。
- 注意:Dockerfile文件的格式是固定的,如果格式不正确,则无法构造出Docker容器。
Docker镜像
- 通过Dockerfile文件构造出Docker镜像。
- 构造镜像的命令是
docker build,注意这个命令不在dockefile文件里,而是在同级目录执行。
开始构建
- 1: 指定使用的基础镜像,如Ubuntu,nvicat等等
- 例如:
FROM ubuntu:16.04
- 例如:
- 2: 指定作者(维护者)信息(可选)
MAINTAINER your_name
- 3: 安装需要的软件包
- 例如:
RUN pip install -i 安装包来源 --trusted-host 可信ip地址 numpy==1.21.1 torch==1.10.0 boto3==1.20.24 tqdm==4.27.0 regex==2021.10.23
- 例如:
- 4 添加本地文件到容器
ADD 本地文件 容器内路径/文件(当然也可以使用COPY)- 使用ADD的话tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget,但是COPY不会自动解压,注意甄别使用
- 5 添加工作路径
WORKDIR 容器内工作路径
- 6 容器启动后使用的命令(该命令只能由一条)
CMD 启动容器后的命令
- EXPOSE 指定于外界交互的端口(自行选择)
- ENV 设置环境变量
- ENTRYPOINT 和CMD类似用于输入容器启动后执行的命令,但是不同的是CMD的命令会被dockers run的时候添加命令覆盖,而该指令不会
- VOLUME 用于持久化目录,创建一个可以从本地主机或其他容器挂载的挂载点
- USER 指定运行容器的用户,不指定默认ROOT
- 不带序号的参数看业务需求配置