导航:首页 > 程序命令 > dockerfile中的命令

dockerfile中的命令

发布时间:2023-03-31 04:59:29

Ⅰ dockerfile中指定镜像源的参数是

from。
这一镜像参数是dockerfile中的第一指令,这也相当于一个临纤茄时容器,当其中指定参数改变时,复制文件就会乎竖仔发生一定的改变。
Dockerfile是一个镜像构建命令集合的文本文件,可以使用在命令行岁汪中调用任何命令。

Ⅱ Dockerfile里指定执行命令用ENTRYPOING和用CMD有何不同

运行时机不太一样。RUN是在Build时运行的,先于CMD和ENTRYPOINT。Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT。ENTRYPOINT和CMD的不同点在于执行dockerrun时参数传递方式,CMD指定的命令可以被dockerrun传递的命令覆盖,例如,如果用CMD指定:CMD["echo"]然后运行dockerrunCONTAINER_NAMEechofoo那么CMD里唯袜租指定的echo会被新指定的echo覆盖,所以最终相当于运行echofoo,所以最终打印出的结果就是:foo而ENTRYPOINT会把容器名后面的所有内容都当成参数传递给其指定的命令(不会对命令覆盖),比如:ENTRYPOINT["echo"]然后运行dockerrunCONTAINER_NAMEechofoo则CONTAINER_NAME后面的echofoo都作为参数传递给ENTRYPOING里指定的echo命令了,所以相当于执行了echo"echofoo"最终打印出的结果就是:echofoo另外,在Dockerfile中,ENTRYPOINT指定的参数比运行dockerrun时指定的参数更靠前,比如:ENTRYPOINT["echo","foo"]执行dockerrunCONTAINER_NAMEbar相当于执行了:echofoobar打印出的结果就是:foobarDockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后指兆一个有效。执行dockerrun命令时,也可以添加-entrypoint参数,会把指定的参数继续传递给ENTRYPOINT,好圆例如:ENTRYPOINT["echo","foo"]然后执行:dockerrunCONTAINER_NAMEbar#注意没有echo那么,就相当于执行了echofoobar,最终结果就是foobar

Ⅲ 详解Docker——你需要知道的Docker进阶知识二

Docker镜像

镜像仓库(Repository)用于存放镜像,每个仓库都有唯一的地址,和网址类似。镜像仓库托管在某个 Registry,Registry 和GitHub类似。Docker 提供了一个官方的 Registry,官方 Registry 里的镜像仓库地址可以省去前面的域名前缀,其它 Registry 里的镜像仓库地址必须要指定域名前缀,以保证唯一性。

镜像仓库地址后面可以跟一个 TAG。比如一个镜像名称 ubuntu:14.04 ,冒号前面的 ubuntu 是镜像仓库地址(由于是官方 Registry 里的,可以省略域名前缀),后面的 14.04 是 TAG,TAG 通常设置为镜像的版本号。

Docker 镜像是分层存储的,每一个镜像都由多层组成。镜像之间会森察世共享一些相同的层,从而减小镜像占用的存储空间。

也可以查看指定的镜像:

查看镜像的详细信息

比较常用的配置参数为 -a ,代表下载仓库中所有 TAG 的镜像,默认只下载 latest TAG 的镜像。

如果要下载 ubuntu:14.04 镜像没没,可使用如下命令:

对于我们 pull 的新镜像 ubuntu:14.04 来说,如果我们需要对其进行更新,可以创建一个容器,在容器中进行修改,然后将修改提交到一个新的镜像中。

提交修改使用如下命令:

该命令从一个修改过的容器创建一个新的镜像。例如,我们运行一个容器,然后在其中创建一个文件,最后使用 commit 命令:

通过上述操作我们创建了一个新的镜像,但是本方法不推荐在生产环境使用,因为这种方式的可维护性很差。推荐的创建镜像的方法是使用 Dockerfile ,修改镜像可通过修改 Dockerfile ,然后使用新的 Dockerfile 来构建新的镜像。

docker 可以从一个 Dockerfile 文件中读取指令来构建镜像。 Dockerfile 是一个包含用户构建镜像所需命令的文本文件。在 创建好该文件后,我们此肢可以使用如下命令来构建镜像:

对于一个 Dockerfile 文件内容来说,基本语法格式如下所示:

