1
|
docker image build -t 倉庫/標籤:版本號 . |
1
|
docker image history ID |
參數 | 說明 |
--build-art=[] | 設置鏡像創建時的變量 |
--compress | 是否在構建過程使用gzip進行壓縮,默認爲否 |
--cpu-shares | 設置CPU使用權重,默認爲0 |
--cpu-period | 設置CPU的CFS(完全公平調度算法)週期,默認爲0,這個可以調整是否可以給該容器分配更多或更少的CPU時間。 |
--cpu-quota | 設置CPU的CFS配額,默認爲0 |
--cpuset-cpus | 指定使用哪個CPU運行該容器,從0開始表示第一個CPU或者核心 |
--cpuset-mems |
設置指定使用的內存ID,一根物理內存在系統上是有編號的,就跟CPU一樣,這個參數設置該容器使用哪根物理內存條。使用下面的命令查看: dmidecode -t 17 | less 其中Handle後面的表示內存ID,插上內存的插槽在Size中有值,沒插的顯示“No Module Installed”。 |
--disable-content-truse | 忽略校驗,默認開啓 |
-f |
設置使用哪個dockerfile,如果使用這個參數指定文件位置那麼該Dockerfile的名稱可以是任意的,但是必須在構建上下文之中。之前演示構建的命令中最後是一個“.”,這個表示到本地當前目錄(也叫做構建上下文路徑)去找dockerfile,這時候你的Dockerfile文件名稱就必須是“dockerfile”,而且它會讀取該目錄以及其子目錄的Dockerfile,並將所有的內容發送給docker守護進程來創建鏡像,所以一般建議構建上下文或者也叫做內容路徑爲空目錄。如果你不使用構建上下文路徑下的Dockerfile,那麼就要使用-f參數來指定文件。 |
--force-rm | 是否允許強制刪除容器,默認爲false |
--isolation | 容器隔離技術 |
--lable=[] |
爲鏡像設置一個標籤 |
-m,--memory | |
--memory-swap |
設置容器的SWAP限制 |
--network | 設置網絡方式 |
--no-cache |
構建鏡像時不適用緩存,默認爲false。因爲構件時,每一步都會提交爲一個鏡像,所以Docker會把之前的看做緩存,假設構建分成5步,前三步都不需要修改,那麼Docker就會將前3步作爲緩存適用,尤其是在構建鏡像調試的時候會用到,這樣可以節省時間。 |
--pull |
總會嘗試拉取一個最新版本的鏡像進行使用,默認爲false |
--tag,-t |
鏡像名稱 名稱:標籤 |
-q |
不輸出構建鏡像過程,結束後輸出結果。默認是false,也就是輸出構建過程。 |
--rm |
鏡像構建成功後,刪除構建過程中的容器。 |
--shm-size |
默認的/dev/shm大小,默認64M |
--ulimit |
設置容器的ulimit設置,就是我們使用ulimit -a看到的那些內容。 |
1
|
docker run -d -p 80 --name httpSrv rex /1stimage :0.1 |
1
2
|
docker port ID [PORT] #不加後面的端口表示查看該容器的所有端口映射情況 |
-p | |
-P | 大寫P,表示使用Dockerfile中定義的EXPOSE端口映射到宿主機的隨機端口上。 |
1
|
FROM 鏡像:[標籤] #如果不指定標籤,則默認爲leatest,最新鏡像 |
1
2
3
4
|
RUN <COMMAND> #或者 RUN [ "COMMAND" , "ARG1" ...] #後面這張形式會被解析爲JSON數組,所以必須加引號 |
1
2
3
|
CMD <COMMAND> #或者 CMD [ "COMMAND" , "ARG1" , "ARG2" ...] |
1
|
LABEL <KEY>=<VALUE> <KEY>=<VALUE> .... |
1
|
EXPOSE <PORT> .... |
1
2
3
|
ENV <NAME> <VALUE> #或者 ENV <NAME>=<VALUE> |
1
2
|
ENV JAVA_HOME /opt/java1 .8.0_111 ENV PATH $JAVA_HOME:$PATH |
1
|
ADD <SRC> <DES> |
1
2
|
ADD /構建上下文 /apache/httpd .conf /etc/httpd/conf/ ADD /構建上下文 /apache/httpd .d/*.conf /etc/httpd/conf .d/ |
1
|
COPY <SRC> <DES> |
1
2
3
|
ENTRYPOINT <COMMAND ARG1 ARG2...> #或者 ENTRYPOINT [ "COMMAND" , "ARG1" , "ARG2" ...] |
1
|
ENTRYPOINT [ "/usr/sbin/nginx" ] |
1
|
docker run -d 鏡像 -g "daemon off;" |
1
|
/usr/sbin/nginx -g "daemon off;" |
1
|
VOLUME [ "/目錄1" , "/目錄2" ....] |
-
該卷可以在容器間共享或者重用
-
對該卷的修改立即生效
-
對卷的修改不會對鏡像產生影響
1
2
3
4
|
USER <USERNAME> USER <UID> USER <USERNAME>:<GROUPNAMD> USER <UID>:<GID> |
1
|
WORKDIR <PATH> |
1
2
|
ARG A1 ARG A2=HELLO |
1
|
docker build --build-arg A1=world -tNAME . |
1
|
ONBUILD RUN [ "echo" , "hello world" ] |
1
2
3
|
FROM 1 ..... |
1
|
STOPSIGNAL <SIGNAL> |
1
2
3
4
|
#根據執行命令是否返回0來判斷 HEALTHCHECK [OPTION] CMD <COMMAND> #禁止繼承鏡像中的健康檢查 HEALTHCHECK NONE |
-
--interval=DURATION ,多久檢查一次,默認30秒
-
--timeout=DURATION ,每次檢查等待結果的時間,默認30秒
-
--retries=N ,如果失敗了,重試幾次才最終確定失敗
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# Version: 0.0.1 # 指定使用哪個基礎鏡像 FROM centos:6.6 # 說明該鏡像的製作者和聯繫方式 MAINTAINER Rex.chen [email protected] #設置標籤,不是必須的只是爲了說明裏面的版本查看起來方便 LABEL Tomcat= "8.5.13" JDK= "1.8.0_111" # 清理一下YUM源,這個不是必須的只是爲了臨時通過YUM安裝軟件方便 RUN yum clean all # 複製安裝程序到指定目錄,我這裏使用COPY命令只是因爲我要自行解壓縮 ENV SOFT_DEST /usr/local/src ENV TOMCAT_APP_NAME apache-tomcat-8.5.13. tar .gz ENV JDK_APP_NAME jdk-8u111-linux-x64. tar .gz ADD tomcat/$TOMCAT_APP_NAME $SOFT_DEST ADD jdk/$JDK_APP_NAME $SOFT_DEST # 拷貝程序到指定目錄並設置環境變量 WORKDIR $SOFT_DEST RUN [ "mv" , "./jdk1.8.0_111" , "/usr" ] RUN [ "mkdir" , "/work/apps" , "-p" ] RUN [ "mv" , "./apache-tomcat-8.5.13" , "/work/apps" ] ENV JAVA_HOME "/usr/jdk1.8.0_111" ENV PATH $JAVA_HOME /bin :$PATH ENV CATALINA_HOME "/work/apps/apache-tomcat-8.5.13" ENV PATH $CATALINA_HOME /bin :$PATH # ENTRYPOINT命令是指定在容器啓動時執行的命令,CMD中指定使用run,因爲catalina.sh start是後臺運行,run是前臺運行 ENTRYPOINT [ "catalina.sh" ] CMD [ "run" ] # 設置容器內的應用程序使用容器的哪個端口 EXPOSE 8080 |
1
|
docker build -t tomcat8:0.1 . |
1
2
|
docker inspect tomcat8:0.1 -- format = '{{.ContainerConfig.Labels.Tomcat}}' docker inspect tomcat8:0.1 -- format = '{{.ContainerConfig.Labels.JDK}}' |
1
|
docker run -d -p 8080 --name jspSrv01 tomcat8:0.1 |