Docker容器啟動時的第乙個程序的設定總結

2021-09-25 18:26:35 字數 1631 閱讀 8874

實際生產中,docker容器建立(或啟動)時,預設即啟動必要的服務程序,這種用法非常常見。容器中預設即啟動的服務往往作為容器的第乙個程序啟動。如docker run命令建立tomcat容器時即啟動容器中的tomcat服務。docker提供了有多種方式實現該特性。

1.執行乙個帶引數的命令

建立容器時,如果希望預設即執行乙個帶引數的命令mycommand myparam,利用dockerfile的entrypoint和cmd,以及docker run命令的引數,可以有如下多種實現。

1) 方法一,通過dockerfile的cmd

cmd ["mycommand"] ["myparam"]

首先,通過dockerfile構建出映象myimage:latest。這樣,在啟動容器時,只需要執行docker run myimage:latest命令即可。

2) 方法二,通過dockerfile的entrypoint

entrypoint ["mycommand", "myparam"]

首先,通過dockerfile構建出映象myimage:latest。這樣,在啟動容器時,只需要執行docker run myimage:latest命令即可。

3) 方法三,通過dockerfile的entrypoint和cmd

entrypoint ["mycommand"]

cmd ["myparam"]

首先,通過dockerfile構建出映象myimage:latest。這樣,在啟動容器時,只需要執行docker run myimage:latest命令即可。

4) 方法四,通過dockerfile的cmd和docker run命令的引數

#entrypoint ["not set"]

cmd ["anything"]

首先,通過dockerfile構建出映象myimage:latest。這樣,在啟動容器時,還需要執行docker run myimage:latestmycommand myparam命令。事實上,dockerfile中的cmd定義沒有任何作用,docker run命令覆蓋了cmd並給出了完整的命令和引數。

5) 方法五,通過dockerfile的entrypoint和docker run命令的引數

entrypoint ["mycommand"]

#cmd ["not set"]

首先,通過dockerfile構建出映象myimage:latest。這樣,在啟動容器時,還需要執行docker run myimage:latestmyparam命令。事實上,這是docker run追加myparam到dockerfile中的entrypoint。

6) 方法六,通過docker run --entrypoint="" 命令的引數

entrypoint ["anything"]

cmd ["anything"]

首先,通過dockerfile構建出映象myimage:latest。這樣,在啟動容器時,還需要執行docker run myimage:latest--entrypoint="" /bin/bash mycommandmyparam命令。事實上,這是docker run重置了dockerfile中的entrypoint。

03 執行第乙個docker容器

容器需要管理工具 runtime 和作業系統,我們的選擇如下 1 管理工具 docker engine 因為 docker 最流行使用最廣泛。2 runtime runc docker 的預設 runtime 3 作業系統 ubuntu 雖然存在諸如 coreos 的容器 os,因考慮到我們目前處於...

在Docker建立的Mysql容器啟動時執行sql

我們有時需要在mysql容器啟動時執行sql建表,那麼我們就可以在構建映象時,指定容器要執行的sql.步驟 1.準備建資料庫表的檔案init db.sql 檔名需要對應和dockerfile定義要執行的sql檔名一樣 create database if not exists test use te...

安裝docker並執行第乙個容器

本篇部落格帶大家部署docker環境。分別介紹在centos7中部署docker.首先闡述下安裝docker的一些前提需求 1 docker需要安裝在64位cpu的計算機上,暫時不支援32位 2 若為linux核心,建議在3.10及以上 3 linux核心需要開啟cgroup和namespace功能...