使用 # 号作为注释,指令( INSTRUCTION )不区分大小写,但是为了可读性,一般将其大写。 Dockerfile 中的指令一般包含下面几个部分:

下面是一个最基本的 Dockerfile :

通过阅读上述内容中我们熟悉的一些 linux 指令,可以很容易的知道该 Dockerfile 将创建一个 apache 镜像。

其中 FROM 指定基础镜像。 RUN 命令默认使用 /bin/sh ,并使用 root 权限执行。 CMD 命令也是默认在 /bin/sh 中执行,但是只能有一条 CMD 指令,如果有多条则只有最后一条会被执行。

下面我们创建一个空目录,在其中编辑 Dockerfile 文件,然后基于此文件构建一个新的镜像:

在构建完成后,我们可以使用该镜像启动一个容器来运行 apache 服务,运行如下命令:

此时,容器启动成功后,并且配置了端口映射,我们就可以通过本机的 8000 端口访问容器 hellodocker3 中的 apache 服务了。我们打开浏览器,输入 localhost:8000

删除 ubuntu:latest 镜像可以使用如下命令:

删除所有的镜像

Ⅳ Docker常用命令大全

基础操作:

1  docker images  查看镜像信息列表 镜像是静态的

2  docker ps -a  查看运行中的所有容器

3  docker pull  [images]:[version] 从dockerhub拉取指定镜像

4  docker run -p 8000:80 -tdi --privileged [imageID] [command]   后台启动docker,并指定宿主机端口和docker映射端口。

  -i: 以交互模式运行容器,通常与 -t 同时使用;

  -d: 后台运行容器,并返回容器ID;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--privileged  容器将拥有访问主机所有设备的权限

通常情况下 [command] 填下  /bin/bash  即可。

特殊情况下,如需要在centos镜像中使用 systemctl  . 则应添加 --privileged  并设置[command ]为  init 。

5 当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:

sudo docker exec -it [containerID] /bin/bash

交互模式中,使用  ctrl+p+q退出交互 保持运行,使用 exit命令退出并停止容器。

6 在容器非交互模式下,通过docker  start/stop 命令来启动/停止已部署的容器服务。

7  docker rm [containerID]  删除容器

8  docker rmi [imageID]  删除镜像

9 docker cp [YourHostFilePath] [containerID]:[DockerPath]  将宿主机内的指定文件传输至容器内部的指定地址。

镜像制作:

1   docker commit [containerID] [ImageName]:[Version]  将修改后的容器重新打包成镜像

2  docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1  将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。

-a  :提交的镜像作者;

  -c  :使用Dockerfile指令来创建镜像;

  -m  :提交时的说明文字;

  -p  :在commit时,将容器暂停。

3  docker push [ImageID] [repertory_address] 提交镜像到云仓库

(暂时先记录这些,后续再更新)

Ⅳ dockerfile指令跟linux命令通用吗

通用。dockerfile指令跟linux命令通用,Docker程序将这些Dockerfile指令翻译成悉悉真正的Linux命令,Dockerfile有自己书写前庆格式和支持的命令,Docker程序解决这些命令间的依赖慧陆握关系。

Ⅵ 详解Docker——你需要知道的Docker进阶知识五

Dockerfile 是一个文本文件,其中包含了构建 Docker 镜像需要执行的命令序列。使用 docker build 命令从 Dockerfile 中读取指令来构建镜像。

构建镜像时,该过程的第一件事是将 Dockerfile 文件所在目录下的所有内容发送给 Docker 守护进程。所以大多数情况下,最好创建一个新的目录,在其中保存 Dockerfile ,以及构建镜像所需的其它文件。Dockerfile 文件所在目录也被称为构建上下文(context)。

使用 FROM 指令指定一个基础镜像,后续指令将在此镜像基础上运行:

在 Dockerfile 中可以指定一个用户,后续的 RUN , CMD 以及 ENTRYPOINT 指令都会使用该用户身份去执行,该用户必须已存在。

除了指定用户之外,还可以使用 WORKDIR 指定当前工作目录(CWD), RUN , CMD , COPY , ADD 指令将在指定的工作目录中执行。

RUN 指令用于执行命令,该指令有两种形式:

例如我们执行更新命令:

CMD 的使用方式跟 RUN 类似,不过在一个 Dockerfile 文件中只能有一个 CMD 指令,如果有多个,则只有最后一个会生效。该指令指定了启动容器时要执行的命令,例如:

