『现学现忘』Docker常用命令 — 19、容器常用命令(一)
有镜像才能创建容器,这是根本前提。
我们下载一个CentOS镜像作为演示。
[root@192 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB
1、新建并启动容器
命令:docker run [OPTIONS] IMAGE(镜像名) [COMMAND] [ARG...(参数)]
常用OPTIONS说明:有些是一个减号,有些是两个减号。
--name="容器新名字":为容需指定一个名称,如tomcat1、tomcat2用来区分容器。-d:后台运行容器,并返回容器ID,即启动守护式容器。-i:以交互模式运行容器,可进入容器查看内容,通常与-t同时使用。(常用)-t:为容器重新分配一个伪输入终端,通常与-i同时使用。(常用)-P:大写P表示,Docker会随机选择一个宿主机端口,映射到容器内部开放的网络端口上。-p:小写p表示,Docker会选择一个具体的宿主机端口,映射到容器内部开放的网络端口上。
有以下四种格式:-p ip:主机端口(hostPort):容器端口(containerPort)-p 主机端口:容器端口(常用)-p 容器端口-p ip::容器端口(待确定)
启动镜像示例:
使用镜像centos:latest,以交互模式启动一个容器,在容器内执行/bin/bash命令。
# 查看本地镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB
# 创建启动容器,并进入容器
[root@192 ~]# docker run -it 300e315adb2f /bin/bash
[root@5b6c5748a7b9 /]#
# 以上说明以ID为300e315adb2f的这个镜像,生成了一个名称为5b6c5748a7b9的容器。
# 此时我们已经登陆在启动的CentOS容器中了。
# 我们可以正常使用Linux命令来进行操作了,如下:
[root@5b6c5748a7b9 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@5b6c5748a7b9 /]# pwd
/
[root@5b6c5748a7b9 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:21 pts/0 00:00:00 /bin/bash
提示:因为Docker的CentOS镜像只有200M左右,所以是CentOS系统的基础版本,会有很多命令都是不完善。
2、列出当前所有正在运行的容器
命令:docker ps [OPTIONS]
我们从XShell中复制一个shell窗口,执行docker ps命令,如下:

说明:
5b6c5748a7b9的STATUS选项是Up状态,说明该容器是启动状态。- 如果启动容器的时候,没有指定
--name属性,系统会自动分配一个名字给容器,如上图中的hopeful_goldberg。
提示:我们可以看到有一个
CONTAINER ID为5b6c5748a7b9容器正在运行,这个5b6c5748a7b9和上边示例的Linux系统命令提示符[root@5b6c5748a7b9 /]中的名称相吻合。
常用OPTIONS说明:
-a:列出当前所有正在运行的容器+历史上运行过的容器。-l:显示最近创建的容器。-n:显示最近n个创建的容器,例如-n=3或者-n 3。-q:只显示容器编号。(常用)--no-trunc:不截断输出,显示完整的镜像信息。
示例:
[root@192 ~]# docker ps -qa --no-trunc -n=3
f9444cf9f26f2f0e12aa309d1914a06553575fb00f6301ce541753fb92d00c0a
136475a80d92856c78c202b50edfff2e1cd61a4b832b5ed8fb767c546f355727
5b6c5748a7b9072ce246d546dbc4e4f7b69796fbeeb6884286e78cbbc94a7c0c
[root@192 ~]# docker ps -qa --no-trunc -n 3
f9444cf9f26f2f0e12aa309d1914a06553575fb00f6301ce541753fb92d00c0a
136475a80d92856c78c202b50edfff2e1cd61a4b832b5ed8fb767c546f355727
5b6c5748a7b9072ce246d546dbc4e4f7b69796fbeeb6884286e78cbbc94a7c0c
3、退出容器
在Docker中退出容器有两种方式。
exit:容器停止退出。ctrl+P+Q:容器不停止退出,(注意是大写PQ)。
示例1:
# exit命令演示
# 1.查看本机docker镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB
# 2.创建启动并进入centos容器
[root@192 ~]# docker run -it 300e315adb2f /bin/bash
# 3.执行exit命令,停止并退出容器
[root@136475a80d92 /]# exit
exit
# 查看当前宿主机上正在运行的容器,可以看到没有任何容器正在运行。
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@192 ~]#
示例2:
# ctrl+P+Q退出容器演示
# 1.查看本机docker镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 months ago 209MB
# 2.创建启动并进入centos容器,注意--name=mycentos 要卸载容器名前边
[root@192 ~]# docker run -it --name=mycentos 300e315adb2f /bin/bash
[root@14b077f2496b /]#
# 3.ctrl+P+Q,不停止并退出容器
# 4.查看当前宿主机上正在运行的容器,可以看到14b077f2496b容器正在运行。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14b077f2496b 300e315adb2f "/bin/bash" About a minute ago Up 59 seconds mycentos
[root@192 ~]#
4、启动容器
就是启动之前被关闭的容器。
示例:
查看当前宿主机中的容器。

我们可以看到,此时宿主机上有2个容器正在运行Up,有2个容器是关闭状态Exited。
我们可以通过命令:docker start 容器ID或者容器名,重新启动容器。
如下图:
执行启动容器命令后,会启动容器,并返回启动的容器ID。

可以看到上图中,第三个容器136475a80d92,已经被启动了。
5、重启容器
就是重新启动一个容器。
命令:docker restart 容器ID或者容器名
示例:
先查看当前宿主机的容器状态。

然后重启第一个容器,ID为14b077f2496b,名称为mycentos。
这里我们一定要注意看STATUS 状态为Up 2 hours
我们重启该容器,并查看他的启动时间。

我们可以看到重启之后,mycentos容器的启动时间变为了4秒,说明该容器进行了重启。
6、停止容器
停止正在运行的容器。(正常关闭容器)
命令:docker stop 容器ID或者容器名
演示:
先查看当前宿主机的容器状态。

执行命令关闭第三个容器,如下图:

7、强制停止容器
停止正在运行的容器。(暴力关闭容器)
命令:docker kill 容器ID或者容器名
演示:
先查看当前宿主机的容器状态。

执行命令,强制关闭第二个容器,如下图:

8、删除已停止的容器
命令:docker rm 容器ID
(1)删除一个已停止的容器
先查看当前宿主机的容器状态。

删除第一个正在运行的容器,如下:
[root@192 ~]# docker rm 14b077f2496b
Error response from daemon: You cannot remove a running container 14b077f2496b3c11d041a8bb138f60b32538ddedebe88245dc805a25669d0d83. Stop the container before attempting removal or force remove
守护进程daemon会提示我们,您不能删除正在运行的容器,请先停止容器。
如果需要删除正在运行的容器,加-f参数,进行强制删除。
那我们接下来删除第二个容器,如下:

可以看到,第二个容器已经删除,现在宿主机上只有3个容器了。
(2)一次性删除多个已停止的容器
命令:docker rm 容器1ID 容器2ID 容器3ID ...
示例:
删除第二第三个容器,如下:
[root@192 ~]# docker rm 136475a80d92 5b6c5748a7b9
136475a80d92
5b6c5748a7b9
[root@192 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14b077f2496b 300e315adb2f "/bin/bash" 3 hours ago Up 19 minutes mycentos
我们可以看到,此时宿主机上只有一个容器了。
(3)删除所有本机已停止的容器
- 方式一:
命令:docker rm -f $(docker ps -aq)
说明:docker rm -f删除所有docker ps -aq命令显示容器ID对应的容器。 - 方式二:
docker ps -aq| xargs docker rm
说明:docker ps -aq命令执行的结果,通过管道符,传递给后边的xargs。
xargs是给命令传递参数的一个过滤器,以将管道或标准输入的数据转换成参数。
『现学现忘』Docker常用命令 — 19、容器常用命令(一)的更多相关文章
- Docker的镜像及容器常用操作(2)
一.docker镜像 镜像(docker image) --- Docker 运行容器之前需要本地存在镜像,若本能地不存在,那么 Docker 会找默认镜像仓库( Docker Hub 公共注册服务器 ...
- 『现学现忘』Docker常用命令 — 20、容器常用命令(二)
提示:接上一篇 目录 9.后台启动容器 10.查看容器日志 11.查看容器内运行的进程 12.查看容器内部细节 9.后台启动容器 后台启动容器也叫启动守护式容器. 命令:docker run -d 镜 ...
- 『现学现忘』Docker常用命令 — 21、容器常用命令(三)
目录 13.进入正在运行的容器并以命令行交互 (1)方式一 (2)方式二 (3)attach和exec的区别 14.从容器内拷贝文件到主机上 15.Docker常用命令小结 (1)容器生命周期管理 ( ...
- 『现学现忘』Docker基础 — 22、使用Docker安装Nginx
目录 步骤1:搜索镜像 步骤2:下载Nginx镜像 步骤3:运行Nginx镜像 步骤4:进行本机测试 步骤5:进入容器内操作 步骤6:测试外网访问容器 步骤1:搜索镜像 使用docker search ...
- 『现学现忘』Docker基础 — 28、Docker容器数据卷介绍
目录 1.什么是Docker容器数据卷 2.数据卷的作用 3.数据卷的使用 1.什么是Docker容器数据卷 Docker容器数据卷,即Docker Volume(卷). 当Docker容器运行的时候 ...
- 『现学现忘』Docker基础 — 9、Docker简介
目录 1.什么是Docker? 2.Docker的出现解决了什么问题? 3.Docker的特别之处 4.Docker相关网站 1.什么是Docker? 2010年dotCloud公司在旧金山成立,PA ...
- 『现学现忘』Docker基础 — 24、Docker图形化管理工具Portainer
目录 1.Portainer介绍 2.Portainer安装启动 3.Portainer初始化配置 4.Portainer汉化 1.Portainer介绍 (1)Portainer 是一款轻量级的图形 ...
- 『现学现忘』Docker基础 — 27、Docker镜像的commit操作
目录 1.commit命令作用 2.commit命令说明 3.示例演示 1.commit命令作用 在运行的容器中,并在镜像的基础上做了一些修改,我们希望保存起来,封装成一个新的镜像,方便我们以后使用, ...
- 『现学现忘』Docker基础 — 30、Docker中数据卷相关命令
目录 1.Volume命令说明 2.Volume命令的使用 (1)创建数据卷 (2)查看本地数据卷列表 (3)打印myVolume数据卷的详细信息 (4)删除数据卷 (5)删除所有未使用的数据卷 3. ...
随机推荐
- Net6 DI源码分析Part5 在Kestrel内Di Scope生命周期是如何根据请求走的?
Net6 DI源码分析Part5 在Kestrel内Di Scope生命周期是如何根据请求走的? 在asp.net core中的DI生命周期有一个Scoped是根据请求走的,也就是说在处理一次请求时, ...
- 【转】C# / Extension 扩展方法
扩展方法简介扩展方法使你能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调 ...
- Android 使用签名的好处【转】
感谢大佬:https://zhidao.baidu.com/question/360127490062917572.html 平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以 ...
- 一键部署mysql 无修改直接cp 执行 100% 有效
一键部署mysql 无修改直接cp 执行 100% 有效 将安装包拖至/opt目录下,编一个脚本文件,然后source执行脚本,等脚本执行完成, 即可使用mysql -u root -p点击 ...
- 社交网络分析的 R 基础:(六)绘图操作
R 语言强大的可视化功能在科学研究中非常受欢迎,丰富的类库使得 R 语言可以绘制各种各样的图表.当然这些与本章内容毫无关系,因为笔者对绘制图表了解有限,仅限于能用的程度.接下来的内容无需额外安装任何包 ...
- 你还不懂java的日志系统吗
一.背景 在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志.经常听到的这样一句话就是"打个日志调试下",没错在日常的开发.调 ...
- 如何快速为团队打造自己的组件库(下)—— 基于 element-ui 为团队打造自己的组件库
文章已收录到 github,欢迎 Watch 和 Star. 简介 在了解 Element 源码架构 的基础上,接下来我们基于 element-ui 为团队打造自己的组件库. 主题配置 基础组件库在 ...
- Fiddler监听Https请求响应
Fiddler问题 - creation of the root certificate was not successful 解决办法: http://localhost:8888/ 安装证书 ...
- IDEA2019.2.2激活码,亲测可用
3AGXEJXFK9-eyJsaWNlbnNlSWQiOiIzQUdYRUpYRks5IiwibGljZW5zZWVOYW1lIjoiaHR0cHM6Ly96aGlsZS5pbyIsImFzc2lnb ...
- 金融行业BI可视化报表,直观体验数据的价值
现在,数据已成为非常重要的资产.之前,人们只是把它当作一种附属品,由客户来办理业务,在系统中产生了这样的附属品.但如今,发现在客户办理业务这一信息中,蕴藏着一些客户的需求,积聚成千条这种信息,可以洞察 ...