
鏡像加速器
國內(nèi)從 Docker Hub 拉取鏡像有時(shí)會(huì)遇到困難,此時(shí)可以配置鏡像加速器。國內(nèi)很多云服務(wù)商都提供了國內(nèi)加速器服務(wù),例如:
網(wǎng)易云加速器 https://hub-mirror.c.163.com
阿里云加速器(需登錄賬號(hào)獲取): https://cr.console.aliyun.com/cn-hangzhou/mirrors
國內(nèi)各大云服務(wù)商均提供了 Docker 鏡像加速服務(wù),建議根據(jù)運(yùn)行 Docker 的云平臺(tái)選擇對(duì)應(yīng)的鏡像加速服務(wù),具體請(qǐng)參考官方文檔。
在CentOS7系統(tǒng),請(qǐng)?jiān)?/etc/docker/daemon.json 中寫入如下內(nèi)容(如果文件不存在請(qǐng)新建該文件)
[root@docker01 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com"
]
}
注意,一定要保證該文件符合 json 規(guī)范,否則 Docker 將不能啟動(dòng)。
之后重新啟動(dòng)服務(wù)。
systemctl daemon-reload
systemctl restart docker
檢查加速器是否生效
執(zhí)行如下命令,如果從結(jié)果中看到了如下內(nèi)容,說明配置成功。
[root@docker01 ~]# docker info # 顯示整個(gè)系統(tǒng)的信息
………………
Registry Mirrors:
https://hub-mirror.c.163.com/
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Dcoker鏡像操作
說明:Docker 運(yùn)行容器前需要本地存在對(duì)應(yīng)的鏡像,如果本地不存在該鏡像,Docker 會(huì)從鏡像倉庫下載該鏡像。
search搜索鏡像
[root@docker01 ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5934 [OK]
ansible/centos7-ansible Ansible on Centos7 128 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 114 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 114 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 74
…………

pull從鏡像中心下載鏡像
# 格式:docker pull <image_name>:<tag> ,如果沒有tag,默認(rèn)為 latest
[root@docker01 ~]# docker pull centos:latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
push推送鏡像到鏡像中心
格式:docker push <image_name>:<tag>
[root@docker01 ~]# docker push registry.cn-beijing.aliyuncs.com/google_registry/centos:latest
說明:如果有疑問可先忽略,后面搭建私有倉庫文章會(huì)再次說明的。
images列出鏡像
[root@docker01 ~]# docker images # 或者 docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac 2 months ago 237MB
save鏡像保存到本地
# 格式:docker save -o <保存的文件名> <image_name:tag>|<image_id>
[root@docker01 docker_test]# docker save -o centos_docker_20200413.tar centos:latest
[root@docker01 docker_test]# ll -h
total 234M
-rw------- 1 root root 234M Apr 13 16:21 centos_docker_20200413.tar
rmi刪除鏡像
# 格式:docker rmi <image_name:tag>|<image_id>
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac 2 months ago 237MB
[root@docker01 docker_test]# docker rmi 470671670cac # 刪除鏡像
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
load導(dǎo)入鏡像
# 格式:docker load -i <image_file>
[root@docker01 docker_test]# docker load -i centos_docker_20200413.tar
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac 2 months ago 237MB
tag標(biāo)簽
# 格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac 2 months ago 237MB
[root@docker01 docker_test]# docker tag centos:latest centos:20200413
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 20200413 470671670cac 2 months ago 237MB
centos latest 470671670cac 2 months ago 237MB
使用:根據(jù)需要給docker鏡像打一個(gè)新標(biāo)簽。
info顯示整個(gè)系統(tǒng)的信息
[root@docker01 ~]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 18.06.3-ce
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: a592beb5bc4c4092b1b1bac971afed27687340c5
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1062.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.777GiB
Name: docker01
ID: XIHU:XNWU:II7A:YXUH:BOZ3:JSGG:J3P2:CU2Z:5QHA:5Y64:PZ4V:62DI
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://hub-mirror.c.163.com/
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
system鏡像體積查看
另外一個(gè)需要注意的問題是,docker image ls 列表中的鏡像體積總和并非是所有鏡像實(shí)際硬盤消耗。由于 Docker 鏡像是多層存儲(chǔ)結(jié)構(gòu),并且可以繼承、復(fù)用,因此不同鏡像可能會(huì)因?yàn)槭褂孟嗤幕A(chǔ)鏡像,從而擁有共同的層。由于 Docker 使用 Union FS,相同的層只需要保存一份即可,因此實(shí)際鏡像硬盤占用空間很可能要比這個(gè)列表鏡像大小的總和要小的多。
可以通過以下命令來便捷的查看鏡像、容器、數(shù)據(jù)卷所占用的空間。
[root@docker01 docker_test]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 440.1MB 440.1MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
inspect顯示鏡像或容器的詳情
# 格式:docker inspect <鏡像ID>|<鏡像名>|<容器ID>|<容器名>
[root@docker01 ~]# docker inspect centos:latest # 顯示鏡像詳情
[root@docker01 ~]# docker inspect 67ba647b0151 # 顯示容器詳情
Dcoker容器操作
run創(chuàng)建容器
# 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@docker01 ~]# docker run -i -t --name centos01 centos:latest /bin/bash
[root@f7c4da3cecad /]# # 此時(shí)已進(jìn)入docker容器
[root@f7c4da3cecad /]# exit # 退出容器,此時(shí)容器會(huì)停止【正常情況】
[root@docker01 ~]#
參數(shù)說明:
-i 交互式操作
-t 分配一個(gè)終端
--name 運(yùn)行的容器名稱
最后的/bin/bash 要執(zhí)行的命令
ps查看容器
[root@docker01 ~]# docker ps # 查看正在運(yùn)行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker01 ~]#
[root@docker01 ~]# docker ps -a # 查看所有容器,包括運(yùn)行和停止的
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 4 minutes ago Exited (0) 36 seconds ago centos01
start啟動(dòng)容器
# 格式:docker start <容器名>|<容器ID>
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 10 minutes ago Exited (0) 3 seconds ago centos01
[root@docker01 ~]# docker start f7c4da3cecad # 啟動(dòng)容器
f7c4da3cecad
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 10 minutes ago Up 3 seconds centos01
restart重啟容器
# 格式:docker restart <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 15 minutes ago Up 4 minutes centos01
[root@docker01 ~]# docker restart f7c4da3cecad # 重啟容器
f7c4da3cecad
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 15 minutes ago Up 1 second centos01
stop停止容器
# 格式:docker stop <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Up 4 minutes centos01
[root@docker01 ~]# docker stop f7c4da3cecad # 停止容器
f7c4da3cecad
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Exited (0) 10 seconds ago centos01
rm刪除容器
# 格式:docker rm <容器名>|<容器ID>
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Exited (0) 10 seconds ago centos01
[root@docker01 ~]# docker rm f7c4da3cecad # 刪除已停止的容器
f7c4da3cecad
說明:如果要強(qiáng)制刪除正在運(yùn)行的容器,使用 docker rm -f <容器ID>。不過生產(chǎn)環(huán)境不建議強(qiáng)制刪除容器,防止誤刪除。
rename容器重命名
# 格式:docker rename CONTAINER NEW_NAME
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" About a minute ago Up About a minute centos01
[root@docker01 ~]# docker rename 67ba647b0151 centos001 # 容器重命名
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" 2 minutes ago Up About a minute centos001
exec進(jìn)入容器或在運(yùn)行容器中執(zhí)行命令
進(jìn)入容器
[root@docker01 ~]# docker exec -it f7c4da3cecad bash
[root@f7c4da3cecad /]#
說明:不建議通過 docker attach 方式進(jìn)入容器。
在容器外讓指定容器執(zhí)行命令
# 不要有 -t 選項(xiàng),因?yàn)椴恍枰峙?tty 終端
[root@docker01 ~]# docker exec -i f7c4da3cecad bash -c "ps -ef"
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:12 pts/0 00:00:00 /bin/bash
root 78 0 0 10:19 ? 00:00:00 ps -ef
cp復(fù)制文件或目錄
將宿主機(jī)文件或目錄,拷貝到docker容器中
[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
total 12
-rw------- 1 root root 2366 Jan 13 21:49 anaconda-ks.cfg
-rw-r--r-- 1 root root 435 Jan 13 21:49 anaconda-post.log
-rw------- 1 root root 2026 Jan 13 21:49 original-ks.cfg
[root@docker01 ~]#
[root@docker01 ~]# docker cp /usr/bin/telnet 67ba647b0151:/root/ # 拷貝文件
[root@docker01 ~]# docker cp /root/basedOptimi 67ba647b0151:/root/ # 拷貝目錄
[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
total 112
-rw------- 1 root root 2366 Jan 13 21:49 anaconda-ks.cfg
-rw-r--r-- 1 root root 435 Jan 13 21:49 anaconda-post.log
drwxr-xr-x 2 root root 30 Mar 8 19:59 basedOptimi
-rw------- 1 root root 2026 Jan 13 21:49 original-ks.cfg
-rwxr-xr-x 1 root root 101776 Aug 3 2017 telnet
將docker容器中的文件或目錄,拷貝到宿主機(jī)中
[root@docker01 ~]# docker cp 67ba647b0151:/root/original-ks.cfg /root/ # 拷貝文件
[root@docker01 ~]# docker cp 67ba647b0151:/etc /root/ # 拷貝目錄

logs查看容器日志
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Up 1 second centos01
# 獲取容器日志
[root@docker01 ~]# docker logs -f --tail 500 f7c4da3cecad
…………
參數(shù)說明:
-f 持續(xù)打印輸出
--tail 500 打印日志最后的500行
stats容器使用資源統(tǒng)計(jì)
可用于監(jiān)控
[root@docker01 ~]# docker stats <容器ID>|<容器名稱> # 持續(xù)監(jiān)控
[root@docker01 ~]# docker stats --no-stream <容器ID>|<容器名稱> # 不是持續(xù)監(jiān)控,只顯示第一次返回的結(jié)果

top容器中運(yùn)行的進(jìn)程
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" 2 hours ago Up 2 hours centos001
# 查看容器中運(yùn)行的進(jìn)程信息
[root@docker01 ~]# docker top 67ba647b0151
UID PID PPID C STIME TTY TIME CMD
root 3302 3285 0 21:13 pts/0 00:00:00 /bin/bash
port容器映射特定端口
容器映射端口有:隨機(jī)端口映射、指定單個(gè)端口映射、指定多個(gè)端口映射
獲取鏡像
[root@docker01 ~]# docker pull registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17
[root@docker01 ~]# docker tag ed21b7a8aee9 nginx:1.17
[root@docker01 ~]# docker images | grep 'nginx'
nginx 1.17 ed21b7a8aee9 2 weeks ago 127MB
registry.cn-beijing.aliyuncs.com/google_registry/nginx 1.17 ed21b7a8aee9 2 weeks ago 127MB
映射隨機(jī)端口
[root@docker01 ~]# docker run -d -P --name nginx01 nginx:1.17
e90c9faaf8e3387920dd9763bf5c7df9dd17856673868bb512cec78741ff71dc
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e90c9faaf8e3 nginx:1.17 "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 0.0.0.0:1025->80/tcp nginx01
說明:
0.0.0.0:1025->80/tcp 前面為宿主機(jī)端口,后面為容器端口
容器日志:
[root@docker01 ~]# docker logs -f --tail 500 nginx01

瀏覽器訪問:

映射單個(gè)指定端口
[root@docker01 ~]# docker run -d -p 81:80 --name nginx02 nginx:1.17
04478222f0dc981883f25504164be3af7da49248886cee7386ccc89b80cc57a1
[root@docker01 ~]# docker ps | grep 'nginx02'
04478222f0dc nginx:1.17 "nginx -g 'daemon of…" 29 seconds ago Up 28 seconds 0.0.0.0:81->80/tcp nginx02
瀏覽器訪問:

映射多個(gè)指定端口
[root@docker01 ~]# docker run -d -p 85:80 -p 445:443 --name nginx03 nginx:1.17
5886e52ff8e934bc827c8d7753a532b9062bd045799d0658a008e371e6ecd09c
[root@docker01 ~]# docker ps | grep 'nginx03'
5886e52ff8e9 nginx:1.17 "nginx -g 'daemon of…" 12 seconds ago Up 11 seconds 0.0.0.0:85->80/tcp, 0.0.0.0:445->443/tcp nginx03
推薦閱讀
1、 Docker簡介與安裝
到此這篇關(guān)于詳解Docker鏡像與容器的常見操作的文章就介紹到這了,更多相關(guān)Docker鏡像與容器操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!