可以在 docker run 时指定命令来覆盖默认的 CMD 命令,比如 docker run image echo"hello shiyanlou" 。

CMD 指令还有一种特殊用法。在 Dockerfile 中,如果使用 ENTRYPOINT 指令指定了入口命令,则 CMD 指令的内容会作为 ENTRYPOINT 指令的参数:

ENTRYPOINT 指令会覆盖 CMD 指令作为容器运行时的默认指令,并且该指令不会被 docker run 时指定的指令覆盖,如下示例:

上述文件构建出来的镜像,使用 docker run image 等同于 docker run image ls-a-l 。使用 docker run image-i-s 等同于 docker run image ls-a-i-s 。即 CMD 指令的值会被当作 ENTRYPOINT 指令的参数附加到 ENTRYPOINT 指令的后面,只有 CMD 指令可以被覆盖。

COPY 和 ADD 都用于将构建上下文中的文件,目录等复制到镜像中。使用方式如下:

`` 可以指定多个,但是其路径不能超出构建上下文范围,即必须在 Dockerfile 同级或子目录中。

不需要预先存在,不存在时会自动创建,如果使用相对路径,则 为相对于工作目录的路径。塌陪

COPY 和 ADD 的不同之处在于,ADD 可伏衫或以添加远程文件,并且 `` 可以是 gzip 或 tar 等格式的压缩文件,添加时会自动进行解压

ENV 指令用于设置环境变量:

VOLUME 指令指定要创建的挂载路径,在容器运行时,将为每个挂载路径创建一个匿名卷并挂载上去:

上述指令将会在容器运行时,创建两个匿名卷,并分别挂载到容器中的 /data1 和 /data2 路径。

学习了上面这些常见的 Dockerfile 指令之后,可以使用这些指令来构建一个镜像。如下所示,构建一个提供 ssh 服务的镜像:

构建镜像

查看镜像

启动容器

查看已经启动的容器

测试远程登录

Compose 是运行由多个容器组成的 Docker 应用的工具,使用 Compose 可以一次启动一组有关联的服务,每个服务由来自同一镜像的单个或多个容器组成。

在复杂应用中,应用一般由多个服务(service)组成,例如一个网站后台通常包含 Web 服务、数据库服务、缓存缺伍服务、消息队列服务等。

使用 Compose 的步骤如下:

目前有三种版本的 Compose 文件格式:

下载 docker-compose-Linux-x86_64

下载成功后,为了方便使用,可以将其添加到 PATH 路径下

执行完成后,就能够在终端下直接使用 docker-compose 命令了:

接下来我们将创建一个 Web 应用,该应用包含两个容器:

项目目录结构如下:

首先编辑 app/web/web.py 文件,写入下面的内容:

上述代码创建了一个简单的 Web 应用。该应用会连接 redis 服务,在访问 / 页面时,自动将变量 number 加 1。

编辑 app/web/requirements.txt 文件,输入如下内容:

requirements.txt 文件存放了 Web 应用依赖的第三方库包的名称和版本信息。

编辑 app/web/Dockerfile 文件,添加如下内容

上述 Dockerfile 定义了 Web 应用镜像,该镜像基于 python:2.7 基础镜像,在其基础上安装了应用依赖的库包,并通过 CMD 指令指定了应用的启动命令。

编辑 app/docker-compose.yml 文件:

该 docker-compose.yml 文件定义了两个服务,分别为 web 和 redis 服务,并且配置了 web 服务的端口映射和挂载目录。 depends_on 定义了依赖关系,被依赖的服会先启动。

进入 app 目录,执行 docker-compose up 命令来启动应用:

启动成功后,就可以打开网址 127.0.0.1:8001 来访问 Web 应用了。

另外一些命令:

Ⅶ 通过查看帮助文档查看dockerbuild命令作用

通过查看帮助启知升文档查看dockerbuild命令作用是build命令用于使用Dockerfile创建镜像悄老。dockerbuild命令用于从Dockerfile构建镜像。可以在dockerbuild命令中使用-f命令也就是指定要构建的脚本,通过-t输猛毁出镜像名称还可以跟:加上版本。

Ⅷ Dockerfile里指定执行命令用ENTRYPOING和用CMD有何不同

