Docker容器常用操作指令总结4

170 阅读2分钟

引言

  • 本系列作为一个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
  • 不带序号的参数看业务需求配置