c代码中 执行sh文件 带参数_几种姿势教你创建镜像文件,小编来回验证了3遍,docker实践(2)...

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

746e75a96b506447f2c2366109d4f63f.png

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

mkdir cowsaycd cowsaytouch Dockerfile

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

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

vi DocerfileFROM debian:wheezyRUN 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"
0d642f197c247fbb4fe42f1a37a3a0ee.png

通过上面的命令,我们需要运行/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 debianRUN apt-get update && apt-get install -y cowsay fortuneCOPY entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"]

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

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

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

a9f486c87fe93db08b79f7d4c86be32c.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值