Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
1.使用“ls”查看容器列表
docker container ls
列出所有正在运行的容器。
docker container ls -l
列出最近一个启动容器。
docker container ls -a
列出所有的容器,包括已退出状态的容器。
docker container ls -q
列出正在运行容器的ID。
docker container ls -s
列出正在运行的容器及容器产生的数据大小,及多了一个SIZE字段。
总结:
ls,ps,list均为别名,也就是说,上面的"ls"命令可以被"ps"和"list"来替换使用。
查看容器列表输出字段含义介绍
CONTAINER ID:容器的ID,即容器的唯一编号。
IMAGE: 镜像信息,容器基于哪个镜像启动的。
COMMAND: 容器启动时的守护进程命令。
CREATED: 创建容器的时间。
STATUS: 代表容器的状态,常见的状态有4种,分别如下:
Up: 代表容器正在运行。
Exited: 代表容器退出
Pause:暂停状态,容器的进程没有运行,而是被挂起了。
Created:创建状态,一般指使用create命令创建但未启动的容器。
PORTS : 端口映射信息。
NAMES: 容器的名称。
SIZE: 容器产生的数据大小。
2.使用“run”启动容器
docker container run nginx:1.20.1
直接在前台基于"nginx:1.20.1"镜像运行容器。
docker container run -d nginx:1.20.1
直接在后台基于"nginx:1.20.1"镜像运行容器。
docker container run -i -t alpine:latest sh
基于alpine镜像启动容器并进入容器,启动时加入了以下2个选项:
-i:
分配一个交互式的标准输入。
-t:
分配一个伪终端。
docker container run -d alpine sleep 10
基于alpine镜像启动容器,并指定该容器运行的命令为sleep,参数为10,代表该容器会在10秒后退出。
docker container run -d nginx:1.20.1 tail -f /etc/hosts
基于nginx:1.20.1镜像启动容器,并指定启动命令为"tail",参数是"-f /etc/hosts"。
docker container run --rm --name liux-linux -it nginx:1.20.1 bash
基于nginx:1.20.1镜像启动容器,启动时可以同时指定多个选项。
--rm:
当容器退出时,容器也会随之删除,一般用户测试的场景。
--name:
指定容器的名称。
docker container run --rm -it --add-host www.liux.com:124.165.213.230 alpine
基于nginx:1.20.1镜像启动容器,启动时可以同时指定多个选项。
--add-host
添加主机映射,会讲主机的映射关系添加到"/etc/hosts"。
docker container run --rm -it -e SCHOOL=liux -e CLASS=linux80 -w /etc alpine
基于nginx:1.20.1镜像启动容器,启动时可以同时指定多个选项。
-e:
向容器中传递环境变量。
-w:
指定工作目录为/etc。
3.使用“stop”停止容器
docker container stop nginx
停止名为"nginx"的容器运行,本案例停止的是一个容器。
docker container stop nginx mysql
停止名为"nginx"和"mysql"容器的运行,本案例启动的是多个容器。
docker container stop -t 3 mysql
停止名为"mysql"容器的运行,指定3秒后发送kill指令。
docker container stop -t 1 nginx mysql
停止名为"nginx"和"mysql"容器的运行,指定1秒后发送kill指令。
总结:
若不使用"-t"选项,则默认的间隔10秒后向容器发送kill指令。
docker container stop nginx
停止容器,kill是立即执行,stop会等待10秒中
4.使用“start”启动容器
docker container start nginx
启动名为"nginx"的容器,本案例启动的是一个容器。
docker container stop nginx mysql
启动名为"nginx"和"mysql"的容器,本案例启动的是多个容器。
docker container start -ai nginx
启动名为"nginx"的容器,启动时也可以加选项如下:
-a:
将容器的标准输出和错误输出到当前终端。
-i:
启动时分配一个交互式的标准输入程序。
总结:
当我们分配一个"-i"时,这个标准输入对接的程序必须有交互能力,否则此选项无效。比如"sh","bash"程序可以进行交互,而"tail","sleep"则不行。
5.使用“cp”拷贝文件
docker container cp /etc/hosts inspiring_hertz:/liux-hosts
拷贝本地的"/etc/hosts"文件到inspiring_hertz容器的"/"目录下并重命名为"liux-hosts"。
docker container cp inspiring_hertz:/liux-hosts ./hosts
将inspiring_hertz容器的"/liux-hosts"文件拷贝到当前目录并重命名为hosts。
6.使用"exec"进入容器并运行命令
docker run -d --name nginx -p 80:80 nginx:latest
启动容器
docker exec -it nginx /bin/bash
进入正在运行的容器
#案例: 数据库启动与进入数据库中
#1. 创建mysql容器,并设置root密码为1
# -e表示指定容器中的变量和值 key=value
docker run -d --name "mysql-5.7" -e MYSQL_ROOT_PASSWORD=1 mysql:5.7-debian
#2. 直接进入数据库中
docker exec -it mysql-5.7 mysql -uroot -p1
#这里的mysql是mysql的客户端
7.使用"log"查看容器的日志信息
docker container logs -f nginx
查看"nginx"容器日志。
docker container logs -tf --since 2022-05-26T01:13:08Z --until 2022-05-26T01:28:38Z nginx
查看"nginx"容器日志,查看某个时间点的日志
-t:
显示时间戳。
-f:
实时查看日志,有点类似于"tail -f"选项。
--since:
查看某个时间点之后的日志信息,此处我查看是"2022-05-26T01:13:08Z"之后的日志。
--until:
查看某个时间点之前到日志信息,此处我查看到是"2022-05-26T01:28:38Z"之前的日志。
8.使用“rm”删除容器
docker container rm nginx
删除一个已停止的容器,如果没有加"-f"选项,是无法删除一个正在运行的容器。
docker container rm -f -v nginx mysql
-f:
代表强制删除,可以强制删除一个正在运行的容器。
-v:
删除容器并随之删除匿名存储卷相关信息,如果容器有存储卷有自定义名称,而非随机存储卷,则此选项无效。
#批量删除所有容器
docker container rm -f `docker container ps -aq`
9.使用"stats"查看容器的运行状态
docker container stats
实时查看所有正在运行的容器状态信息,主要包括CPU,内存的使用情况
docker container stats --no-stream -a
查看一次的容器状态信息,主要包括CPU,内存的使用情况
--no-stream:
代表只查看第一次的返回结果。
-a:
代表查看所有状态的容器信息,默认只查看正在运行的容器信息
docker container stats --no-stream liux-linux
只查看"liux-linux"容器的状态信息
10.使用top命令查看容器的进程信息
docker container top nginx
查看nginx容器的进程信息