1. 程式人生 > 其它 >docker的安裝以及常用命令詳解

docker的安裝以及常用命令詳解

一、docker簡介

Docker 是一個開源的應用容器引擎,基於Go 語言並遵從 Apache2.0 協議開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

二、docker安裝

訪問官網https://www.docker.com/get-started,選擇相應的作業系統進行安裝即可

對於macOS 我們可以使用 Homebrew 來安裝 Docker。

Homebrew 的 Cask 已經支援 Docker for Mac,因此可以很方便的使用 Homebrew Cask 來進行安裝:

$ brew install --cask --appdir=/Applications docker

> Creating Caskroom at /usr/local/Caskroom
> We'll set permissions properly so we won't need sudo in the future
Password: # 輸入 macOS 密碼
> Satisfying dependencies
> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0

%
> Verifying checksum for Cask docker
> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺 docker was successfully installed!

在載入 Docker app 後,點選 Next,可能會詢問你的 macOS 登陸密碼,你輸入即可。之後會彈出一個 Docker 執行的提示視窗,狀態列上也有有個小鯨魚的圖示()。

三、常用命令

  • Docker環境資訊—docker [info|version]
  • 容器生命週期管理 —docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
  • 容器操作運維 —docker [ps|inspect|top|attach|wait|export|port|rename|stat]
  • 容器rootfs命令 —docker [commit|cp|diff]
  • 映象倉庫 —docker [login|pull|push|search]
  • 本地映象管理 —docker [build|images|rmi|tag|save|import|load]
  • 容器資源管理—docker [volume|network]
  • 系統日誌資訊—docker [events|history|logs]

1、顯示 Docker 版本資訊

docker version  

2、顯示 Docker 系統資訊,包括映象和容器數

docker info 

3、幫助

docker --help

四、映象管理

1、列出映象

docker images

2、獲取一個新的映象

docker pull nginx:1.18.0

3、查詢映象

我們可以從Docker Hub網站來搜尋映象,Docker Hub網址為:https://hub.docker.com/

我們也可以使用docker search命令來搜尋映象。比如我們需要一個 httpd 的映象來作為我們的 web 服務。我們可以通過docker search命令搜尋httpd來尋找適合我們的映象。

docker search httpd

4、刪除映象

docker image rm 映象名標籤或者ID
docker rmi 映象名標籤或者ID
docker rmi -f 映象名標籤或者ID     #強制刪除

5、映象匯入與匯出

方法一:
docker save image:tag > xxx.tar                   # save匯出.tar
docker load < xxx.tar                             # load匯入映象
方法二:
docker export image > xxx.tar                     # export匯出成.tar
cat xxx.tar | sudo docker import - image:tag      # import匯入映象

注:兩種方法不可混用

五、容器生命週期

1、執行容器

docker run -it nginx:latest sh
# -d: 後臺執行容器    -i:以互動模式執行容器    -t:為容器重新分配一個偽輸入終端   -it常一起使用
# -p: 指定埠對映,格式為:主機(宿主)埠:容器埠    --name="nginx-lb":為容器指定一個名稱
# -v: 掛載目錄    -e username="ritchie":設定環境變數    -env-file=[]:從指定檔案讀入環境變數  

2、啟動被停止的容器

docker start 容器名或ID

3、停止執行中的容器

docker stop 容器名或ID

4、重啟容器

docker restart 容器名或ID

5、殺掉執行中的容器

docker kill -s KILL 容器名或者ID

6、刪除容器

docker rm 容器名或ID

7、暫停容器中所有程序

暫停資料庫容器db01提供服務:   docker pause db01

8、啟動容器中所有程序

恢復資料庫容器db01提供服務:   docker unpause db01

9、執行的容器中執行命令

docker exec -it 容器名或ID sh
# -d:分離模式,在後臺執行     -i:即使沒有附加也保持開啟     -t:分配一個偽終端

10、刪除所有停止狀態的容器

docker rm `docker ps -a|grep Exited|awk '{print $1}'`

六、容器操作

1、列出容器

docker ps   # 引數 -a:顯示所有的容器    -f:根據條件過濾顯示    -l:顯示最近建立的容器  
            # 引數  -q:靜默模式,只顯示容器編號     -s:顯示總的檔案大小。

2、獲取容器/映象的元資料

docker inspect 容器名或ID | grep IPAddress   顯示容器的IP

3、獲取容器的日誌

docker logs  # 引數: -f:跟蹤日誌輸出  --since:顯示某個開始時間的所有日誌  -t:顯示時間戳  --tail:僅列出最新N條容器日誌

4、檢視容器的埠對映情況

docker port 容器名或ID

5、容器改名

docker rename  舊容器名  新容器名

七、rootfs命令

1、容器中建立一個新的映象

docker commit -a "作者" -m "說明文字" 容器名或ID 映象名:標籤

2、容器與主機之間資料拷貝

docker cp /datadir xxx:/datapath     # 主機/datadir目錄拷貝到容器xxx中,目錄重新命名為/datapath

3、檢查容器中檔案結構的更改

docker diff mymysql                  # 檢視容器mymysql的檔案結構更改

八、映象倉庫

1、登陸到Docker映象倉庫

docker login -u 使用者名稱 -p 密碼  # 登陸到Docker映象倉庫,如果未指定映象倉庫地址,預設為官方倉庫Docker Hub

2、登出Docker映象倉庫

docker logout  # 登出Docker映象倉庫,如果未指定映象倉庫地址,預設為官方倉庫 Docker Hub

3、從映象倉庫拉取映象

docker pull java:latest    # 拉去映象庫最新的java映象

4、將映象上傳到映象倉庫

docker push java:latest    # 上傳本地映象java:latest到映象倉庫中

5、從Docker Hub查詢映象

docker search 
引數:     --automated:只列出 automated build型別的映象  
          --no-trunc :顯示完整的映象描述  
          -s :列出收藏數不小於指定值的映象。

例1:使用docker安裝並啟動nginx

docker run -d --name nginx -p 80:80 -v /root/nginx/html:/usr/share/nginx/html nginx:1.18.0

例2:安裝並執行Jenkins

chenshifengdeMacBook-Pro:~ chenshifeng$ docker volume create jenkins_shifeng
jenkins_shifeng
chenshifengdeMacBook-Pro:~ chenshifeng$ docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_shifeng:/var/jenkins_home jenkins/jenkins:lts

例3:安裝testlink

建立容器網路:

docker network create testlink

執行資料庫:

docker run -d  --name mariadb -e MARIADB_ROOT_PASSWORD=mariadb -e MARIADB_USER=bn_testlink -e MARIADB_PASSWORD=bn_testlink -e MARIADB_DATABASE=bitnami_testlink --net testlink -v ${PWD}/mariadb:/bitnami bitnami/mariadb:10.3.22

執行testlink

docker run -d -p 80:80 -p 443:443 --name testlink -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_PASSWORD=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --net testlink -v ${PWD}/testlink:/bitnami bitnami/testlink:1.9.20

預設使用者名稱:user,預設密碼:bitnami