1. 程式人生 > >總結docker常用命令

總結docker常用命令

docker

1docker pull 映象

2docker ps -a 檢視所有容器
docker image 檢視映象

3docker rm 容器id 刪除容器

docker rm 一次可以指定多個容器,如果希望批量刪除所有已經退出的容器,可以執行如下命令:
docker rm -v $(docker ps -aq -f status=exited)


docker rmi 映象id 刪除映象

4docker exec -it 容器名字 /bin/bash 進入容器內
docker exec -it 容器名 ifconfig 不必進入 直接執行命令
docker attach 容器名 進入容器

5docker commit id號 映象名字 將容器修改後生成新的映象

6docker build -t test/tomcat:8.5.30 . 根據Dockerfile 建立映象
vim Dockerfile
FROM docker.io/openshift/base-centos7

LABEL maintainer='test'

RUN yum update -y && \
yum install -y net-tools && \
# yum clean all
yum -y install java-1.8.0-openjdk-devel.x86_64 &&\

curl -Ljk https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz | tar zxf - && \
mv apache-tomcat-8.5.34 /tomcat
CMD ['/tomcat/bin/catalina.sh','run']
COPY localtime /etc

6docker run -dit -p 80:8080 --name 映象id號 /bin/bash 根據映象建立容器

7docker cp 容器與本地複製檔案
docker exec centos_7 ls /tmp
docker cp centos_7:/tmp/yum.log .
ll
docker cp yum.log centos_7:/
docker exec centos_7 ls /

8docker create 建立一個新容器不啟動
docker create centos_7

9docker diff 檢視容器內更改的檔案或者資料夾
docker diff centos_7

10docker events 檢視docker服務端的一些資訊
docker events

11docker exec 容器內執行命令
docker exec centos_7 hostname 在bash終端操作命令
docker exec -it centos_7 /bin/bash 進入容器內操作

12 docker export 將容器檔案系統匯出
docker export centos_7 -o(>) centos-7.tar -o指定名稱

13 docker history 容器操作歷史命令

14docker import 將匯出的檔案系統建立一個映象
docker import centos-7.tar centos:7-new
docker run -it centos:7-new /bin/bash

15 docker info docker當前系統的容器的資訊
docker inspect

16 docker kill
docker load 從檔案匯入到映象
docker save 匯出到檔案
docker load -i 檔案

17docker login 登陸倉庫
docker login -u admin -p密碼 地址
docker logout
docker logout 推出官方
docker logout 地址 私有地址

18docker logs centos_7 顯示容器日誌

19Docker 命令: pause unpause 多個容器暫停

20Docker 命令: port 列出容器的埠對映

21Docker 命令: ps -f /-a /-l

22Docker 命令: pull and push 映象拉取/推送映象

23Docker 命令: run
docker run -d
docker run -it --rm
docker run -dit -p 80:8080 --name 映象id號 /bin/bash 根據映象建立容器

24Dockerfile 檔案介紹

docker構建映象的方法: commit、dockerfile

  1、使用commit來構建映象:
commit是基於原有映象基礎上構建的映象,使用此方法構建映象的目的:儲存映象裡的一些配置資訊和修改的資訊。相當於一個映象的快照。

  2、使用dockerfile來構建映象:
dockerfile是快速構建所需(自定義)映象。
dockerfile的指令:

  1 FROM:指定基礎映象(FROM是必備的指令,並且必須為第一條指令)。

2 RUN: 用來執行命令列命令。其基本格式:

      shell格式: RUN <命令> ,輸入在bash環境中的命令即可,一個dockerfile允許使用RUN不得超過127層,所以,使用一次RUN, 使用 ‘ \ ’ 換行,使用‘ && ’執行下一條命令。一般使用此種格式;

      exec格式: RUN <"可執行檔案", "引數1", "引數2">,此種方式像是函式呼叫中的格式;

 3 COPY: 複製檔案。 其基本格式:

      格式1:COPY <源路徑>...<目標路徑>

      格式2:COPY [“<源路徑1>”,....."<目標路徑>"]

   4 ADD: 更高階的複製檔案,在COPY的基礎上增加了一些功能,如果複製的是壓縮包的話,會直接解壓,而不需要在使用RUN解壓;

   5 CMD:容器啟動命令。其基本格式:

      shell格式: CMD <命令>

      exec格式: CMD ["可執行檔案", "引數1", "引數2"...]

      引數列表格式: CMD [“引數1”, “引數2”...],在指定了ENTRYPOINT指令後,用CMD指定具體的引數

   6 ENTRYPOINT: 入口點。其基本格式分為exec和shell,

     ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程式及引數。ENTRYPOINT在執行中可以替代,不過比CMD繁瑣,需要通過docker run 的引數--entrypoint 來指定。
