Docker安裝指令
Linux安裝Docker
// 僅此一條指令就可以搞定
yum -y install docker-io
// 啟動Docker
// 同理,stop、restart意味着停止、重新開機Docker
service docker start
// 加入開機啟動
chkconfig docker on
安裝docker-compose
pip install -U docker-compose
Docker基本操作指令
建立容器
docker create Ubuntu:latest
啟動容器
docker start [CONTAINER ID]
建立并啟動容器
// 啟動容器輸出hello world之後,容器自動終止
docker run ubuntu /bin/echo ‘hello world’
// 啟動一個bash終端,允許使用者進行互動
// -t 選項讓Docker配置設定一個僞終端并綁定到容器的标準輸出上
// -i 讓容器的标準輸入保持打開
// 使用 Ctrl+d 或 exit 退出容器
docker run -t -i ubuntu:latest /bin/bash
// 容器以守護态運作,即背景運作
// -d 選項讓Docker以守護态運作
// 運作成功會傳回一個唯一的ID
docker run -itd ubuntu
終止容器運作
docker stop [CONTAINER ID]
重新開機容器
docker restart [CONTAINER ID]
檢視目前啟動的容器資訊
docker ps
檢視目前終止的容器資訊
// 僅顯示CONTAINER ID
docker ps -a -q
//顯示終止容器的詳細資訊
docker ps -a
進入容器
// 當容器使用 -d 選項背景運作之後,需要進入容器,可使用下面指令
// 該指令缺點:當多個視窗同時進入同一個容器時,所有視窗都會同步顯示,當某個視窗因指令阻塞時,其他視窗
// 也無法執行操作了
docker attach [CONTAINER ID]
// 更好的選擇
docker exec -ti [CONTAINER ID] /bin/bash
删除容器
// 該指令可删除處于終止狀态的容器,正在運作的容器該指令不奏效
docker rm [CONTAINER ID]
// 删除運作中的容器
docker rm -f [CONTAINER ID]
導出容器
// 将容器導出為test.tar
docker export [CONTAINER ID] > test.tar
導入容器
docker import test.tar test/ubuntu:v1.0
導出鏡像
docker save -o quay.io-calico-node-1.tar quay.io/calico/node
導入鏡像
docker load -i quay.io-calico-node-1.tar
容器重命名
docker rename [老容器名稱] [新容器名稱]
将容器送出為鏡像
// 參數說明:[CONTAINER ID] 容器ID、test/CentOS_test_1為REPOSITORY,即存儲庫、v1.0版本
// -a:送出鏡像作者
// -c:使用Dockerfile指令來建立鏡像
// -m:送出時的說明文字
// -p:在commit時,将容器暫停
docker commit [CONTAINER ID] test/centos_test_1:v1.0
Docker資料卷及資料卷容器
挂載本地目錄
// –privileged=true 設定為true在容器内才能通路挂載目錄
// 這條語句是将 /data/docker_test/tets_1 目錄挂載到容器的/data/test_1/目錄上
// 同時啟動容器
docker run -itd –privileged=true -v /data/docker_test/test_1/:/data/test_1/ ubuntu:latest
資料卷容器
挂載資料卷容器
// 1. 建立資料卷容器 dbdata,并在其中建立一個資料卷挂載到 /dbdata
docker run -i -t -v /dbdata –name dbdata centos
// 2. 可以在其他容器中使用 –volumes-from來挂載dbdata容器中的資料卷
// 3. 建立 db1、db2兩個容器,并從dbdata容器挂載資料卷
// 4. 此時,容器db1、db2都挂載同一個資料卷到相同的 /dbdata目錄。三個容器任何一方在該目錄下寫入,其他
// 容器都可以看到
docker run -i -t –volumes-from dbdata –name db1 centos
docker run -i -t –volumes-from dbdata –name db2 centos
// 5. 可以多次使用 –volumes-from參數來從多個容器挂載多個資料卷。還可以從其他已經挂載了容器卷的容器來
// 挂載資料卷
docker run -d –name db3 –volumes-from db1 centos
備份
// 首先利用centos鏡像建立容器worker。使用 –volumes-from dbdata 參數來讓worker容器挂載
// dbdata容器的資料卷;使用 -v $(pwd):/backup參數來挂載本地的目前目錄到worker容器的/backup
// 目錄。容器啟動後,使用 tar cvf /backup/backup.tar /dbdata指令來将 /dbdata下的内容備份
// 為容器内 /backup/backup.tar,即宿主主機目前目錄下的backup.tar
docker run –volumes-from dbdata -v $(pwd):/backup –name worker centos tar cvf /backup/backup.tar /dbdata
恢複
// 1. 建立一個帶有資料卷的容器dbdata2
docker run -v /dbdata –name dbdata2 centos /bin/bash
// 2. 建立另一個容器,挂載dbdata2的容器,并解壓備份檔案到所挂載的容器卷中即可
docker run –volumes-from dbdata2 -v $(pwd):/backup –name worker ubuntu bash
cd /dbdata
tar xvf /backup/backup.tar