Docker系列—Docker容器其他常用命令(新手小白保姆级实操教程)
文章目录
- Docker容器其他常用命令
- >>>下一节:Docker镜像原理
- 一、docker exec -it 进入容器的交互式终端
- 1.基本使用
- 2.-it
- 3.docker exec和docker attach的区别
- 举例区分
- ①docker exec
- ②docker attach
- 二、docker cp 容器和主机之间的拷贝
- 1.主机的文件拷贝到容器
- 2.容器的文件拷贝到主机
- 三、docker inspect 获取容器的详细信息
- 四、docker stats 查看容器的实时资源使用情况
- 1.查看正在运行的容器
- 2.查看所有容器
- 3.查看某个容器
- 五、docker logs 查看容器日志
- 1.查看所有日志
- 2.持续输出日志
- 3.查看最新n行日志
Docker容器其他常用命令
>>>下一节:Docker镜像原理
本篇我们将介绍以下容器命令:
进入容器、查看日志、复制文件、获取容器详细信息、查看容器的实时资源使用情况
一、docker exec -it 进入容器的交互式终端
1.基本使用
在正在运行的容器中执行一个新命令
docker exec 容器名 命令2.-it
-i interact 保持标准输入打开,使程序能够接收输入
-t terminal 分配伪终端,是程序能够以终端交互方式运行
-it 交互式终端
docker exec -it 容器 命令比如,我们进入myubuntu容器的bash交互环境
# 常用方法 docker exec -it myubuntu bash进入之后,我们就可以输入Linux命令,和在Linux终端一样,然后exit退出
3.docker exec和docker attach的区别
docker exec
在正在运行的容器中,启动一个新进程来执行指定的命令
docker attach
将**当前终端 **连接到容器主进程已有的标准输入、标准输出和标准错误流
=>你在当前终端输入的内容,可以传递给容器的主进程(前提是容器支持标准输入)
=>容器主进程输出的信息,会显示在你当前的终端
=>容器主进程输出的错误信息,也会显示在你当前的终端
docker exec是在主进程运行的情况下,启动一个新进程来执行命令
docker attach是直接连接到容器的主进程
我们经常使用docker exec 在容器中执行一些命令
举例区分
Ubuntu的主进程是bash
①docker exec
先创建容器myubuntu
docker run -dit --name myubuntu ubuntu执行bash命令,进入Bash
docker exec -it myubuntu bash我们在myubuntu的Bash里面执行ls命令
ls这里进入的并不是ubuntu的主进程中的bash
我们可以查看当前的进程
如下图:
PID为1的/bin/bash:就是主进程
PID为8的bash:就是 "docker exec -it myubuntu bash"这个命令产生的进程
PID为20:我们刚才在bash里面执行了 ps -ef 命令,父进程是bash(PID=8),所以它的PPID=8
myubuntu │ ├── /bin/bash (PID 1, PPID 0) │ └── bash (PID 8, PPID 0) │ └── ps (PID 20, PPID 8)所以当我们退出的时候,结束的是bash,不影响主进程bash,不会使容器终止
②docker attach
我们来attadh一下刚才的myubuntu
docker attach myubutuls如图,我们已经成功进入了
我们来查询一下进程
ps -ef如图我们可以看到,只有主进程的/bin/bash了,没有像刚才docker exec 那样创建一个bash了
我们来尝试退出
如图,我们可以看到,容器已经终止了
因为刚才我们所在的是主进程的bash,我们退出bash,也就是结束了主进程
主进程结束,容器终止
看到这里,相信大家已经清楚了这两个命令的区别了
| 对比项 | docker exec | docker attach |
|---|---|---|
| 是否创建新进程 | 是 | 否 |
| 操作对象 | 新执行的命令 | 容器主进程 |
| 是否可以执行指定命令 | 可以 | 不可以 |
| 是否可以进入 Bash | 可以 | 取决于主进程 |
输入exit | 结束当前 Shell | 可能结束容器主进程 |
| 日常使用频率 | 很高 | 较低 |
二、docker cp 容器和主机之间的拷贝
可以把主机的文件拷贝到容器中,也可以把容器中的文件拷贝到主机中
1.主机的文件拷贝到容器
docker cp 主机文件路径 容器:目的路径例如:宿主机上的test.txt复制到myubuntu容器的/tmp目录下
docker cp /home/song/test.txt myubuntu:/tmp/2.容器的文件拷贝到主机
docker cp 容器:文件路径 主机路径例如:将容器内部的/etc/hosts文件复制到宿主机的/home/song/目录
docker cp myubuntu:/etc/hosts /home/song/三、docker inspect 获取容器的详细信息
docker inspect 容器名比如:
docker inspect myubuntu我们可以看到有很多信息
四、docker stats 查看容器的实时资源使用情况
查看容器实时资源使用情况
1.查看正在运行的容器
docker stats2.查看所有容器
docker stats -a3.查看某个容器
docker stats 容器名docker stats myubuntu由于是实时的,所以我们会一直在这个界面,Ctrl+c退出
五、docker logs 查看容器日志
查看容器日志,-f 持续输出日志,-n 输出n行日志
注意这里是logs,不是log
1.查看所有日志
默认输出所有日志
docker logs比如,我们查看myubuntu的日志
docker logs myubuntu2.持续输出日志
docker logs -f 容器名3.查看最新n行日志
docker logs -n 数字 容器名比如,我们查看myubuntu的最新一行日志
完结撒花~