Docker 的基本命令和 Dockerfile 的指令

港控/mmm° 2022-06-08 11:38 281阅读 0赞

1. 基本命令

  1. docker --version
  2. 查看docker的版本信息
  3. docker info
  4. 查看docker的基本信息
  5. docker images
  6. 查看docker的本地镜像
  7. docker ps
  8. 查看正在运行的容器
  9. docker ps -a
  10. 查看所有的容器(包括未运行的)
  11. docker login
  12. 登录Docker Hub的账号,以便从Docker Hub下载或上传镜像。
  13. 如果不登录账号,pullpush时,可能报错:net/http: TLS handshake timeout
  14. docker logout
  15. 退出登录
  16. docker build -t <image-name> .
  17. 根据 Dockerfile 的内容创建镜像,并给镜像命名。
  18. docker run -p 4000:80 <image-name>
  19. 运行容器,本地主机的4000端口映射到容器的80端口。
  20. docker run -d -p 4000:80 <image-name>
  21. 后台运行容器。
  22. docker stop <hash>
  23. 关闭指定的容器,<hash>为容器的ID
  24. docker kill <hash>
  25. 强制关闭指定的容器。
  26. docker rm <hash>
  27. 删除指定的容器。
  28. docker rm $(docker ps -a -q)
  29. 删除所有的容器。(在 Windows 中,需在 Git Bash Bash for Windows 中执行该 Linux 命令)
  30. docker rmi <image-name>
  31. 删除指定的镜像。
  32. docker rmi $(docker images -q)
  33. 删除所有的镜像。(在 Windows 中,需在 Git Bash Bash for Windows 中执行该 Linux 命令)
  34. docker tag <image-name> <username>/<repository-name>:<tag-name>
  35. 给镜像打标签,以便上传镜像。
  36. docker push <username>/<repository-name>:<tag-name>
  37. 上传镜像。
  38. docker run <username>/<repository-name>:<tag-name>
  39. 运行镜像。
  40. docker pull <image-name>
  41. 下载镜像。

2. Dockerfile

Dockerfile 是一个文本文件,该文件的内容是创建镜像和启动容器时相关的指令。

Dockerfile 中以 # 号开头的行表示注释。

Docker 可以通过 docker build 命令根据 Dockerfile 的内容来创建镜像。

这里,先介绍 Dockerfile 中常用的指令选项。

2.1 FROM

语法:FROM

用 FROM 指定构建镜像的基础源镜像(父镜像),如果本地没有指定的镜像,则会自动从 Docker 的公共库 pull 镜像下来。

FROM 必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从FROM语句开始。FROM可以在一个 Dockerfile 中出现多次,如果有需求在一个 Dockerfile 中创建多个镜像。如果FROM语句没有指定镜像标签,则默认使用latest标签。

2.2 MAINTAINER

语法:MAINTAINER

指定创建镜像的用户。

2.3 WORKDIR

语法:WORKDIR

为后面的RUN、CMD、ENTRYPOINT等指令,配置当前的工作目录。

可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。

  1. WORKDIR /a
  2. WORKDIR b
  3. WORKDIR c
  4. RUN pwd
  5. # 最终路径是/a/b/c

WORKDIR指令可以在ENV设置变量之后调用环境变量。

  1. ENV DIRPATH /path
  2. WORKDIR $DIRPATH/$DIRNAME
  3. # 最终路径是 /path/$DIRNAME

2.4 ADD

语法:ADD

将文件(支持远程URL格式)拷贝到容器指定的路径中(支持通过 Go 的正则模糊匹配)。

可以是文件或者目录,但必须是 Dockerfile 所在路径的相对路径。如果是文件,表示拷贝文件本身;如果是目录,只会拷贝该目录中的所有文件(不包括目录本身)。

必须是绝对路径,如果不存在,就会自动创建。

  1. ADD . /app
  2. # 将Dockerfile文件所在目录中的所有文件,拷贝至/app目录

2.5 RUN

语法:RUN

每条RUN指令将在当前镜像基础上执行指定的命令,并提交为新的镜像,后续的RUN都以之前RUN提交后的镜像为基础。

镜像是分层的,可以通过一个镜像的任何一个历史提交点来创建,类似源码的版本控制。

RUN产生的缓存在下一次构建镜像时默认不会失效,就会被重用,但可以通过–no-cache选项禁用缓存,即docker build —no-cache。

2.6 EXPOSE

语法:EXPOSE […]

指定docker容器对外开放的端口,可同时指定多个端口。

  1. EXPOSE 80
  2. # 指定容器的端口为80

2.7 ENV

语法: ENV

定义环境变量。

会被后续的RUN指令使用,并在容器运行时保留。

  1. ENV NAME World
  2. # 定义环境变量$NAME的值为World

2.8 CMD

语法:CMD

CMD 指令在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。

CMD 的作用是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。

注意:CMD 在启动容器的时候执行,build(创建镜像)时不执行;而 RUN 只是在创建镜像时执行,镜像构建完成之后,启动容器就与RUN无关了,不要混淆两者的用法。

2.9 COPY

COPY 的用法与 ADD 相同,只不过COPY不支持远程的URL。

2.10 VOLUME

语法:VOLUME

创建一个可以从本地主机或其他容器挂载的挂载点。

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读