5. Docker的常用命令

5.1. 容器命令

场景说明:

我们有了镜像才可以创建容器,接下来,我们下载一个centOS镜像来测试学习。

环境准备

使用下面的命令下载一个centOS镜像

docker pull centos

具体使用:

[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# 

docker run

docker run [可选参数] image 新建容器并启动

docker run [可选参数] image

# 参数说明
--name="Name"    给容器命名
-d               后台运行
-it              使用交互方式运行,进入容器查看内容
-p               指定容器的端口,例如:-p 8080:8080
	-p 宿主机IP:宿主机端口:容器端口(常用)
	-p 宿主机端口:容器端口(常用)
	-p 容器端口(这种方式是外面不能访问的)
	容器端口(不常用)
-P               随机指定容器的端口
--rm             容器一退出(或者一旦停止)就会被删除

具体使用:

# 启动容器,以交互的方式运行,并且进入容器中
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker run -it centos /bin/bash
# ls 用于查看容器中的信息,docker默认下载的centos镜像里面,有些命令是不全的,后续会演示到
[root@26ece72b3bb6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@26ece72b3bb6 /]# 

exit

exit 命令在容器中使用,用于停止容器并退出;如果容器是在后台运行,exit 命令退出时,容器不会停止。

Ctrl+P+Q 用于退出容器(但不停止容器)。

具体使用:

[root@26ece72b3bb6 /]# exit
exit
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# 

可以看到,从容器中退出到宿主机上了。

docker ps

docker ps 查看正在运行的容器

docker ps -a 查看正在运行的容器+历史运行过的容器

docker ps -a -n=? 查看最近创建的几个容器

docker ps -aq 查看正在运行的容器ID+历史运行过的容器ID

具体使用:

# docker ps 查看正在运行的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# docker ps -a 查看正在运行的容器+历史运行过的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                          PORTS     NAMES
26ece72b3bb6   centos         "/bin/bash"   4 minutes ago   Exited (0) About a minute ago             distracted_hopper
7eeaf525e5e2   feb5d9fea6a5   "/hello"      18 hours ago    Exited (0) 18 hours ago                   frosty_satoshi
# docker ps -a -n=1 查看最近创建的1个容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
26ece72b3bb6   centos    "/bin/bash"   10 minutes ago   Exited (0) 7 minutes ago             distracted_hopper
# docker ps -aq  查看正在运行的容器ID+历史运行过的容器ID
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -aq
26ece72b3bb6
7eeaf525e5e2
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# 

docker rm

docker rm 容器ID 删除指定的docker容器(不能删除掉正在运行的容器)

docker rm -f 容器ID 强制删除指定的docker容器

docker rm $(docker ps -q) 删除所有容器(历史运行过的容器,现在是停止状态)

docker rm -f $(docker ps -aq) 强制删除所有容器(正在运行的容器+历史运行过的容器)

具体使用:

# 查看正在运行的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
f26ee52ab55c   centos    "/bin/bash"   10 seconds ago   Up 9 seconds             awesome_franklin
# 查看正在运行的容器+历史运行过的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                    PORTS     NAMES
f26ee52ab55c   centos         "/bin/bash"   28 seconds ago   Up 27 seconds                       awesome_franklin
26ece72b3bb6   centos         "/bin/bash"   2 hours ago      Exited (0) 2 hours ago              distracted_hopper
7eeaf525e5e2   feb5d9fea6a5   "/hello"      20 hours ago     Exited (0) 20 hours ago             frosty_satoshi
# 强制删除容器ID=26ece72b3bb6的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker rm -f 26ece72b3bb6
26ece72b3bb6
# 强制删除容器ID=f26ee52ab55c的容器
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker rm -f f26ee52ab55c
f26ee52ab55c
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND    CREATED        STATUS                    PORTS     NAMES
7eeaf525e5e2   feb5d9fea6a5   "/hello"   20 hours ago   Exited (0) 20 hours ago             frosty_satoshi
[root@iZ8vb6lqqya4rvreq9ra6gZ ~]# 

docker start

docker start 容器ID 启动容器

docker restart

docker restart 容器ID 重启容器

docker stop

docker stop 容器ID 停止当前正在运行的容器

docker kill

docker kill 容器ID 强制杀掉一个容器