你好,
运行时机不太一样。RUN是在Build时运行的,先于CMD和ENTRYPOINT。Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT。ENTRYPOINT和CMD的不同点在于执行dockerrun时参数传递方式,CMD指定的命令可以被dockerrun传递的命令覆盖,例如,如果用CMD指定:CMD["echo"]然后运行dockerrunCONTAINER_NAMEechofoo那么CMD里指定的echo会被新指定的echo覆盖,所以最终相当于运行echofoo,所以最终打印出的结果就是:foo而ENTRYPOINT会把容器名后面的所有内容都当成参数传递给其指定的命令(不会对命令覆盖),比如:ENTRYPOINT["echo"]然后运行dockerrunCONTAINER_NAMEechofoo则CONTAINER_NAME后面的echofoo都作为参数传递给ENTRYPOING里指定的echo命令了,所以相当于执行了echo"echofoo"最终打印圆并出的结果就是:echofoo另外,在Dockerfile中,ENTRYPOINT指定的参数比运行dockerrun时指定的参数更靠前,比如:ENTRYPOINT["echo","foo"]执行dockerrunCONTAINER_NAMEbar相当于执行了:echofoobar打印出的结果就是:foobarDockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。执行dockerrun命令时,也可以睁兆添加-entrypoint参数,会把指定的参数继续传递给ENTRYPOINT,例如:ENTRYPOINT["echo","foo"]然后执行:dockerrunCONTAINER_NAMEbar#注意没有echo那么,就相当于执行悉腔租了echofoobar,最终结果就是foobar

Ⅸ dockerfile指令跟linux命令通用,可以在linu

你好,你是问dockerfile指令跟linux命令通用吗?dockerfile指令跟linux命令通用搭磨。每条命令对应linux下面的一条命令,运尺docker程序将这些dockerfile指令在翻译成真正的linux命令,dockerfile中每条指定对应linux中旁枝高的一条命令,docker程序将读取dockerfile中的指令生成指定镜像。所以dockerfile指令跟linux命令通用。

Ⅹ Docker:容器管理(启动参数,查看容器和日志,进入和修改容器)

摘要: Docker

容器是一个精简版的操作系统,一般一个容器只运行一个应用,容器通过镜像创建,使用 docker run 命令创建,容器起到了 隔离 作用,容器和容器之间独享空间和网络等

容器的基本操作包括创建(启动),停止,重启,查看,检查等,容器通过镜像创建,使用 docker run 命令创建,需要指定run参数,镜像名,容器执行命令,语句格式如下

在实际使用中启动一个镜像,例如

-e 设置环境变量,格式是 -e k1=v1 -e k2=v2 ,使得在docker镜像中的程序能够直接访问到环境变量,同时可以作为配置参数放在docker run启动镜像的时候设置,而不是写死在dockerfile在build的过程中,-e和dockerfile中的 ENV 变量作用相同,当变量重名时-e替换ENV,下面测试一些做带-e参数,在Dockerfile指定环境变量

直接构建成容器

开启一个终端启动容器内部,打告御印指定的环境变量a

此时在run指令中增加-e设置环境变量,可见-e替换了Dockerfile中指定的环境变量

因为一个镜像可以启动多个容器,所以可以通过设置不同-e达到设置不同配置参数的目的,比如下一个例子在Dockerfile中设置和将环境变量写入yaml文件再供Python调用,执行的内容为打印yaml配置文件的参数内容,比如下面这个例子先看下目录结构

其中config.yml是一个空配置文件,在run.sh中先使用echo写入追加配置参数到config.yml在执行Python脚本

Dockerfile中启动run.sh脚本作为容器执行命令

在启动容器时,使用-e指定环境变量,在run.sh中echo将环境变量拿到和写入配置文件,测试多次以不同的配置参数启动容器如下

-v 设置挂载运行,将宿主机当前目录下的文件挂载到容器中/home目录下,例如

如果挂载的目录和Dockerfile中的COPY的目录不一致, -v会替代COPY或者ADD ,例如现在Docker中COPY一个文件到容器/home目录下

同目录下start.sh内容是打印1

构建镜像结束后,指定-v启动,起始挂载另外一个目录,目录下start.sh内容是打印2

docker run参数中最后的COMMAND会覆盖Dockerfile中指定的 CMD ,例如执行echo 2替换原始Dockerfile中的CMD echo 1,输出结果是2且执行完毕后退出

