目录
1. 后台启动容器
2. 显示日志
3. 查看容器中的进程信息
4. 查看容器元数据
5. 进入容器内部
6. 将容器文件拷贝到主机
7. 导入导出容器 / 镜像
1. 后台启动容器
示例1:前后台启动 ubuntu
docker run -d ubuntu # 后台守护式启动
docker run -it ubuntu # 前台交互式启动
从上述图中可以看出,执行docker run -d ubuntu命令后,容器并没有能启动成功。因为通过后台启动容器,就必须要有一个前台进程,否则会导致该容器自动退出!!ubuntu 没有前台进程,容器认为空闲,如果容器运行的命令不是那些一直挂起的命令(eg. 运行top,tail等),则会自行退出。所以必须要使用前台启动交互式容器,才可以运行。
示例2:前后台启动 redis
sudo docker run -it redis # 前台交互式启动 redis
sudo docker run -d redis # 后台守护式启动 redis
前后台启动redis均可以,因为ubuntu没有前台进程,但是redis有。所以我们在用后台启动容器时,需要用 docker ps来查看一下容器是否启动成功。
2. 显示日志
语法:docker logs [选项] 容器 【其中容器可以用名字也可以用容器id】
选项:
- -f:跟踪日志输出
- --since:显示某个开始时间的所有日志
- -t:显示时间戳
- --tail:仅列出最新N条容器日志
docker logs -t -f mynginx # 跟踪查看容器 mynginx 的日志输出(显示时间戳)
docker logs --since 2022-01-01 --tail=10 myniginx # 查看容器myniginx从2022年1月1日后的最新10条日志
3. 查看容器中的进程信息
语法:docker top 容器
docker top mynginx # 查看mynginx容器的进程信息
4. 查看容器元数据
语法:docker inspect 容器
可以把容器看成一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)以及运行在其中的应用程序。
docker inspect mysql:5.6 # 获取镜像mysql:5.6的元信息
5. 进入容器内部
在我们启动容器后,需要进入容器内部进行其他操作,可以有以下两种方式:
- docker exec -it 容器 /bin/bash
- docker attach 容器
两者区别:
- exec则是在容器中打开新的终端,而且可以启动新进程,若直接退出执行exit,也不会影响docker容器的进程(常用)
- attch直接进入容器,进入已经存在的命令的终端,不会启动新的进程。如果退出执行exit,则会终止整个docker 容器的进程。
6. 将容器文件拷贝到主机
语法:docker cp 容器id:容器内文件路径 拷贝到的主机路径
docker start 2cb5b5291095 # 开启容器
docker attach 2cb5b5291095 # 进入容器
touch hello.java # 在容器内新建文件
exit # 退出容器
docker cp 2cb5b5291095:/hello.java /home # 把容器内新建的文件拷贝到主机上
7. 导入导出容器 / 镜像
- export 导出容器内容留作为一个tar归档文件:docker export 容器ID > 文件名.tar
- import 从tar包中的内容创建一个新的文件系统再导入镜像:cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号