9、查看容器的元数据——docker inspect
格式:docker inspect 容器id/容器名称 docker ps -a #先查看运行时容器的id docker inspect 51fd134c7cc3 #查看容器的元数据 "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", #容器的IP "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { #使用的是网桥模式 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
10、容器日志
格式: docker logs 容器ID/容器名 复制代码
示例:
#后台启动容器,并使用-P随机映射一个端口 [root@yuji ~]# docker run -id -P nginx:latest 93007aee7e8f2d74345408191d827d65bcc2e204b53244a3ab9fc3d8f8f6079c [root@yuji ~]# docker ps -a #映射端口为49153 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93007aee7e8f nginx:latest "/docker-entrypoint.…" 2 seconds ago Up 1 second 0.0.0.0:49153->80/tcp, :::49153->80/tcp practical_m clean 51fd134c7cc3 centos:7 "/bin/bash" 13 minutes ago Up 13 minutes yy2 799d2062f4dc centos:7 "/bin/bash" 13 minutes ago Exited (0) 13 minutes ago #浏览器使用宿主机IP和映射端口号,访问容器 #查看容器日志 [root@yuji ~]# docker logs 93007aee7e8f 192.168.41.1 - - [26/Jun/2022:14:26:51 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" "-" 2022/06/26 14:26:51 [error] 31#31: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.41.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.41.46:49153", referrer: "http://192.168.41.46:49153/" 192.168.41.1 - - [26/Jun/2022:14:26:51 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.41.46:49153/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36" "-" 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
11、宿主机和容器之间的文件复制
1)将宿主机中的文件复制到容器中
#将宿主机中的文件复制到容器中 echo 123 > /opt/f1.txt docker cp /opt/f1.txt 容器ID:/tmp/ [root@yuji ~]# echo 123 > /opt/f1.txt [root@yuji ~]# docker cp /opt/f1.txt 93007aee7e8f:/tmp/ #将宿主机中的文件复制到容器中 [root@yuji ~]# docker exec -it 93007aee7e8f /bin/bash #进入容器查看是否复制成功 root@93007aee7e8f:/# cd /tmp root@93007aee7e8f:/tmp# ls f1.txt root@93007aee7e8f:/tmp# cat f1.txt #复制成功 123 root@93007aee7e8f:/tmp# 复制代码
网络异常,图片无法展示
|
2)将容器中的文件复制到宿主机中
docker cp 容器ID:/tmp/f1.txt ~/abc.txt #复制并重命名 #将容器中/tmp目录下的f1.txt文件,复制到宿主机的/root目录下,并重命名为abc.txt [root@yuji ~]# docker cp 93007aee7e8f:/tmp/f1.txt ~/abc.txt [root@yuji ~]# ls abc.txt anaconda-ks.cfg initial-setup-ks.cfg mynginx.tar 公共 模板 视频 图片 文档 下载 音乐 桌面 复制代码
网络异常,图片无法展示
|
12、容器的导出与导入(容器的迁移)
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。
可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。(注意:导入文件后会生成镜像,但不会自动创建容器。)
#导出格式: docker export 容器ID/名称 > 导出文件名 #导入格式: cat 导出文件名 | docker import – 镜像名称:标签 复制代码
示例:
#主机A将容器导出为文件,并将导出的文件传给主机B [root@yuji ~]# docker export 51fd134c7cc3 > mycentos7 [root@yuji ~]# scp ~/mycentos7 192.168.41.45:/root/ #主机B将文件导入生成镜像,并使用导入的镜像创建容器 [root@node02 ~]# cat mycentos7 | docker import - centos7:test #导入后会生成镜像,但不会创建容器 [root@node02 ~]# docker run -id centos7:test #使用导入的镜像创建容器 复制代码
主机A将容器导出为文件,并将导出的文件传给主机B:
网络异常,图片无法展示
|
主机B:
网络异常,图片无法展示
|
网络异常,图片无法展示
|
总结:
1、容器管理命令
命令 | 作用 |
docker create -i [–name=容器名称] 镜像名 | 创建容器 |
docker create -it [–name=容器名称] 镜像名 <命令> | 创建容器并导入命令 |
docker start <容器ID/名称> | 启动容器 |
docker stop <容器ID/名称> | 停止容器 |
docker kill <容器ID/名称> | 立即强制停止容器 |
docker ps | 查询运行状态的容器 |
docker ps -a | 查询所有容器 |
docker rm [-f] <容器ID/名称> | 删除容器 (-f 强制删除正在运行的容器) |
docker rm $(docker ps -aq) | 删除所有容器 |
docker run [–name] -id | 启动容器(一次性执行) |
docker exec -it 容器ID/名称 bash | 进入容器 |
docker run -it 容器ID/名称 bash | 启动时进入容器 |
docker cp 宿主机文件 容器ID:容器目录 | 将宿主机的文件复制到容器中 |
docker cp 容器ID:容器目录/文件 宿主机目录 | 将容器中的文件复制到宿主机中 |
docker logs | 容器pid=1的进程日志 |
docker export 容器ID/名称 > 文件名 | 将容器导出为文件 |
cat 文件名 docker import - 镜像名称:标签 | 将导出的容器文件,导入生成镜像 |
docker stats | 查看docker消耗的资源状态 |
2、如何镜像优化?
有效减少镜像大小。
3、看当下所有容器占用的I/O有多少,占用内存多少?
使用docker stats命令查看。
4、容器有哪些状态?
Docker容器可以有四种状态:
- 运行
- 已暂停
- 重新启动
- 已退出
5、overlay2由哪几部分组成 ?
- LowerDir
- MergedDir
- UpperDir
- WorkDir