对于Dockerfile中的 ENTRYPOINT 指定的启动命令docker run的COMMAND不会覆盖,如果要覆盖Docker中的ENTRYPOINT需要指定docker run中的 --entrypoint 参数,格式是

测试一个Dockerfile输出1

在docker run中使用--entrypoint覆盖Dockerfile中的ENTRYPOINT

容器启动后通过 docker ps 或者 docker container ls 查看容器,可以增加额外参数比如 -a 显示所有容器,默认只显示运行的容器,可以增加 --no-trunc 参数使得显示结果不截断,例如

显示结果分别显示了容器的ID,镜像,执行命令,创建时间,状态,端口映射(宿主机->容器)和容器名称。对于已经运行的容器可以使用 docker stop 停止,如果在docker run时增加--rm参数则停止的容器保留不会自动删除,例如

除了docker stop命令还有一种停止容器纯友芦的命令 docker kill ,相比于docker stop,docker kill是 强制立即停止 ,而docker stop是先给了容器10秒(默认)的时间,使得容器有一定的时间处理、保存程序执行现场, 优雅的退出程序 ,例如

在容器停止之后可以使用 docker start 再启动一个停止的容器,例如

除此之外可以使用 docker restart ,此时容器可以使停止的也可以是在运行中的,例如

查看容器详情使用 docker inspect ,比如

在以上截取的内容中展示了容器详情,包括容器id,创建时间,执行命令和参数,执行状态,容器pid,落脚点,环境变量,网络设置,端口映射等,也可以使用Go语言风格输出指定的详情,比如分别只看容器的pid和容器的执行命令

容器是一个操作系统,可以进入这个操作系统查看容器的运行情况,有多种方式进入容器,其中主要是使用 docker exec 进入容器,在一个运行中的容器中执行一个命令,使用 -it 并带有 /bin/bash 命令就可以进入容器,比如

除了/bin/bash也可以是其他命令挂载exec后面则可以直接对一个运行中的容器执行命令,比如查看容器的进入落脚点路径,容器中的内存情况

当容器以后台 -d 运行时,日志运行在容器内部,可以进入容器内部查看日志,也可以使用 docker logs 查看日志,以一个flask api接口的容器为例,日志写入文件,同时也会输出在flask的控制台

创建Dockerfile以及构建镜像,启动容器

启动一个脚本不断请求api接口

进入容器内部查看日志

另一种方式是直接使用 docker logs 命令,比如使用 -f 追踪输出,并且从最后的第1行开始输出

此时宿主机的logs目录下为空,容器中的logs目录下存在detail.log文件,如果使用 -v 将宿主机目录挂载到容器作为容器写入的目录,则容器中数据的变动会同步到本地,这样可以直接在本地查看日志,修改容器启动为 -v 挂载的形式

此时本地logs目录下开始产生日志,且这个日志和容器内的logs目录下一致

如果容器内的内容改变了,此时删除容器从镜像重新启动容器则改动的内容将不会存在,如果相对修改过的容器保留下来则可以从容器生成新的镜像,先测试以下容器内修改在删除的容器后将不再生效,在已有容器中使用pip安装Python包

此时退出容器,并且删除容器,最后从镜像重新生成容器

此时进入容器检查,并不存在pymongo包

如果要容器变化保存下来需要以这个新容器生成一个镜像,使用 docker commit ,语法如下

以新安装pymongo的容器为例,对新容器使用docker commmit

新生成的镜像叫做xiaogp/my_image_test:v2

从新镜像启动容器并进入容器查看存在新安装的pymongo

阅读全文

与dockerfile中的命令相关的资料

热点内容
泰国剧罪孽父亲出海 浏览:7
叶天明柳韵txt 浏览:825
bch主流算法 浏览:767
免费在线国产片 浏览:200
苹果平板为什么连接服务器错误 浏览:89
穿越东晋成为王凝之 浏览:958
手机里的文件夹怎么拉出来 浏览:281
饥荒怎么输入ip进服务器 浏览:470
美国恐怖三极片 浏览:995
四川虚拟主机云服务器 浏览:780
母乳喂养真人版电影 浏览:396
免费看片链接 浏览:492
编程将中断类型号 浏览:597
数字编程学院 浏览:95
程序员不时尚 浏览:746
不付费看网站 浏览:230
《代人受过》训诫文 浏览:258
1n.d5h49m6. 浏览:687
linuxweb目录权限 浏览:945