快捷搜索:  汽车  科技

docker镜像的使用与操作:几种姿势教你创建镜像文件

docker镜像的使用与操作:几种姿势教你创建镜像文件docker run test/cowsay-dockerfile /usr/games/cowsay "Moo" 通过上面的命令,我们需要运行/usr/games/cowsay 应用程序,传入的参数是"Moo"。我们可以通过设置ENTRYPOINT ["/usr/games/cowsay"] 告诉docker 命令行入口的应用是谁。我们把这行代码加入到Dockerfile的最后一行然后再重新打包运行docker。打包完毕以后运行以下命令看看结果。vi Docerfile FROM debian:wheezy RUN apt-get update && apt-get install -y cowsay fortune 实际上制定了镜像实用的linux操作系统的版本 Wheezy,RUN 命令是制定的shell 命令,会在镜像中执行。后面我们通过apt-get 安装cows

上期我们说了一下如何安装docker,并且对基础命令进行了入门。今天我们来看看如何创建一个docker的镜像文件。

docker镜像的使用与操作:几种姿势教你创建镜像文件(1)

首先,我建立了一个dockerfile的目录用来专门存放镜像文件进入,dockerfile文件夹以后,输入以下命令建立基本的目录和文件。

mkdir cowsay cd cowsay touch Dockerfile

我们在制定的文件夹下面建立了一个Dockerfile文件,这个文件就是用来配置镜像文件用的。

打开Dockerfile文件用vi命令编辑一下,并且输入以下的内容然后“:wq”保存退出。

vi Docerfile FROM debian:wheezy RUN apt-get update && apt-get install -y cowsay fortune

实际上制定了镜像实用的linux操作系统的版本 Wheezy,RUN 命令是制定的shell 命令,会在镜像中执行。后面我们通过apt-get 安装cowsay 和fortune两个软件。

然后执行如下命令

docker build -t test/cowsay-dockerfile .

这个命令会根据dockerfile文件中的内容打包镜像并且安装应用。

打包完毕以后运行以下命令看看结果。

docker run test/cowsay-dockerfile /usr/games/cowsay "Moo"

docker镜像的使用与操作:几种姿势教你创建镜像文件(2)

通过上面的命令,我们需要运行/usr/games/cowsay 应用程序,传入的参数是"Moo"。我们可以通过设置ENTRYPOINT ["/usr/games/cowsay"] 告诉docker 命令行入口的应用是谁。我们把这行代码加入到Dockerfile的最后一行然后再重新打包运行docker。

docker build -t test/cowsay-dockerfile docker run test/cowsay-dockerfile "Moo"

第二句命令行没有实用 /usr/games/cowsay 依旧可以得到结果。这个就是entrypoint的威力了。

但是这里还是需要我们输入参数,如果利用fortune 应用作为参数的输入不是更好。这里我们再做一次改造。在Dockerfile同级目录下面加入entrypoint.sh 文件,编辑文件如下

#!/bin/bash if [ $# -eq 0 ]; then /usr/games/fortune | /usr/games/cowsay else /usr/games/cowsay "$@" fi

这个脚本很简单,说的是在没有参数输入的情况下就把fortune产生的名言作为cowsay的输入显示出来。如果有参数输入的情况下,就使用输入的参数。完成sh文件以后,再对Dockerfile文件进行修改。

FROM debian RUN apt-get update && apt-get install -y cowsay fortune COPY entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"]

加入了后面两行代码,引用了entrypoint脚本。

docker build -t test/cowsay-dockerfile docker run test/cowsay-dockerfile

这里执行命令我们就不输入参数了看看结果如何

docker镜像的使用与操作:几种姿势教你创建镜像文件(3)

直接把fortune产生的内容打印出来了。

到这里镜像文件打包并且执行容器中的应用就介绍到这里。这里没有更多的介绍原理,只是带着大家动手去做,后面几篇文章会给大家一些原理性的东西。

猜您喜欢: