Docker commands和Dockerfile

Docker commands和Dockerfile

标签 : docker


  • Docker commands和Dockerfile

    • Docker commands
    • Dockerfile


本文主要对Docker commands和Dockerfile的相关知识进行整理

Docker commands

官网传送门:

首先,当然是配置命令自动补全,只需要把一个文件用curl下载copy到特定路径即可,具体操作参考Command-line Completion

其实docker有很完备的命令帮助提示,对哪个指令不清楚,只需要在后面加--help就能看到帮助说明。例如:

  • 输入docker --help可以看到所有可执行的命令。
  • 随便挑一个,比如run命令,则输入docker run --help又能看到run的相关帮助了。

常用命令:

  • 查看本地images:
docker images
  • 运行image
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
//i.e.
docker run image
docker run -it image /bin/bash

常用的一些参数:

  • --rm:container退出后自动删除
  • -i-t常常一起用,-it:以超级管理员权限打开一个命令行窗口
  • -d: 后台运行container
  • --name:给container命名
  • 查看当前container
docker ps -a
  • 删除所有状态的container
docker rm $(docker ps -a -q)
  • 通过另外的tty查看已经运行的容器
docker exec -it ${container_id} /bin/bash
  • 查看容器的信息
docker inspect ${container_id}

另外, 在以上指令中,容器名和容器的container_id都是可以使用的,如果用户没有指定容器名,docker会默认给每个容器分配一个比较友好的随机名称,像fervent_perlman,high_galileo等等

Dockerfile

官网传送门:

感觉文档里说了很全了,这里稍微提几个容易困惑的点

1.exec form vs shell form

CMDENTRYPOINT都涉及到着两种形式(CMD多一种完全作为参数的形式),例如:

  • CMD ["executable","param1","param2"](exec形式,推荐)
  • CMD command param1 param2 (shell形式)

至于两种形式的区别,官方的几点说明挺详细的,主要就是变量替换,脚本环境等方面有差别:

  • Note: If CMD is used to provide default arguments for the ENTRYPOINT instruction, both the CMD and ENTRYPOINT instructions should be specified with the JSON array format.
  • Note: The exec form is parsed as a JSON array, which means that you must use double-quotes (“) around words not single-quotes (‘).
  • Note: Unlike the shell form, the exec form does not invoke a command shell. This means that normal shell processing does not happen. For example, CMD [ “echo”, “HOME"]willnotdovariablesubstitutiononHOME. If you want shell processing then either use the shell form or execute a shell directly, for example: CMD [ “sh”, “-c”, “echo $HOME” ].

2.ENTRYPOINT vs CMD

读完官方的Understand how CMD and ENTRYPOINT interact,觉得这两者特别相似,对这两者有什么区别和联系还是有些困惑,阅读下面这篇文章:

Dockerfile: ENTRYPOINT vs CMD

简而言之,ENTRYPOINT更像一个写死的可执行指令,CMD更像默认的一个可选项。

一个image只做一个单一的用途,就像一个可执行的命令时,建议使用ENTRYPOINT,把CMD作为默认参数(第三种形式CMD ["param1","param2"] (as default parameters to ENTRYPOINT))。因为一般而言,ENTRYPOINT是不被覆盖的(除非在run时显式使用–entrypoit),而CMD是defaults的选项,从前文的run命令格式docker run [OPTIONS] IMAGE [COMMAND] [ARG...]可知,用户可以在运行images时输入自己的COMMAND来覆盖默认的CMD。

3.ADD vs COPY

这两个好像都是把东西从host拷贝到docker的container里,官方比较如下:

Although ADD and COPY are functionally similar, generally speaking, COPY is preferred. That’s because it’s more transparent than ADD. COPY only supports the basic copying of local files into the container, while ADD has some features (like local-only tar extraction and remote URL support) that are not immediately obvious. Consequently, the best use for ADD is local tar file auto-extraction into the image, as in ADD rootfs.tar.xz /.

简单来说,主要就两点区别:

  • COPY只能把本地文件拷贝到container里;ADD还支持从远程拷贝(remote URL support)
  • ADD可以自动解压本地压缩文件

官方建议用COPY(preferred)

参考链接

Reference - ADD or COPY

Stackoverflow - Docker COPY vs ADD


作者@brianway更多文章:个人网站 | CSDN | oschina

时间: 2024-07-29 22:27:48

Docker commands和Dockerfile的相关文章

docker技术剖析--dockerfile and registry(构建容器和私有仓库)

防伪码:梅须逊雪三分白,雪却输梅一段香 docker技术剖析--dockerfile and registry(构建容器和私有仓库) 一.根据Dockerfile构建出一个容器 1.Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile.

Docker(三):Dockerfile 命令详解

上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dockerfile 指令详解 1 FROM 指定基础镜像 FROM 指令用于指定其后构建新镜像所使用的基础镜像.FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像. FROM语法格式为: FROM <i

Docker容器管理--Dockerfile

前言: docker镜像使用dockerfile文件生成,dockerfile是一个文本文件,通过命令行的执行来组成新的镜像 基本语法 FROM 基于那个镜像构建容器 例:centos:7 任何Dockerfile的第一条指令必须为FROM指令 MAINTAINER 镜像维护者信息 例:unixzhang <[email protected]> 该信息会被写入到镜像的Author属性中 RUN 构建镜像时运行的Shell命令 例:RUN ["yum","insta

docker中的dockerfile

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker build命令用于从Dockerfile构建映像.可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile. 例: docker build -f /path/to/a/Dockerfile Dockerfile的基本结构 Dockerfile 一般分为四部分:

Docker学习笔记 — Dockerfile

基本结构 可以使用Dockerfile自定义镜像. Dockerfile分为四个部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令. # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] .. # Base image to use, this must be s

Docker基础-使用Dockerfile创建镜像

1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command ] .. # Base image to use, this nust be set as the first line FROM ubu

[转]Docker基础-使用Dockerfile创建镜像

本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command ] .. # Base imag

Docker应用三:Dockerfile使用介绍

Dockerfile使用介绍 一.Dockerfile介绍 Dockerfile用于自定义创建docker镜像,是由一行行命令组成的文件. Docker file中的命令根据作用分为四类: 1.1.指定基础镜像信息指令: FROM 1.2.指定维护者信息指令: MAINTAINER 1.3.对镜像操作的指令: RUN:后面运行shell命令 COPY:拷贝本地文件到容器某目录 ADD:拷贝本地压缩包到容器,拷贝完成后在容器内部自动解压.也支持从url下载文件后拷贝到容器 VOLUME:指定容器中

docker基础:dockerfile的介绍

Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的基本结构及其支持的众多指令,并具体讲解通过执行指令来编写定制镜像的 Dockerfile. 基本结构 Dockerfile 由一行行命令语句组成,并且支持已 # 开头的注释行.一般而言,Dockerfile 的内容分为四个部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令.例如: # This dockerfile uses the Ubu