1. 程式人生 > >Docker中通過模板創建鏡像,Docker容器、倉庫及數據管理

Docker中通過模板創建鏡像,Docker容器、倉庫及數據管理

run 倉庫管理 doc temp 數據卷 blob 客戶端 新建 not

1.通過模板創建鏡像


(1)首先去下載一個模板

http://openvz.org/Download/templates/precreated //下載速度不快,阿銘下載了一個centos6的模板centos-6-x86-minimal.tar.gz

(2)導入該鏡像的命令為:

cat centos-6-x86-minimal.tar.gz|docker import - centos6

(3)查看導入的鏡像

docker images

(4)導出鏡像:

把現有鏡像,導出為一個文件:

docker save -o centos-net.tar centos-net

我們還可以用該文件恢復本地鏡像:

技術分享圖片 技術分享圖片

(5)刪除本地鏡像

技術分享圖片 技術分享圖片

(6)導入鏡像

docker load --input aming-centos.tar 或者

docker load < aming-centos.tar

技術分享圖片技術分享圖片

技術分享圖片

docker push image_name //可以把自己的鏡像傳到dockerhub官方網站上去,但前提是需要先註冊一個用戶,後續如果有需求再研究吧

2.容器管理

docker create -it centos6 bash

//這樣可以創建一個容器,但該容器並沒有啟動

技術分享圖片技術分享圖片

docker start a0fa08fb3a76 //啟動容器後,可以使用 docker ps 查看到,有start 就有stop,和restart

之前我們使用的docker run 相當於先create再start

(1)創建容器

docker run -it centos bash

技術分享圖片技術分享圖片

這樣進入了一個虛擬終端裏面,我們可以運行一些命令,使用命令exit或者ctrl d 退出該bash,當退出後這個容器也會停止。

(2)讓容器在後臺運行

docker run -d 可以讓容器在後臺運行

比如:docker run -d centos bash -c "while :; do echo "123"; sleep 2; done"

技術分享圖片技術分享圖片

(3)給容器自定義名字

docker run --name web -itd centos bash

// --name 給容器自定義名字

技術分享圖片技術分享圖片

(4)讓容器退出後直接刪除

docker run --rm -it centos bash -c "sleep 30" //--rm 可以讓容器退出後直接刪除,在這裏命令執行完容器就會退出

技術分享圖片技術分享圖片

技術分享圖片技術分享圖片

(5)獲取到容器的運行歷史信息

docker logs 可以獲取到容器的運行歷史信息,用法如下

docker logs a0fa08fb3a76

技術分享圖片技術分享圖片

docker attach 可以進入一個後臺運行的容器,比如

docker attach container_id //但是attach命令不算好用,比如我們想要退出終端,就得exit了,這樣容器也就退出了,還有一種方法

(6)進入容器

docker exec -it a0fa08fb3a76 bash //可以臨時打開一個虛擬終端,並且exit後,容器依然運行著

(7)刪除容器

docker rm a0fa08fb3a76 //container_id是ps的時候查看到的,這樣就可以把container刪除,如果是運行的容器,可以加-f

(8)遷移容器

docker export a0fa08fb3a76 > file.tar // 導出容器,可以遷移到其他機器上,需要導入

(9)導入容器生成鏡像

cat file.tar |docker import - fxq_testos //這樣會生成fxq_tesos的鏡像


3.倉庫管理

(1)下載registry 鏡像

docker pull registry

#下載registry 鏡像,registy為docker官方提供的一個鏡像,我們可以用它來創建本地的docker私有倉庫。

技術分享圖片技術分享圖片

(2)以registry鏡像啟動容器

docker run -d -p 5000:5000 registry

#以registry鏡像啟動容器,-p會把容器的端口映射到宿主機上,:左邊為宿主機監聽端口,:右邊為容器監聽端口

技術分享圖片技術分享圖片

curl 127.0.0.1:5000/v2/_catalog //可以訪問它

下面我們來把其中一個鏡像上傳到私有倉庫

技術分享圖片技術分享圖片

docker tag centos 192.168.1.169:5000/centos

//標記一下tag,必須要帶有私有倉庫的ip:port

(3)標記的鏡像給推送到私有倉庫

docker push 192.168.1.169:5000/centos

//把標記的鏡像給推送到私有倉庫

技術分享圖片技術分享圖片

此時並不會成功,Get https://192.168.1.169:5000/v2/: http: server gave HTTP response to HTTPS client

更改配置文件,vi /etc/docker/daemon.json

//更改為

{ "insecure-registries":["192.168.1.169:5000"] }

(4)重啟服務

systemctl restart docker

(5)查看容器

docker ps -a

//查看容器已經關閉,還需要啟動

技術分享圖片技術分享圖片

docker start e5b31b

//這裏的 e5b31b 為registry容器id

(6)再次push

docker push 192.168.1.169:5000/centos

技術分享圖片技術分享圖片

技術分享圖片技術分享圖片

(7)查看到推送上來的鏡像

curl 127.0.0.1:5000/v2/_catalog

//可以查看到推送上來的鏡像

技術分享圖片技術分享圖片

(8)客戶端下載鏡像:

前提:

安裝好docker-ce ,

更改配置文件,vi /etc/docker/daemon.json

//更改為

{ "insecure-registries":["192.168.1.169:5000"] }

重啟服務

systemctl restart docker

(9)拉取鏡像:

docker pull 192.168.1.169:5000/centos

技術分享圖片技術分享圖片

技術分享圖片技術分享圖片


4.數據管理

(1)掛載本地的目錄到容器裏

docker run -tid -v /data/:/data centos bash

//-v 用來指定掛載目錄,:前面的/data/為宿主機本地目錄,:後面的/data/為容器裏的目錄,會在容器中自動創建

技術分享圖片技術分享圖片

(2)掛載數據卷

其實我們掛載目錄的時候,可以指定容器name,如果不指定就隨機定義了。比如上面我們沒有指定,它就生成了一個名字為angry_shirley,這個名字可以使用命令 docker ps 看最右側一列

docker run -itd --volumes-from angry_shirley centos bash

這樣,我們使用centos鏡像創建了新的容器,並且使用了 angry_shirley 容器的數據卷

技術分享圖片技術分享圖片

(3)定義數據卷容器

有時候,我們需要多個容器之間相互共享數據,類似於linux裏面的NFS,所以就可以搭建一個專門的數據卷容器,然後其他容器直接掛載該數據卷。

首先建立數據卷容器

docker run -itd -v /data/ --name testvol centos bash

//註意這裏的/data/是容器的/data目錄,並非本地的/data/目錄。

然後讓其他容器掛載該數據卷

技術分享圖片技術分享圖片

docker run -itd --volumes-from testvol centos bash

技術分享圖片技術分享圖片

在新容器中新建1.txt

技術分享圖片技術分享圖片

看原有testvol主機上的/data目錄裏就是有1.txt了

技術分享圖片技術分享圖片


Docker中通過模板創建鏡像,Docker容器、倉庫及數據管理