Docker容器-映象使用
使用Docker映象:
映象是docker三大核心概念中最重要的
獲取映象:
映象是執行容器的前提,官方的docker hub網站已經提供了數十萬個映象供大家開放下載。
在本地可以是用docker [image] pull 命令直接從docker hub映象源下載、
簡潔的格式為 docker pull NAME:[:TAG],其中NAME是映象名稱,TAG是映象的標籤,預設TAG不寫的
話為最新
[email protected]:~$ sudo docker pull centos:7.5.1804 7.5.1804: Pulling from library/centos 7dc0dca2b151: Pull complete Digest: sha256:adbf1369c8dbeaa2bf9df0b891394e3ca09b5272a2fb54e0fadc6b14dd93fcad Status: Downloaded newer image for centos:7.5.1804
不指定TAG標籤,預設會是latest的標籤,也就是最新的
[email protected]:~$ sudo docker pull centos Using default tag: latest latest: Pulling from library/centos aeb7866da422: Pull complete Digest: sha256:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b Status: Downloaded newer image for centos:latest
檢視映象資訊
1、使用images 命令列出映象
> 使用docker images 或 docker image ls 命令可以列出本地主機上已有映象的基本資訊
[email protected]:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE python 3 3a0b867afa5c 9 days ago 95.1MB ubuntu 16.04 00a14f2a1af9 9 days ago 86.6MB test 0.1 15c59e70583f 9 days ago 84.1MB centos-vim-7.5.1804.tar.gz latest a4d3ff01fb03 10 days ago 354MB nginx 1.14 ecc98fc2f376 4 weeks ago 109MB nginx latest dbfc48660aeb 4 weeks ago 109MB debian stretch-slim 4b4471f624dc 4 weeks ago 55.3MB centos 7.5.1804 76d6bc25b8a5 5 weeks ago 200MB centos latest 75835a67d134 5 weeks ago 200MB alpine latest 196d12cf6ab1 2 months ago 4.41MB ubuntu latest cd6d8154f1e1 2 months ago 84.1MB
2、使用tag命令為映象新增標籤
為了方便後續的工作使用已經制作好的映象,可以為映象打個專門的標籤以示區分這個映象是用於哪種環境的
[email protected]:~$ sudo docker tag ubuntu:latest ubuntu-nginx:v1
# 使用docker images 可以看到映象列表多出一個ubuntu-nginx:v1的映象
[email protected]:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.5.1804 76d6bc25b8a5 5 weeks ago 200MB
centos latest 75835a67d134 5 weeks ago 200MB
ubuntu-nginx v1 cd6d8154f1e1 2 months ago 84.1MB
ubuntu latest cd6d8154f1e1 2 months ago 84.1MB
3、使用inspect 命令檢視詳細資訊
> 3.1、使用docker [image] inspect 命令可以檢視映象的詳細資訊,比如:作者、適應架構、每層的數字摘要;
[email protected]:~$ sudo docker image inspect ubuntu:16.04
[
{
"Id": "sha256:00a14f2a1af9f9e8a58062fdb484ff60b07ec67c8b4caadc02cd456cd1009859",
"RepoTags": [
"ubuntu:16.04"
],
"RepoDigests": [],
"Parent": "",
"Comment": "Imported from -",
"Created": "2018-11-06T04:57:29.713185385Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
.......
]
> 3.1、上述程式碼是以json格式顯示的,假如只要其中一項內容時,可以使用-f來指定,比如,獲取映象的DockerVersion
[email protected]:~$ sudo docker inspect -f {{.DockerVersion}} ubuntu:16.04
18.06.1-ce
4、檢視映象歷史用history命令
> 4.1、既然映象檔案由多個層組成,如何知道各個層的具體內容呢,這時候就可以使用History命令,列出映象的各層資訊
[email protected]:~$ sudo docker history centos:7.5.1804
IMAGE CREATED CREATED BY SIZE COMMENT
76d6bc25b8a5 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 5 weeks ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 5 weeks ago /bin/sh -c #(nop) ADD file:8f4b3be0c1427b158… 200MB
5、查詢映象
> 5.1、用docker search命令可以搜尋Docker Hub官方倉庫中的映象。
語法為 docker search [option] keyword
命令選項:
-f, --filter filter:過濾輸出內容
--format string: 格式化輸出內容;
--limit int: 限制輸出結果個數,預設為25個;
--no-trunc: 不截斷輸出結果
比如說,要搜尋nginx的映象:
[email protected]:~$ sudo docker search --filter=is-official=true nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 10194 [OK]
kong Open-source Microservice & API Management la… 245 [OK]
搜尋被收藏數超過8包括tensorflow的映象:
[email protected]er-docker:~$ sudo docker search --filter=stars=8 tensorflow
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tensorflow/tensorflow Official docker images for deep learning fra… 1182
jupyter/tensorflow-notebook Jupyter Notebook Scientific Python Stack w/ … 91
xblaster/tensorflow-jupyter Dockerized Jupyter with tensorflow 51 [OK]
tensorflow/serving Official images for TensorFlow Serving (http… 25
floydhub/tensorflow tensorflow 15 [OK]
bitnami/tensorflow-serving Bitnami Docker Image for TensorFlow Serving 13 [OK]
6、刪除和清理映象
> 6.1、使用標籤刪除映象:
> 使用docker rmi或docker image rm命令刪除映象
> 格式docker rmi image [Image ....],其中image可以為標籤或id
支援選項包括:
-f, -force: 強制刪除映象,即使有容器依賴它`
-no-prune:不要清理未帶標籤的父映象`
# 使用docker rmi 刪除映象
[email protected]:~$ sudo docker rmi ubuntu-nginx:v1
Untagged: ubuntu-nginx:v1
# 使用docker image rm 來刪除映象
[email protected]:~$ sudo docker image rm test:0.1
Untagged: test:0.1
Deleted: sha256:15c59e70583fe7f327431857faafe9b6954f0ed9120d040155e997401acb7f7d
Deleted: sha256:532dc9a946da8489d6cc68b154ed5854da011698d90ed30787eac04b7de0557b
> 6.2、使用映象ID來刪除映象,這裡要注意一點,如果要刪的映象正在被容器使用的話是刪不掉的,要先把容器幹掉之後才能刪映象,也可以使用強制刪除那就需要加上-f,不過不建議使用。
[email protected]:~$ sudo docker image rm dbfc48660aeb
Untagged: nginx:latest
Untagged: [email protected]:b73f527d86e3461fd652f62cf47e7b375196063bbbd503e853af5be16597cb2e
Deleted: sha256:dbfc48660aeb7ef0ebd74b4a7e0822520aba5416556ee43acb9a6350372e516f
Deleted: sha256:1a34717cf175feab802f74f0edd1c41a811165f6e6af5cddf9b33f9211acde10
Deleted: sha256:df31c4d2dc314417ca1507e7e6ac4e732683a67b5aec725ede170ea7c2ecc99e
> 6.3、清理時間久而未使用的映象檔案,可以使用docker image prune 進行清理;
選項:
-a, -all 刪除所有無用映象,不光是是臨時映象
-filter filter;只清理符合給定過濾器的映象;
-f, -force: 強制刪除映象,不需要進行提示確應
# 清理一些時間久遠的遺留映象檔案層,不過這裡是新環境也不存在遺留問題。
[email protected]:~$ sudo docker image prune -f
Total reclaimed space: 0B
7、建立映象
> 7.1、建立映象的方法主要有三種;基於已有映象的容器建立、基於本地模版匯入、基於Dockerfile建立。
> 7.1.1、基於已有容器建立、
> 檢視已有的映象,然後用centos這個映象來建立屬於自己的映象;
[[email protected] ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd 2.4.37-alpine 45c9b7b78130 2 weeks ago 91.8MB
mysql 5.7 702fb0b7837f 2 weeks ago 372MB
centos 7.5.1804 76d6bc25b8a5 5 weeks ago 200MB
> 7.1.2、首先,啟動一個centos的基礎映象
[[email protected] ~]#docker run --name test1 -it centos:7.5.1804 /bin/bash
> 7.1.3、製作一個新的映象檔案。
[[email protected] ~]#docker commit -m "yum net-tools" test1 centos-net-toos:v1
sha256:e81a7f5593c755a11f2bfe1bd1a5ddfe12547b68a67edc4e1c8a2182420ca0f4
> 7.1.4、檢視image列表,會有個新映象在裡面,也就是剛剛製作好的映象檔案
[[email protected] ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-net-toos v1 e81a7f5593c7 33 seconds ago 299MB
httpd 2.4.37-alpine 45c9b7b78130 2 weeks ago 91.8MB
mysql 5.7 702fb0b7837f 2 weeks ago 372MB
centos 7.5.1804 76d6bc25b8a5 5 weeks ago 200MB
7.2、基於本地模版匯入:
也可以直接從一個作業系統模版檔案匯入一個成一個新映象檔案
[email protected]:~$ ls
centos-7.5.1804-base.tar.gz Desktop Downloads Music Public ubuntu-18.04.tar.gz
centos-vim-7.5.1804.tar.gz Documents examples.desktop Pictures Templates Videos
[email protected]:~$
[email protected]:~$ sudo cat ubuntu-18.04.tar.gz | sudo docker import - ubuntu:16.04
sha256:00a14f2a1af9f9e8a58062fdb484ff60b07ec67c8b4caadc02cd456cd1009859
7.3、基於dockerfile建立
> 7.3.1、建立Dockerfile檔案
[email protected]:~$ sudo vim Dockerfile
FROM debian:stretch-slim
LABEL maintainer="cobbler <[email protected]>" version="1.0"
RUN apt-get update && \
apt-get install -y python3 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
> 7.3.2、使用build命令建立新映象檔案;
[email protected]:~$ sudo docker image build -t python:3 .
8、匯出和匯入映象:
> 8.1、匯出已製作好的映象
> 匯出來之後就可以部署到別的docker容器裡面[email protected]:~/images$ sudo docker save -o nginx-1.14.tar.gz nginx:1.14 [email protected]:~/images$ ls nginx-1.14.tar.gz
> 8.2、匯入已製作好的映象檔案:
> 8.2.1、先把剛匯出的映象檔案複製到另外一臺新部署好的docker容器裡面去[email protected]:~/images$ sudo scp nginx-1.14.tar.gz [email protected]:/root [email protected]'s password: nginx-1.14.tar.gz 100% 107MB 53.7MB/s 00:02
> 8.2.2、在新docker主機裡面匯入剛傳過來的映象檔案
[[email protected] ~]#docker load -i nginx-1.14.tar.gz
f4a5f8f59caa: Loading layer 54.2MB/54.2MB
19c605f267f4: Loading layer 3.584kB/3.584kB
Loaded image: nginx:1.14
>8.2.3、檢視映象列表:
[[email protected] ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-net-toos v1 e81a7f5593c7 4 hours ago 299MB
httpd 2.4.37-alpine 45c9b7b78130 2 weeks ago 91.8MB
mysql 5.7 702fb0b7837f 2 weeks ago 372MB
nginx 1.14 ecc98fc2f376 4 weeks ago 109MB
centos 7.5.1804 76d6bc25b8a5 5 weeks ago 200MB