iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >docker笔记15-Dockerfile案例-CMD、ENTRYPOINT案例
  • 780
分享到

docker笔记15-Dockerfile案例-CMD、ENTRYPOINT案例

2023-06-04 14:06:24 780人浏览 安东尼
摘要

    CMD/ENTRYPOINT都是指定一个容器启动时要运行的命令。但是CMD会覆盖前面的参数,而ENTRYPONT会追加组合原来的参数。CMD    Do

    CMD/ENTRYPOINT都是指定一个容器启动时要运行的命令。但是CMD会覆盖前面的参数,而ENTRYPONT会追加组合原来的参数。

CMD

    Dockfile中可以有多个CMD指令,但只有最后一个生效。

    另外,CMD会被Docker run之后的参数替换,举例说明:

[root@t-docker chenzx]# docker run -it -p 8080:8080 Tomcat01-Sep-2018 12:52:39.808 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying WEB application directory [/usr/local/tomcat/webapps/manager]01-Sep-2018 12:52:39.822 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/manager] has finished in [14] ms01-Sep-2018 12:52:39.827 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["Http-NIO-8080"]01-Sep-2018 12:52:39.834 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]01-Sep-2018 12:52:39.836 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 510 ms
[root@t-docker chenzx]# docker run -it -p 8080:8080 tomcat ls -ltotal 120-rw-r----- 1 root root  19533 Aug 12 08:23 BUILDING.txt-rw-r----- 1 root root   6090 Aug 12 08:23 CONTRIBUTING.md-rw-r----- 1 root root  57092 Aug 12 08:23 LICENSE-rw-r----- 1 root root   1726 Aug 12 08:23 NOTICE-rw-r----- 1 root root   3255 Aug 12 08:23 README.md-rw-r----- 1 root root   7140 Aug 12 08:23 RELEASE-NOTES-rw-r----- 1 root root  16262 Aug 12 08:23 RUNNING.txtdrwxr-x--- 2 root root    313 Aug 23 00:47 bindrwx--S--- 2 root root    238 Aug 12 08:23 confdrwxr-sr-x 3 root staff    19 Aug 23 00:47 includedrwxr-x--- 2 root root   4096 Aug 23 00:47 libdrwxr-x--- 2 root root      6 Aug 12 08:20 logsdrwxr-sr-x 3 root staff   151 Aug 23 00:47 native-jni-libdrwxr-x--- 2 root root     30 Aug 23 00:47 tempdrwxr-x--- 7 root root     81 Aug 12 08:21 webappsdrwxr-x--- 2 root root      6 Aug 12 08:20 work

    通过上面可以看出,最后面的ls -l覆盖了启动tomcat的操作。这就是CMD会被docker run之后的参数替换。

ENTRYPOINT

    docker run之后的参数会被当做参数传递给ENTRYPOINT,之后形成新的命令组合。

案例1:制作CMD版可以查询IP信息的容器

[root@t-docker CMD]# cat Dockerfile from CentosRUN yum -y install curlCMD ["curl","-s","http://ip.cn"][root@t-docker CMD]# docker build -f Dockerfile -t myip .Sending build context to Docker daemon  2.048kBStep 1/3 : from centos ---> 5182e96772bfStep 2/3 : RUN yum -y install curl ---> Running in aa5e5f0a8597Loaded plugins: fastestmirror, ovlDetermining fastest mirrors * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.neusoft.edu.cnPackage curl-7.29.0-46.el7.x86_64 already installed and latest versionNothing to doRemoving intermediate container aa5e5f0a8597 ---> a35f6ad9700fStep 3/3 : CMD ["curl","-s","http://ip.cn"] ---> Running in f59369e2a7dbRemoving intermediate container f59369e2a7db ---> ecf0b349d6a1Successfully built ecf0b349d6a1Successfully tagged myip:latest
[root@t-docker CMD]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED              SIZEmyip                latest              ecf0b349d6a1        About a minute aGo   293MBmycentos            1.3                 0c868c56748b        3 hours ago          442MBchenzx/centos       latest              a37b96c1c7a7        35 hours ago         200MBchenzx/tomcat02     1.2                 24c3D89d4d04        2 days ago           463MBtomcat              latest              690cb3b9c7d1        9 days ago           463MBcentos              latest              5182e96772bf        3 weeks ago          200MB[root@t-docker CMD]# [root@t-docker CMD]# docker run -it myip当前 IP:223.72.205.1 来自:北京市 移动
[root@t-docker CMD]# curl -s http://ip.cn当前 IP:223.72.205.1 来自:北京市 移动[root@t-docker CMD]# [root@t-docker CMD]# curl -s -i  http://ip.cnHTTP/1.1 200 OKDate: Sat, 01 Sep 2018 13:19:24 GMTContent-Type: text/html; charset=UTF-8Transfer-Encoding: chunkedConnection: keep-aliveSet-Cookie: __cfduid=defee6872152b4b29d3a55de1eb3f219d1535807964; expires=Sun, 01-Sep-19 13:19:24 GMT; path=/; domain=.ip.cn; HttpOnlyServer: cloudflareCF-RAY: 45380742316fb236-HKG当前 IP:223.72.205.1 来自:北京市 移动
[root@t-docker CMD]# docker run myip当前 IP:223.72.205.1 来自:北京市 移动 [root@t-docker CMD]# docker run myip -i  #可以看到报错了docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"-i\": executable file not found in $PATH": unknown.ERRO[0000] error waiting for container: context canceled

    我们可以看到出现了一个可执行文件找不到的报错: executable file not found in $PATH。之前我们说过,跟在镜像名后面的是command,运行时会替换CMD的默认值。

   因此,这里面的-i替换了原来的CMD参数,而不是在原来的curl -s http://ip.cn后面。而-i根本就不是命令,所以自然找不到。

    那我们如果希望加入-i参数,我们就必须重新完整的输入这个命令:

[root@t-docker CMD]# docker run myip curl -s http://ip.cn -iHTTP/1.1 200 OKDate: Sat, 01 Sep 2018 13:28:03 GMTContent-Type: text/html; charset=UTF-8Transfer-Encoding: chunkedConnection: keep-aliveSet-Cookie: __cfduid=d8b76a4d8c8ebb4bf69f97a92cc39216e1535808483; expires=Sun, 01-Sep-19 13:28:03 GMT; path=/; domain=.ip.cn; HttpOnlyServer: cloudflareCF-RAY: 453813eed351b11c-HKG当前 IP:223.72.205.1 来自:北京市 移动

案例2:制作ENTRYPOINT版查询ip信息的容器

[root@t-docker CMD]# cat Dockerfile2 from centosRUN yum -y install curlENTRYPOINT ["curl","-s","http://ip.cn"][root@t-docker CMD]#
[root@t-docker CMD]# docker build -f Dockerfile2  -t myip2 .Sending build context to Docker daemon  3.072kBStep 1/3 : from centos ---> 5182e96772bfStep 2/3 : RUN yum -y install curl ---> Using cache ---> a35f6ad9700fStep 3/3 : ENTRYPOINT ["curl","-s","http://ip.cn"] ---> Running in 36f7f6639933Removing intermediate container 36f7f6639933 ---> b772af142e86Successfully built b772af142e86Successfully tagged myip2:latest
[root@t-docker CMD]# docker run -it myip2当前 IP:223.72.205.1 来自:北京市 移动[root@t-docker CMD]# docker run -it myip2 -i  ##正确执行HTTP/1.1 200 OKDate: Sat, 01 Sep 2018 13:57:37 GMTContent-Type: text/html; charset=UTF-8Transfer-Encoding: chunkedConnection: keep-aliveSet-Cookie: __cfduid=ded1abdaf2b8375c2fb815f8d262e4c781535810257; expires=Sun, 01-Sep-19 13:57:37 GMT; path=/; domain=.ip.cn; HttpOnlyServer: cloudflareCF-RAY: 45383f3c074bb20c-HKG当前 IP:223.72.205.1 来自:北京市 移动

    可见,ENTRYPOINT没有覆盖原参数,而是追加到原参数的后面。

--结束END--

本文标题: docker笔记15-Dockerfile案例-CMD、ENTRYPOINT案例

