docker命令簡單使用

a...Z發表於2020-12-10

轉載地址

dock er 常用命令

安裝Docker
1、下載Docker的依賴環境

yum -y install yum-utils device-mapper-persistent-data lvm2

2、設定下載Docker的映象源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安裝Docker

yum makacache fast
yum -y install docker-ce

4、啟動Docker,並設定為開機自啟動

#啟動命令:
systemctl start docker
#重啟命令:
systemctl restart docker
#設定為開機自啟動
systemctl enable docker

5、解除安裝Docker

yum remove docker-ce
rm -rf /var/lib/docker

Docker映象的中央倉庫
1、官方中央倉庫地址。缺點是國外網站,開啟比較慢。

https://hub.docker.com/
2、國內中央倉庫地址。比較推薦使用,因為開啟速度真的很快。

http://hub.daocloud.io/
而且,這種倉庫還有使用說明書,簡直太方便了。

Docker容器完整使用教程
操作Docker映象的常用命令
1、從中央倉庫拉取映象

docker pull 映象名稱[:tag]
#比如:拉取tomcat映象,這個映象名稱去"http://hub.daocloud.io/"中搜尋
docker pull daocloud.io/library/tomcat:8.5.15-jre8
2、檢視本地已經存在的映象列表

docker images

3、刪除本地映象

docker rmi 映象id

4、映象檔案的匯入、匯出

#將本地映象檔案匯出
docker save -o 匯出的路徑 映象id
#比如,匯出到當前目錄下,映象起名叫tomcat-image
docker save -o ./tomcat-image fe3999eb9
#匯入映象檔案
docker load -i 映象檔案
#比如
docker load -i tomcat-image
5、修改映象名稱

docker tag 映象id 新的映象名稱:版本
操作Docker容器的常用命令
1、建立並執行容器

#在執行該命令之前,如果沒有執行拉取映象的操作,該命令會自動根據映象名稱從中央倉庫下載映象
#–name,指定新建容器的名稱
#-d,代表後臺執行容器
#-p,對映當前linux的埠和容器的埠
docker run --name 容器名稱 -d -p 宿主機埠:容器埠 映象id
2、檢視正在執行的容器

#檢視所有容器
docker ps -a
3、檢視容器的日誌

#-f,可以滾動檢視日誌的最後幾行
docker logs -f 容器id
4、進入容器內部

docker exec -it 容器id bash

5、停止容器

#停止指定的容器
docker stop 容器id
#停止所有容器,命令docker ps -qa就是檢視所有容器的id
docker stop $(docker ps -qa)

6、刪除容器

#刪除容器前,需要先停止正在執行的容器
#刪除指定的容器
docker rm 容器id
#刪除所有容器,命令docker ps -qa就是檢視所有容器的id
docker rm $(docker ps -qa)

7、啟動容器

#停止容器後,可以使用該命令重新啟動容器
docker start 容器id

資料卷

如果直接修改容器內部的目錄檔案,並不方便,此時引入了資料卷的功能。

資料卷的作用:將宿主機的目錄對映到容器內部的目錄。此時它倆如同一個目錄,在宿主機中修改目錄下的內容,容器內部的目錄下內容就會跟著一起改變。

1、建立資料卷,此時建立的資料卷還沒對映到容器內部的目錄

docker volume create 資料卷的名稱
建立的資料卷,預設存放在宿主機的/var/lib/docker/volumes/目錄下。
2、檢視資料卷的詳細資訊

docker volume inspect 資料卷的名稱

3、檢視當前宿主機下的所有資料卷

docker volume ls

4、刪除資料卷

docker volume rm 資料卷的名稱

5、建立並執行容器,同時建立資料卷並與容器內部的目錄相對映

docker run --name 容器名稱 -d -p 宿主機埠:容器埠 -v 資料卷的名稱:容器內部被對映的目錄 映象id
#比如
docker run --name tomcat -d -p 8080:8080 -v volume_tomcat:/usr/local/data 映象id
#也可以給宿主機的資料卷指定具體的目錄,實際工作中也推薦使用這種方式
docker run --name tomcat -d -p 8080:8080 -v /usr/local/volume_tomcat:/usr/local/data 映象id

自定義映象

通過自定義映象,並且上傳到中央倉庫,下次就可以從中央倉庫拉取該自定義的映象使用。

Dockerfile是一個文字檔案,包含了一條條的指令,每一條指令構建一層,基於基礎映象,最終構建出一個新的映象。

Docker容器完整使用教程
Dockerfile檔案內容編寫可以參考中央倉庫中映象的案例。比如以tomcat為例:

https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/corretto/Dockerfile

Docker容器完整使用教程
建立好Dockerfile檔案後,接下來必須先執行構建映象命令,才能使用自定義的映象。

構建映象

