天天看點

docker 常用指令記錄

關于Dockerfile檔案,推薦 這篇部落格 https://www.cnblogs.com/jsonhc/p/7767669.html

基礎指令

  • 鏡像
拉取鏡像:
docker  pull   nginx                       拉取最新鏡像 latest
docker  pull   nginx:1.17.0            拉取指定版本鏡像

檢視鏡像:
docker images                              檢視鏡像清單
        
查找鏡像:
docker search httpd                        

運作鏡像:
docker run -t -i nginx:1.17.0 /bin/bash                    以鏡像nginx1.17為藍本,運作一個容器,并進入終端,并執行 yum -y update,更新yum
        
更新鏡像:
docker commit -m="yum  has update" -a="lz" e278efb69851 lizheng/nginx:v2           為更新了yum的容器建立一個副本,也就是建立一個新的鏡像   -m:送出的描述資訊   -a:指定鏡像作者

建構鏡像:(需要Dockerfile檔案)
                
       Dockerfile檔案内容如下
       runoob@runoob:~$ cat Dockerfile 
       FROM    centos:6.7
       MAINTAINER      Fisher "[email protected]"

       RUN     /bin/echo 'root:123456' |chpasswd
       RUN     useradd lizheng
       RUN     /bin/echo 'lizheng:123456' |chpasswd
       RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
       EXPOSE  22
       EXPOSE  80
       CMD     /usr/sbin/sshd -D

每一個指令都會在鏡像上建立一個新的層,每一個指令的字首都必須是大寫的。

第一條FROM,指定使用哪個鏡像源

RUN 指令告訴docker 在鏡像内執行指令,安裝了什麼。。。

然後,我們使用 Dockerfile 檔案,通過 docker build 指令來建構一個鏡像。
        
docker build -t lizheng/centos:6.7 .                                 (注意:指令最後有一個點,代表目前目錄)

-t :指定要建立的目标鏡像名

 . :Dockerfile 檔案所在目錄,可以指定Dockerfile 的絕對路徑

鏡像标簽:
docker tag e60c235d2qfe  lizheng/centos:dev

删除鏡像:  
        
docker rmi   e60c235d2qfe                                                                   删除指定鏡像,指定ID或者鏡像名稱  
docker rmi `docker images -q`                                                              删除所有鏡像              
docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    删除鏡像,其中doss-api為關鍵字
        

           
  • 容器 指明容器時一般用容器ID或容器名稱都可以。
檢視容器
docker  ps                                    檢視運作的容器
docker  ps  -a                               檢視所有的容器(包括已經停止的)
docker ps -l                                  檢視最後建立的一個容器
        

docker port bf08b7f2cd89           檢視主控端和容器的端口映射(前者是主控端,後者是容器端口)
docker top  my_nginx                  檢視容器内部運作的程序
docker logs -f bf08b7f2cd89        檢視容器内部的标準輸出。
docker inspect  容器                    檢視容器底層資訊,它會傳回一個 JSON 檔案記錄着 Docker 容器的配置和狀态資訊

進入容器:
sudo docker exec -it 775c7c9ee1e1 /bin/bash           推薦這種方式,除此之外還有docker attach、  ssh 、nsenter等方式  
  
删除容器
docker rm                                    容器ID (容器名稱)
docker rm `docker ps -a -q`         删除所有容器
    
啟動容器:
docker start     my_nginx             啟動一個已經停止的容器
docker restart    my_nginx           重新開機一個正在運作的容器 
    
停止容器:
docker stop  my_nginx                停止一個正在運作的容器
           
  • 運作一個容器
docker run --name lizheng-nginx -p 8803:80 -d     -v /lizheng/test/nginx/www:/usr/share/nginx/html:ro     -v /lizheng/test/nginx/conf/conf.d:/etc/nginx/conf.d:ro     --link myphp-fpm:php     nginx:v1.17.0

運作nginx容器,并啟動, -v 是挂載卷。 --link是連接配接nginx和php, 最後的nginx:v1.17.0是鏡像
docker run --name test-nginx -d -p8081:80 nginx:v1.17.0 /usr/local/nginx/sbin/nginx -g "daemon off;"
docker run --name nginx8083 -p 8083:80 -d nginx


           
  • 檢視挂載卷位址
docker inspect redis-slave2 | grep Mount -A 20
           

知止而後有定,定而後能靜,靜而後能安,安而後能慮,慮而後能得。

所謂誠其意者,毋自欺也。