本文链接: http://www.lsjlt.com/news/238336.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • docker笔记15-Dockerfile案例-CMD、ENTRYPOINT案例
        CMD/ENTRYPOINT都是指定一个容器启动时要运行的命令。但是CMD会覆盖前面的参数,而ENTRYPONT会追加组合原来的参数。CMD    Do...
    99+
    2023-06-04
  • dockerfile使用记录:在生产中使用dockerfile构建mysql详细教学加案例
    dockerfile使用记录:在生产中使用dockerfile构建mysql详细教学加案例 1.1 Dockerfile是用于构建Docker镜像的一种文本文件,其中包含指令和参数。MySQL的Doc...
    99+
    2023-09-03
    mysql 数据库 docker
  • vue实现记事本案例
    本文实例为大家分享了vue实现记事本案例的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en">   <h...
    99+
    2024-04-02
  • docker images本地迁移的案例
    这篇文章将为大家详细讲解有关docker images本地迁移的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最近在学习docker,经常遇到的一个问题是,在下载docker image的时候,由于众...
    99+
    2023-06-14
  • Docker案例分析:搭建Redis服务
    目录1 创建挂载目录和文件2 拉取redis镜像3 创建容器并启动4 Redis使用5 模拟数据迁移效果使用官方的redis镜像搭建数据库服务,目前的latest版本对应5.0.8版...
    99+
    2024-04-02
  • 使用Docker Swarm搭建Wordpress的案例
    小编给大家分享一下使用Docker Swarm搭建Wordpress的案例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用 Docker Swarm 搭建 Wordpress起因我曾经把 wordpress 搭建在 Vu...
    99+
    2023-06-14
  • 使用Docker开发python Web应用的案例
    小编给大家分享一下使用Docker开发python Web应用的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文中,我将尝试展示用Docker开发pytho...
    99+
    2023-06-07
  • 基于Docker安装与部署Zabbix的案例
    小编给大家分享一下基于Docker安装与部署Zabbix的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!今天测试了一天的Zabbix-Docker,部署起来确...
    99+
    2023-06-07
  • php之使用docker运行workerman案例讲解
    介绍 在docker上部署gatawayWorker项目,项目中使用到mysql,redis 安装 mysql 拉取镜像 docker pull mysql:5.7 运行容器 ...
    99+
    2024-04-02
  • Docker案例分析:搭建MySQL数据库服务
    目录1 创建配置和数据目录3 从镜像内复制配置文件到宿主机4 创建并运行mysql容器5 宿主机连接数据库5.1 终端命令连接5.2 数据库工具连接6 查看mysql日志使用官方的m...
    99+
    2024-04-02
  • Centos8.3、docker部署springboot项目实战案例分析
    引言 目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子。只有几台服务器的应用运维使用传...
    99+
    2024-04-02
  • Python实现历史记录功能(实际案例)
    目录1、如何实现用户的历史记录功能(最多n条)2、代码演示1、如何实现用户的历史记录功能(最多n条) 实际案例: 很多应用程序都有浏览用户的历史记录的功能, 例如: 浏览器可以查看最...
    99+
    2024-04-02
  • 15分钟快速入门Python套路!这7个案例值得一看
    有人用Python从各大视频网站下视频,有人成功用Python跳一跳跳到4999,有人用Python撩妹子,还有人设计了一套代码自动抢红包...俗话说外行看热闹,内行看门道,我们已经知道了python的火热情况,但是学一门编程语言是需要花大...
    99+
    2023-06-05
  • 记一次ORA-01102导致数据库实例无法启动案例
    1.现象 由于之前启动过一次报错,首先关闭数据库,然后重启 $ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on ...
    99+
    2024-04-02
  • Docker跨服务器通信Overlay解决方案(上)之Consul单实例
    目录场景任务想法分析概念与选型小试身手环境说明注意事项动手做测试引文场景 公司微服务快上线了,微服务都是用Docker容器进行部署的,在同一台主机下,把服务都部署上,注册到Nacos...
    99+
    2024-04-02
  • Java项目案例之如何实现家庭收支记录程序
    这篇文章给大家分享的是有关Java项目案例之如何实现家庭收支记录程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、项目需求及流程说明本项目学习目标:模拟实现一个基于文本界面(程序控制台)的《家庭收支记录程序》...
    99+
    2023-06-20
  • Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】
    Docker进阶:mysql 主从复制、redis集群3主3从【扩缩容案例】 一、Docker常规软件安装1.1 docker 安装 tomcat(默认最新版)1.2 docker 指定安装 ...
    99+
    2023-09-05
    运维 mysql 主从复制 redis集群3主3从 redis集群扩缩容案例 容器 云原生 虚拟化技术 mysql redis 原力计划
  • MongoDB聚合分组取第一条记录的案例与实现方法
    前言 今天开发同学向我们提了一个紧急的需求,从集合mt_resources_access_log中,根据字段refererDomain分组,取分组中最近一笔插入的数据,然后将这些符合条件的数据导入到集合mt...
    99+
    2024-04-02
  • MySQL创建存储过程并循环添加记录的案例分析
    这篇文章将为大家详细讲解有关MySQL创建存储过程并循环添加记录的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先创建,然后调用:-- 创建存储过程 DELIMI...
    99+
    2024-04-02
  • SpringBoot2 基础案例(11):配置AOP切面编程,解决日志记录业务
    本文源码:GitHub·点这里 || GitEE·点这里一、AOP切面编程1、什么是AOP编程在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作