【现学现忘Docker基础】— 10.Docker常用命令:容器
有镜像才能创建容器,这是根本前提。
我们下载一个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,已经被启动了。