Docker鏡像加速配置;Docker鏡像常用操作;Dcoker容器常用操作。 ...
Docker鏡像加速配置;Docker鏡像常用操作;Dcoker容器常用操作。
鏡像加速器
國內從 Docker Hub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器。國內很多雲服務商都提供了國內加速器服務,例如:
1 網易雲加速器 https://hub-mirror.c.163.com 2 阿裡雲加速器(需登錄賬號獲取): https://cr.console.aliyun.com/cn-hangzhou/mirrors
國內各大雲服務商均提供了 Docker 鏡像加速服務,建議根據運行 Docker 的雲平臺選擇對應的鏡像加速服務,具體請參考官方文檔。
在CentOS7系統,請在 /etc/docker/daemon.json 中寫入如下內容(如果文件不存在請新建該文件)
1 [root@docker01 ~]# vim /etc/docker/daemon.json 2 { 3 "registry-mirrors": [ 4 "https://hub-mirror.c.163.com" 5 ] 6 }
註意,一定要保證該文件符合 json 規範,否則 Docker 將不能啟動。
之後重新啟動服務。
1 systemctl daemon-reload 2 systemctl restart docker
檢查加速器是否生效
執行如下命令,如果從結果中看到瞭如下內容,說明配置成功。
1 [root@docker01 ~]# docker info # 顯示整個系統的信息 2 ……………… 3 Registry Mirrors: 4 https://hub-mirror.c.163.com/ 5 Live Restore Enabled: false 6 7 WARNING: bridge-nf-call-iptables is disabled 8 WARNING: bridge-nf-call-ip6tables is disabled
Docker鏡像操作
說明:Docker 運行容器前需要本地存在對應的鏡像,如果本地不存在該鏡像,Docker 會從鏡像倉庫下載該鏡像。
search搜索鏡像
1 [root@docker01 ~]# docker search centos 2 NAME DESCRIPTION STARS OFFICIAL AUTOMATED 3 centos The official build of CentOS. 5934 [OK] 4 ansible/centos7-ansible Ansible on Centos7 128 [OK] 5 jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 114 [OK] 6 consol/centos-xfce-vnc Centos container with "headless" VNC session… 114 [OK] 7 centos/mysql-57-centos7 MySQL 5.7 SQL database server 74 8 …………
pull從鏡像中心下載鏡像
1 # 格式:docker pull <image_name>:<tag> ,如果沒有tag,預設為 latest 2 [root@docker01 ~]# docker pull centos:latest 3 latest: Pulling from library/centos 4 8a29a15cefae: Pull complete 5 Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 6 Status: Downloaded newer image for centos:latest
push推送鏡像到鏡像中心
1 格式:docker push <image_name>:<tag> 2 [root@docker01 ~]# docker push registry.cn-beijing.aliyuncs.com/google_registry/centos:latest
說明:如果有疑問可先忽略,後面搭建私有倉庫文章會再次說明的。
images列出鏡像
1 [root@docker01 ~]# docker images # 或者 docker image ls 2 REPOSITORY TAG IMAGE ID CREATED SIZE 3 centos latest 470671670cac 2 months ago 237MB
save鏡像保存到本地
1 # 格式:docker save -o <保存的文件名> <image_name:tag>|<image_id> 2 [root@docker01 docker_test]# docker save -o centos_docker_20200413.tar centos:latest 3 [root@docker01 docker_test]# ll -h 4 total 234M 5 -rw------- 1 root root 234M Apr 13 16:21 centos_docker_20200413.tar
rmi刪除鏡像
1 # 格式:docker rmi <image_name:tag>|<image_id> 2 [root@docker01 docker_test]# docker images 3 REPOSITORY TAG IMAGE ID CREATED SIZE 4 centos latest 470671670cac 2 months ago 237MB 5 [root@docker01 docker_test]# docker rmi 470671670cac # 刪除鏡像 6 [root@docker01 docker_test]# docker images 7 REPOSITORY TAG IMAGE ID CREATED SIZE
load導入鏡像
1 # 格式:docker load -i <image_file> 2 [root@docker01 docker_test]# docker load -i centos_docker_20200413.tar 3 [root@docker01 docker_test]# docker images 4 REPOSITORY TAG IMAGE ID CREATED SIZE 5 centos latest 470671670cac 2 months ago 237MB
tag標簽
1 # 格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 2 [root@docker01 docker_test]# docker images 3 REPOSITORY TAG IMAGE ID CREATED SIZE 4 centos latest 470671670cac 2 months ago 237MB 5 [root@docker01 docker_test]# docker tag centos:latest centos:20200413 6 [root@docker01 docker_test]# docker images 7 REPOSITORY TAG IMAGE ID CREATED SIZE 8 centos 20200413 470671670cac 2 months ago 237MB 9 centos latest 470671670cac 2 months ago 237MB
使用:根據需要給docker鏡像打一個新標簽。
info顯示整個系統的信息
1 [root@docker01 ~]# docker info 2 Containers: 0 3 Running: 0 4 Paused: 0 5 Stopped: 0 6 Images: 1 7 Server Version: 18.06.3-ce 8 Storage Driver: overlay2 9 Backing Filesystem: xfs 10 Supports d_type: true 11 Native Overlay Diff: true 12 Logging Driver: json-file 13 Cgroup Driver: cgroupfs 14 Plugins: 15 Volume: local 16 Network: bridge host macvlan null overlay 17 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog 18 Swarm: inactive 19 Runtimes: runc 20 Default Runtime: runc 21 Init Binary: docker-init 22 containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e 23 runc version: a592beb5bc4c4092b1b1bac971afed27687340c5 24 init version: fec3683 25 Security Options: 26 seccomp 27 Profile: default 28 Kernel Version: 3.10.0-1062.el7.x86_64 29 Operating System: CentOS Linux 7 (Core) 30 OSType: linux 31 Architecture: x86_64 32 CPUs: 2 33 Total Memory: 1.777GiB 34 Name: docker01 35 ID: XIHU:XNWU:II7A:YXUH:BOZ3:JSGG:J3P2:CU2Z:5QHA:5Y64:PZ4V:62DI 36 Docker Root Dir: /var/lib/docker 37 Debug Mode (client): false 38 Debug Mode (server): false 39 Registry: https://index.docker.io/v1/ 40 Labels: 41 Experimental: false 42 Insecure Registries: 43 127.0.0.0/8 44 Registry Mirrors: 45 https://hub-mirror.c.163.com/ 46 Live Restore Enabled: false 47 48 WARNING: bridge-nf-call-iptables is disabled 49 WARNING: bridge-nf-call-ip6tables is disabled
system鏡像體積查看
另外一個需要註意的問題是,docker image ls 列表中的鏡像體積總和並非是所有鏡像實際硬碟消耗。由於 Docker 鏡像是多層存儲結構,並且可以繼承、復用,因此不同鏡像可能會因為使用相同的基礎鏡像,從而擁有共同的層。由於 Docker 使用 Union FS,相同的層只需要保存一份即可,因此實際鏡像硬碟占用空間很可能要比這個列表鏡像大小的總和要小的多。
可以通過以下命令來便捷的查看鏡像、容器、數據捲所占用的空間。
1 [root@docker01 docker_test]# docker system df 2 TYPE TOTAL ACTIVE SIZE RECLAIMABLE 3 Images 2 0 440.1MB 440.1MB (100%) 4 Containers 0 0 0B 0B 5 Local Volumes 0 0 0B 0B 6 Build Cache 0 0 0B 0B
inspect顯示鏡像或容器的詳情
1 # 格式:docker inspect <鏡像ID>|<鏡像名>|<容器ID>|<容器名> 2 [root@docker01 ~]# docker inspect centos:latest # 顯示鏡像詳情 3 [root@docker01 ~]# docker inspect 67ba647b0151 # 顯示容器詳情
Docker容器操作
run創建容器
1 # 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 2 [root@docker01 ~]# docker run -i -t --name centos01 centos:latest /bin/bash 3 [root@f7c4da3cecad /]# # 此時已進入docker容器 4 [root@f7c4da3cecad /]# exit # 退出容器,此時容器會停止【正常情況】 5 [root@docker01 ~]#
參數說明:
1 -i 互動式操作 2 -t 分配一個終端 3 --name 運行的容器名稱 4 最後的/bin/bash 要執行的命令
ps查看容器
1 [root@docker01 ~]# docker ps # 查看正在運行的容器 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3 [root@docker01 ~]# 4 [root@docker01 ~]# docker ps -a # 查看所有容器,包括運行和停止的 5 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6 f7c4da3cecad centos:latest "/bin/bash" 4 minutes ago Exited (0) 36 seconds ago centos01
start啟動容器
1 # 格式:docker start <容器名>|<容器ID> 2 [root@docker01 ~]# docker ps -a 3 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4 f7c4da3cecad centos:latest "/bin/bash" 10 minutes ago Exited (0) 3 seconds ago centos01 5 [root@docker01 ~]# docker start f7c4da3cecad # 啟動容器 6 f7c4da3cecad 7 [root@docker01 ~]# docker ps 8 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9 f7c4da3cecad centos:latest "/bin/bash" 10 minutes ago Up 3 seconds centos01
restart重啟容器
1 # 格式:docker restart <容器名>|<容器ID> 2 [root@docker01 ~]# docker ps 3 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4 f7c4da3cecad centos:latest "/bin/bash" 15 minutes ago Up 4 minutes centos01 5 [root@docker01 ~]# docker restart f7c4da3cecad # 重啟容器 6 f7c4da3cecad 7 [root@docker01 ~]# docker ps 8 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9 f7c4da3cecad centos:latest "/bin/bash" 15 minutes ago Up 1 second centos01
stop停止容器
1 # 格式:docker stop <容器名>|<容器ID> 2 [root@docker01 ~]# docker ps 3 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4 f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Up 4 minutes centos01 5 [root@docker01 ~]# docker stop f7c4da3cecad # 停止容器 6 f7c4da3cecad 7 [root@docker01 ~]# docker ps -a 8 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9 f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Exited (0) 10 seconds ago centos01
rm刪除容器
1 # 格式:docker rm <容器名>|<容器ID> 2 [root@docker01 ~]# docker ps -a 3 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4 f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Exited (0) 10 seconds ago centos01 5 [root@docker01 ~]# docker rm f7c4da3cecad # 刪除已停止的容器 6 f7c4da3cecad
說明:如果要強制刪除正在運行的容器,使用 docker rm -f <容器ID>。不過生產環境不建議強制刪除容器,防止誤刪除。
rename容器重命名
1 # 格式:docker rename CONTAINER NEW_NAME 2 [root@docker01 ~]# docker ps 3 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4 67ba647b0151 centos:latest "/bin/bash" About a minute ago Up About a minute centos01 5 [root@docker01 ~]# docker rename 67ba647b0151 centos001 # 容器重命名 6 [root@docker01 ~]# docker ps 7 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8 67ba647b0151 centos:latest "/bin/bash" 2 minutes ago Up About a minute centos001
exec進入容器或在運行容器中執行命令
進入容器1 [root@docker01 ~]# docker exec -it f7c4da3cecad bash 2 [root@f7c4da3cecad /]#
說明:不建議通過 docker attach 方式進入容器。
在容器外讓指定容器執行命令
1 # 不要有 -t 選項,因為不需要分配 tty 終端 2 [root@docker01 ~]# docker exec -i f7c4da3cecad bash -c "ps -ef" 3 UID PID PPID C STIME TTY TIME CMD 4 root 1 0 0 10:12 pts/0 00:00:00 /bin/bash 5 root 78 0 0 10:19 ? 00:00:00 ps -ef
cp複製文件或目錄
將宿主機文件或目錄,拷貝到docker容器中1 [root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root" 2 total 12 3 -rw------- 1 root root 2366 Jan 13 21:49 anaconda-ks.cfg 4 -rw-r--r-- 1 root root 435 Jan 13 21:49 anaconda-post.log 5 -rw------- 1 root root 2026 Jan 13 21:49 original-ks.cfg 6 [root@docker01 ~]# 7 [root@docker01 ~]# docker cp /usr/bin/telnet 67ba647b0151:/root/ # 拷貝文件 8 [root@docker01 ~]# docker cp /root/basedOptimi 67ba647b0151:/root/ # 拷貝目錄 9 [root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root" 10 total 112 11 -rw------- 1 root root 2366 Jan 13 21:49 anaconda-ks.cfg 12 -rw-r--r-- 1 root root 435 Jan 13 21:49 anaconda-post.log 13 drwxr-xr-x 2 root root 30 Mar 8 19:59 basedOptimi 14 -rw------- 1 root root 2026 Jan 13 21:49 original-ks.cfg 15 -rwxr-xr-x 1 root root 101776 Aug 3 2017 telnet
將docker容器中的文件或目錄,拷貝到宿主機中
1 [root@docker01 ~]# docker cp 67ba647b0151:/root/original-ks.cfg /root/ # 拷貝文件 2 [root@docker01 ~]# docker cp 67ba647b0151:/etc /root/ # 拷貝目錄
logs查看容器日誌
1 [root@docker01 ~]# docker ps 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3 f7c4da3cecad centos:latest "/bin/bash" 3 hours ago Up 1 second centos01 4 # 獲取容器日誌 5 [root@docker01 ~]# docker logs -f --tail 500 f7c4da3cecad 6 …………
參數說明:
1 -f 持續列印輸出 2 --tail 500 列印日誌最後的500行
stats容器使用資源統計
可用於監控
1 [root@docker01 ~]# docker stats <容器ID>|<容器名稱> # 持續監控 2 [root@docker01 ~]# docker stats --no-stream <容器ID>|<容器名稱> # 不是持續監控,只顯示第一次返回的結果
top容器中運行的進程
1 [root@docker01 ~]# docker ps 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3 67ba647b0151 centos:latest "/bin/bash" 2 hours ago Up 2 hours centos001 4 # 查看容器中運行的進程信息 5 [root@docker01 ~]# docker top 67ba647b0151 6 UID PID PPID C STIME TTY TIME CMD 7 root 3302 3285 0 21:13 pts/0 00:00:00 /bin/bash
port容器映射特定埠
容器映射埠有:隨機埠映射、指定單個埠映射、指定多個埠映射
獲取鏡像1 [root@docker01 ~]# docker pull registry.cn-beijing.aliyuncs.com/google_registry/nginx:1.17 2 [root@docker01 ~]# docker tag ed21b7a8aee9 nginx:1.17 3 [root@docker01 ~]# docker images | grep 'nginx' 4 nginx 1.17 ed21b7a8aee9 2 weeks ago 127MB 5 registry.cn-beijing.aliyuncs.com/google_registry/nginx 1.17 ed21b7a8aee9 2 weeks ago 127MB
映射隨機埠
1 [root@docker01 ~]# docker run -d -P --name nginx01 nginx:1.17 2 e90c9faaf8e3387920dd9763bf5c7df9dd17856673868bb512cec78741ff71dc 3 [root@docker01 ~]# docker ps 4 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5 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 前面為宿主機埠,後面為容器埠
容器日誌:
[root@docker01 ~]# docker logs -f --tail 500 nginx01
瀏覽器訪問:
映射單個指定埠
1 [root@docker01 ~]# docker run -d -p 81:80 --name nginx02 nginx:1.17 2 04478222f0dc981883f25504164be3af7da49248886cee7386ccc89b80cc57a1 3 [root@docker01 ~]# docker ps | grep 'nginx02' 4 04478222f0dc nginx:1.17 "nginx -g 'daemon of…" 29 seconds ago Up 28 seconds 0.0.0.0:81->80/tcp nginx02
瀏覽器訪問:
映射多個指定埠
1 [root@docker01 ~]# docker run -d -p 85:80 -p 445:443 --name nginx03 nginx:1.17 2 5886e52ff8e934bc827c8d7753a532b9062bd045799d0658a008e371e6ecd09c 3 [root@docker01 ~]# docker ps | grep 'nginx03' 4 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簡介與安裝
完畢!
———END———
如果覺得不錯就關註下唄 (-^O^-) !