#最後的小黑點必須有,另外該命令需在Dockerfile所在的目錄執行
docker build -t 映象名稱 .
Dokcerfile帶來的好處:

對於開發人員:可以為開發團隊提供一個完全一致的開發環境。
對於測試人員:可以直接拿開發時所構建的映象或者通過dockerfile檔案構建一個新的映象開始工作。
對於運維人員:在部署時,可以實現應用的無縫移植。
服務編排Docker-Compose
之前執行一個映象,需要新增大量的引數,但是現在可以通過Docker-Compose編寫這些引數。

Dockers-Compose可以幫助我們批量的管理容器。使用的方式就是通過docker-compose.yml檔案。

使用Docker-Compose,首先需要下載它。

1、去GitHub官網搜尋,下載1.24.1版本

https://github.com/docker/compose/releases/tag/1.24.1

Docker容器完整使用教程
2、將下載好的檔案新增到Linux伺服器上

Docker容器完整使用教程
Docker容器完整使用教程
3、給上傳好的檔案新增可執行許可權

如果不新增執行許可權,會導致如下許可權不夠的問題。

Docker容器完整使用教程
#檔案重新命名
mv docker-compose-Linux-x86_64.txt docker-compose
#給檔案新增可執行許可權,Linux伺服器上檔案的許可權設定,請參考。
chmod +x docker-compose
如果你對Linux伺服器上檔案的許可權設定還了解的不徹底,請參考Linux目錄下檔案的許可權設定。

4、為docker-compose設定環境變數

為什麼要設定環境變數呢?看下在設定環境變數前和設定環境變數後的對比,就知道了。

Docker容器完整使用教程
只有配置了環境變數,才能在當前伺服器的任何目錄下執行Docker-compose的命令。

設定環境變數的步驟:

將/usr/local/目錄下的docker-compose檔案移動到/usr/local/bin/目錄下
cp docker-compose ./bin/
修改/etc/profile,新增如下內容
/usr/local/bin/:
Docker容器完整使用教程
儲存修改,執行命令source /etc/profile,讓修改立即生效。

5、檢視Docker-Compose的安裝版本

docker-compose -version
Docker-Compose的應用:管理MySQL和Tomcat容器
1、編寫docker-compose.yml檔案

version: ‘3.1’
services:
mysql: #服務的名稱
restart: always #代表只要docker啟動,那麼這個容器也會跟著一起啟動
image: daocloud.io/library/mysql:5.7.4 #映象的路徑
container_name: mysql #指定容器的名稱
ports: #指定埠號的對映,可以配置多個對映
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root #指定MySQL的ROOT使用者的登入密碼
TimeZone: Asia/Shanghai #指定時區
volumes: #指定資料卷對映,可以配置多個資料卷對映
- /usr/local/volumes/mysql_volume:/var/lib/mysql
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.0.43-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TimeZone: Asia/Shanghai
volumes:
- /usr/local/volumes/tomcat_volume/webapps:/usr/local/tomcat/webapps
- /usr/local/volumes/tomcat_volume/logs:/usr/local/tomcat/logs
2、基於docker-compose.yml檔案啟動管理的容器

將docker-compose.yml檔案扔到Linux伺服器上。

執行如下命令,預設會找當前目錄下的docker-compose.yml檔案。

#啟動管理的容器
docker-compose up -d
#停止並刪除管理的容器
docker-compose down
#開啟已經存在的由docker-compose管理的容器
docker-compose start
#關閉已經存在的由docker-compose管理的容器
docker-compose stop開啟已經存在的由docker-compose管理的容器停止並刪除管理的容器
docker-compose restart
docker-compose配合Dockerfile使用
它倆結合使用可以在生成自定義映象的同時,啟動當前的映象,並且由docker-compose去管理容器。

1、編寫Dockerfile檔案

from daocloud.io/library/tomcat:8.0.43-jre8
copy myapp.war /usr/local/tomcat/webapps
2、編寫docker-compose.yml檔案

version: ‘3.1’
services:
myapp: #服務的名稱
restart: always #代表只要docker啟動,那麼這個容器也會跟著一起啟動
build: #構建自定義的映象
context: /usr/local/docker-data/ #指定Dockerfile檔案的所在路徑
dockerfile: Dockerfile #指定Dockerfile的檔名稱
image: myapp:1.0 #上面構建好的映象
container_name: myapp #指定容器的名稱
ports: #指定埠號的對映,可以配置多個對映
- 8081:8080
environment:
TimeZone: Asia/Shanghai #指定時區
Dockerfile和docker-compose.yml檔案建立好以後,執行如下命令,啟動基於docker-compose.yml以及Dockerfile檔案構建的自定義映象。

docker-compose up -d
執行上面的命令之後,如果想再次構建自定義映象,可以執行命令:

docker-compose build

相關文章