當指定了ENTRYPOINT後,CMD的含義就發生了改變,不在是直接執行其命令,而是將CMD的內容作為引數傳遞給ENTRYPOINT指令。其執行時就變成了: <ENTRYPOINT> "<CMD>"

   7 ENV: 設定環境變數。(都可以使用這裡使用的變數)其基本格式:

      格式1:ENV <key> <value>

      格式2:ENV <key1>=<value1> <key2>=<value>...

  8  ARG: 構建引數。構建引數和ENV的效果一樣,都是設定環境變數,所不同的是ARG所構建的環境變數在將來容器執行時是不存在的。其基本格式:

      格式1: ARG <引數名> [=<預設值>]

      格式2: 該預設值可以在構建命令 docker build 中用 --build-arg <引數名>=<值> 來覆蓋

   9 VOLUME: 定義匿名卷。 其基本格式:

      格式1: VOLUME ["<路徑1>", "<路徑2>"...]

      格式2: VOLUME <路徑>

  10 EXPOSE: 暴露埠。EXPOSE指令是宣告執行時容器所提供的埠,在啟動容器時不會在因為這個宣告而開啟埠。 其基本格式:

      格式1: EXPOSE <埠1> [<埠2>...]

   11 WORKDIR: 指定工作目錄。其基本格式:

      格式1: WORKDIR <工作目錄路徑>

  12 USER: 指定當前使用者。USER是幫助你切換到指定使用者。 其基本格式:

      格式1: USER <使用者名稱>

  13 HEALTCHECK: 健康檢查,判斷容器的狀態是否正常。 其基本格式:

      格式1: HEALTCHECK [選項] CMD <命令> :設定檢查容器健康狀況的命令

      格式2: HEALTCHECK NONE: 如果基礎映象有健康檢查指令,使用此格式可以遮蔽掉其健康檢查指令


例如構建nginx映象
[[email protected] ~]# mkdir mynginx
[[email protected] ~]# cd mynginx/
[[email protected] mynginx]# pwd
/root/mynginx
[[email protected] ~]# wget -P /root/mynginx/ http://nginx.org/download/nginx-1.15.2.tar.gz
[[email protected] mynginx]# vi Dockerfile
#20181128
#auther wang
#test make nginx docker images
FROM centos

RUN ping -c 1 www.baidu.com #測試網路情況
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib #安裝yum相關工具
ADD nginx-1.15.2.tar.gz /usr/src/ #解壓
RUN cd /usr/src/nginx-1.15.2 \ #編譯
&& mkdir /usr/local/nginx \
&& ./configure --prefix=/usr/local/nginx && make && make install \
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
&& nginx

RUN rm -rf /usr/src/nginx-1.15.2 #刪除解壓包

EXPOSE 80 #對映埠

執行docker命令構建映象:
[[email protected] mynginx]#docker build -t nginx:v3 .
啟動自定義的映象:
[[email protected] ~]#docker run -d -p 80:80 --name nginx nginx:v3
注:這時,你無論怎麼啟動這個容器,它還是一直處於exited狀態。
經過各種解決,最終,終於知道問題出在了哪。 原來容器啟動時,它是在後臺對應著一個執行緒啟動的,它在啟動時是已經啟動了,但它執行完命令後,就退出了,
並沒有在後臺執行著,所以使用 -dit 引數讓它在後臺執行即可。
[[email protected] ~]#docker run -dit -p 80:80 --name nginx nginx:v3
然而.......

此時又出現了問題,它雖然起來了,但nginx的web網頁介面訪問不了,顯示拒絕連線!!!!

[[email protected] ~]# curl 192.168.100.22
curl: (7) Failed connect to 192.168.100.22:80; 拒絕連線
[[email protected] ~]# elinks --dump 192.168.100.22
ELinks: 拒絕連線
然後,又經過問百度,FQ看谷歌,終於找到了問題的所在。原來只要使用 exec 進入到容器裡啟動nginx就可以了。

[[email protected] ~]# docker exec -it nginx bash
[[email protected] /]# nginx
[[email protected] /]# exit
exit