Docker镜像与容器的常用操作
Docker镜像加速配置;Docker镜像常用操作;Dcoker容器常用操作。
镜像加速器
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:
网易云加速器 https://hub-mirror.c.163.com
阿里云加速器(需登录账号获取): https://cr.console.aliyun.com/cn-hangzhou/mirrors
国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。
在CentOS7系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
[root@docker01 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub-mirror.c.163.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
systemctl daemon-reload
systemctl restart docker
检查加速器是否生效
执行如下命令,如果从结果中看到了如下内容,说明配置成功。
[root@docker01 ~]# docker info # 显示整个系统的信息
………………
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
Docker镜像操作
说明:Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。
search搜索镜像
[root@docker01 ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. [OK]
ansible/centos7-ansible Ansible on Centos7 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… [OK]
centos/mysql--centos7 MySQL 5.7 SQL database server
…………

pull从镜像中心下载镜像
# 格式:docker pull <image_name>:<tag> ,如果没有tag,默认为 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
说明:如果有疑问可先忽略,后面搭建私有仓库文章会再次说明的。
images列出镜像
[root@docker01 ~]# docker images # 或者 docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac 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------- root root 234M Apr : 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 months ago 237MB
[root@docker01 docker_test]# docker rmi 470671670cac # 删除镜像
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
load导入镜像
# 格式: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 months ago 237MB
tag标签
# 格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 470671670cac months ago 237MB
[root@docker01 docker_test]# docker tag centos:latest centos:
[root@docker01 docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 470671670cac months ago 237MB
centos latest 470671670cac months ago 237MB
使用:根据需要给docker镜像打一个新标签。
info显示整个系统的信息
[root@docker01 ~]# docker info
Containers:
Running:
Paused:
Stopped:
Images:
Server Version: 18.06.-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.-.el7.x86_64
Operating System: CentOS Linux (Core)
OSType: linux
Architecture: x86_64
CPUs:
Total Memory: .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/
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镜像体积查看
另外一个需要注意的问题是,docker image ls 列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于 Docker 使用 Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。
可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。
[root@docker01 docker_test]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images .1MB .1MB (%)
Containers 0B 0B
Local Volumes 0B 0B
Build Cache 0B 0B
inspect显示镜像或容器的详情
# 格式:docker inspect <镜像ID>|<镜像名>|<容器ID>|<容器名>
[root@docker01 ~]# docker inspect centos:latest # 显示镜像详情
[root@docker01 ~]# docker inspect 67ba647b0151 # 显示容器详情
Docker容器操作
run创建容器
# 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@docker01 ~]# docker run -i -t --name centos01 centos:latest /bin/bash
[root@f7c4da3cecad /]# # 此时已进入docker容器
[root@f7c4da3cecad /]# exit # 退出容器,此时容器会停止【正常情况】
[root@docker01 ~]#
参数说明:
-i 交互式操作
-t 分配一个终端
--name 运行的容器名称
最后的/bin/bash 要执行的命令
ps查看容器
[root@docker01 ~]# docker ps # 查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker01 ~]#
[root@docker01 ~]# docker ps -a # 查看所有容器,包括运行和停止的
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Exited () seconds ago centos01
start启动容器
# 格式:docker start <容器名>|<容器ID>
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Exited () seconds ago centos01
[root@docker01 ~]# docker start f7c4da3cecad # 启动容器
f7c4da3cecad
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Up seconds centos01
restart重启容器
# 格式:docker restart <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" minutes ago Up 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" minutes ago Up second centos01
stop停止容器
# 格式:docker stop <容器名>|<容器ID>
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c4da3cecad centos:latest "/bin/bash" hours ago Up 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" hours ago Exited () 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" hours ago Exited () seconds ago centos01
[root@docker01 ~]# docker rm f7c4da3cecad # 删除已停止的容器
f7c4da3cecad
说明:如果要强制删除正在运行的容器,使用 docker rm -f <容器ID>。不过生产环境不建议强制删除容器,防止误删除。
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" minutes ago Up About a minute centos001
exec进入容器或在运行容器中执行命令
[root@docker01 ~]# docker exec -it f7c4da3cecad bash
[root@f7c4da3cecad /]#
说明:不建议通过 docker attach 方式进入容器。
# 不要有 -t 选项,因为不需要分配 tty 终端
[root@docker01 ~]# docker exec -i f7c4da3cecad bash -c "ps -ef"
UID PID PPID C STIME TTY TIME CMD
root : pts/ :: /bin/bash
root : ? :: ps -ef
cp复制文件或目录
[root@docker01 ~]# docker exec -i 67ba647b0151 bash -c "ls -l /root"
total
-rw------- root root Jan : anaconda-ks.cfg
-rw-r--r-- root root Jan : anaconda-post.log
-rw------- root root Jan : 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
-rw------- root root Jan : anaconda-ks.cfg
-rw-r--r-- root root Jan : anaconda-post.log
drwxr-xr-x root root Mar : basedOptimi
-rw------- root root Jan : original-ks.cfg
-rwxr-xr-x root root Aug telnet
将docker容器中的文件或目录,拷贝到宿主机中
[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" hours ago Up second centos01
# 获取容器日志
[root@docker01 ~]# docker logs -f --tail f7c4da3cecad
…………
参数说明:
-f 持续打印输出
--tail 打印日志最后的500行
stats容器使用资源统计
可用于监控
[root@docker01 ~]# docker stats <容器ID>|<容器名称> # 持续监控
[root@docker01 ~]# docker stats --no-stream <容器ID>|<容器名称> # 不是持续监控,只显示第一次返回的结果

top容器中运行的进程
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67ba647b0151 centos:latest "/bin/bash" hours ago Up hours centos001
# 查看容器中运行的进程信息
[root@docker01 ~]# docker top 67ba647b0151
UID PID PPID C STIME TTY TIME CMD
root : pts/ :: /bin/bash
port容器映射特定端口
容器映射端口有:随机端口映射、指定单个端口映射、指定多个端口映射
[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 weeks ago 127MB
registry.cn-beijing.aliyuncs.com/google_registry/nginx 1.17 ed21b7a8aee9 weeks ago 127MB
映射随机端口
[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…" seconds ago Up seconds 0.0.0.0:->/tcp nginx01
说明:
0.0.0.0:->/tcp 前面为宿主机端口,后面为容器端口
容器日志:
[root@docker01 ~]# docker logs -f --tail nginx01

浏览器访问:

映射单个指定端口
[root@docker01 ~]# docker run -d -p : --name nginx02 nginx:1.17
04478222f0dc981883f25504164be3af7da49248886cee7386ccc89b80cc57a1
[root@docker01 ~]# docker ps | grep 'nginx02'
04478222f0dc nginx:1.17 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp nginx02
浏览器访问:

映射多个指定端口
[root@docker01 ~]# docker run -d -p : -p : --name nginx03 nginx:1.17
5886e52ff8e934bc827c8d7753a532b9062bd045799d0658a008e371e6ecd09c
[root@docker01 ~]# docker ps | grep 'nginx03'
5886e52ff8e9 nginx:1.17 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp, 0.0.0.0:->/tcp nginx03
推荐阅读
1、 Docker简介与安装
完毕!
———END———
如果觉得不错就关注下呗 (-^O^-) !

Docker镜像与容器的常用操作的更多相关文章
- docker系列四之docker镜像与容器的常用命令
docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...
- docker镜像、容器以及命令操作
docker image docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7 docker image是 ...
- Docker镜像和容器
本节内容: 安装Docker 卸载docker 镜像基本操作 容器基本操作 一.安装Docker Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 ...
- Docker容器化【Docker镜像与容器相关命令】
# Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有 ...
- docker镜像和容器的导出导入
本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...
- docker镜像与容器
目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...
- docker 入门(docker 镜像 、容器、仓库)
一.关于docker 镜像 .容器.仓库之间的关系 镜像(Image): 类似于虚拟机 的镜像 容器(Container): 类似于操作系统(或者说是独立的软件), 由镜像可以创建大量的容器. 仓库( ...
- 快速批量删除 docker 镜像或容器
原文:快速批量删除 docker 镜像或容器 点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~ docker 本身并没有提供批量删除的功能,当有大量的镜像或者容器需要删除的时候,手 ...
随机推荐
- SPOJ687 Repeats
本篇是罗穗骞<后缀数组——处理字符串的有力工具>的读书笔记. 知识点: 后缀数组.RMQ 解题思路: 枚举长度 \(L\),然后检查长度为 \(L\) 的子串最多能连续重复几次. 对于给定 ...
- redis 启动停止重启
启动服务: service redis start 停止服务: service redis stop 重启服务: service redis restart
- 转 js自定义事件——Event和CustomEvent
之前在学习自定义事件时,在MDN的Event.initEvent()页面顶端有写:该特性已从Web标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性. 作 ...
- shell判断语句
1.test命令 也可以用[ ]来表示 返回值为0时为true,返回值为1时为false. 例1:str1=aaa,str2=bbb 1)判断字符串是否为空(省略了-n选项,-n选项是不为空,-z ...
- echarts实现漏斗转化率图表效果
1.在用echarts实现图表的旅途中遇到这样一个需求,用柱图展示漏斗转化效果,下图展示: 别的不多说了,就说解决方式吧,用的series中的markpoint来实现. option.series[0 ...
- PAT1034 有理数四则运算 (20分)
1034 有理数四则运算 (20分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全 ...
- Rocket - tilelink - WidthWidget
https://mp.weixin.qq.com/s/pmJcsRMviJZjMwlwYw6OgA 简单介绍WidthWidget的实现. 1. 基本介绍 用于设定与上游节点连接 ...
- Rocket - util - MaskGen
https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw 介绍MaskGen的实现. 1. 基本介绍 给定总线宽度beatBytes,根 ...
- Java实现 LeetCode 507 完美数
507. 完美数 对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为"完美数". 给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False ...
- Java实现 LeetCode 15 三数之和
15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...