如何從 Hub Docker 下載你要的image建立你的 Docker

目前 Hub Docker (https://hub.docker.com/) 上有需多 images 可以 pull 下來,這樣一來可以省去你去放光碟片,一步一步安裝你要的軟體。

使用 docker pull centos:latest

centos(為提供者):latest(為最新版號,你也可以指定你要的版本)

[root@localhost]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete 
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
docker pull centos

使用 docker images

查看你目前本地有那些images 檔

[root@localhost]# docker images
REPOSITORY     TAG      IMAGE ID       CREATED          SIZE
centos         latest   470671670cac   2 weeks ago      237MB

使用 docker run

docker run -it -v /var:/var -p 80:80 -d –name cantos-server centos:latest bash

[root@localhost]# docker run -it -v /var:/var -d --name cantos-server -p 80:80 centos:latest bash

run:標準的Docker建立Container並執行指令
-v:使得 Container 裡面的檔案路徑Mapping 到實體主機的檔案路徑。
-t:attach時Container的螢幕會接到原來的螢幕上。
-i:attach時鍵盤輸入會被Container接手。
-d:run指令的無數值參數,背景執行。
--name cantos-server:run指令的文字參數,指定這個Container的名字為cantos-server。
-p 80:80:run指令的數值參數,把主機的80通訊埠所有流量轉發到cantos-server這個Container的80通訊埠。
centos:latest:run指令的文字參數,使用centos:latest來填入web這個Container。  Docker用指令加參數就可以完成99%的動作,非常方便。

docker ps -a

查看目前運行中的 docker

[root@localhost]# docker ps -a
CONTAINER ID IMAGE         COMMAND CREATED    STATUS  PORTS  NAMES
faad74610808 centos:latest "bash" 5 minutes ago Up 3 minutes centos-server

docker exec -it centos-server bash

進入你的 docker container,執行指令的操作

[root@localhost]# docker exec -it centos-server bash
[root@faad74610808 /]# cd /var/www/

docker tag 470671670cac centos:v8.1.2

docker tag [IMAGE ID] [IMAGE NAME]:[新TAG]
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

[root@localhost]# docker tag 470671670cac centos:v8.1.2
[root@localhost]# docker images
REPOSITORY     TAG      IMAGE ID       CREATED           SIZE
centos         v8.1.2   470671670cac   About an hour ago 237MB
centos         latest   470671670cac   2 weeks ago       237MB

docker push centos:v8.1.2

上傳修正後的版本至 Hub Docker

[root@localhost]# docker push centos:v8.1.2
The push refers to repository [docker.io/_/centos]
06de3346e44f: Layer already exists 
v8.1.1: digest: sha256:360f2a03128fa4d2bb0fasdfa1612cc3127fe0a56a37bacd2fdc88f51e25045 size: 529

docker rmi centos:latest

刪除你本地的 image 檔

[root@localhost]# docker rmi centos:latest
Untagged: centos:latest
Untagged: centos@sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007