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