Docker基础知识
有狂神视频做笔记。适合有狂神视频。Linux基础知识(必要)和SpringBoot。视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?p=6&spm_id_from=pageDriver
文章目录
- Docker基础知识
- 一、docker的学习路线
- 二、Docker概述
-
- 1、Docker概述
- 2、Docke历史
- 3、Docke能干嘛
- 三、Docker安装
-
- 1、Docker术语
- 2、安装Docker
- 2、配置docker阿里云镜像加速器(博主没有服务器,没有配置)
- 3、回顾hello-word的流程
- 4.底层工作原理
- 四、Docker的常用命令
-
- 1、帮助命令
- 2、镜像命令
- 3、容器命令
- 4.其他常用命令
- 5、命令小结
- 6、作业练习
- 7、可视化
- 五、Docker镜像讲解
-
- 什么是镜像?
- 2、Docker镜像加载原理
- 3、分层理解
- 4、commit镜像
- 六、容器数据卷
-
- 1.容器卷是什么?
- 2.使用数据卷
- 3、**实战:安装MySQL**
- 4、**具名挂载和匿名挂载**
- 5、**初识Dockerfile**
- 6、**数据卷容器**
- 七、DockerFile
-
- 1、DockerFile介绍
- 2、DockerFile构建过程
- 3、DockerFile常用指令
- 3、实战测试
- 4、实战:Tomcat镜像
- 发布自己的镜像
- 6.发布到阿里云镜像服务
- 7、小结
- 八、Docker网络
-
- 1、理解Docker0(docker0 docker网络核心)
- 2、--link
- 3定义网络
- 4、网络连通
- 实战:部署Redis集群
- ...更新中
一、docker的学习路线
- Docker概述
- Docker安装
- Docker命令
- 镜像命令
- 容器命令
- 操作命令
- …
- Docker镜像
- 容器数据卷
- DockerFile
- Docker网络原理
- IDEA整合Docker
- Docker Compose
- Docker Swarm
- CI/CD Jenkine
二、Docker概述
1、Docker概述
产品:开发–上线 两套环境! 应用环境,应用配置! 开发 — 运维:
- (1)问题:
- 我可以在我的电脑上运行!你不能!
- 版本更新导致服务器不可用。对于运维,考验非常大。(开发和运维)
- 配置环境很麻烦,每台机器都要部署环境(集群Redis、ES、Hadoop…)!费时费力。
- 以前的jar除了发布项目 jar ,还得需要 环境(Redis MySQL jdk ES) ,每个人都需要在服务器上安装和配置。配置太麻烦了,不能跨平台。因此,项目能否带来环境安装和包装!
- 传统:程序猿包装jar,运维部署环境(需要自己配置,很麻烦)、配置等。
- 现在:程序猿包装jar,部署上线(大部分官方环境配置都写好了,只需要安装),一套流程就完成了。(以前两个人做的事现在可以一个人做)。
- (2)解决方案
- Docker对上述问题提出了解决方案。
- 安卓程序使用流程:
- 安卓程序猿 —> apk应用 —>向应用商店发布 — > 张三使用 —>下载apk即可使用。
- Docker使用过程(类似于安卓):
- 程序猿 —> 编写代码并提供环境 —>带环境(也称镜像)的包装项目。 — > 发布到Docker仓库()商店—>下载我们的镜像操作。
- (3)Docker的思想就来自与集装箱
- 假设有多个应用程序需要防止端口冲突,端口号需要交叉使用
- 隔离:Docker核心思想!包装箱!每个盒子都是相互隔离的。不需要考虑端口冲突等问题。
- Docker服务器可以通过隔离机制使用到极致!
- (3)所有的技术都是由于一些问题,我们需要解决,才能学习!
2、Docke历史
- 2010年,几个搞IT年轻人在美国成立了公司 dotCloudk,做一些pass云计算服务和LXC(虚拟机) 相关容器技术!Linux虚拟机技术。他们把自己的技术(容器化技术)命名为Docker !
- Docker刚出生的时候,没有引用|关注行业! dotCloud ,活不下去!
- 所以提出了开源。开发源代码!2013年, Docker开源!Docker越来越多的人发现了docker优点! Docker每月更新一个版本!2014年4月9日, Docker1.0发布!
- Docker为什么这么火?
- 很轻在出来之前,我们都过。!虚拟机:在window中装一个 Vmware ,通过这个软件,我们可以虚拟一台或多台电脑!笨重!占用内存!虚拟机也属于虚拟化技术, Docker 容器技术,也是虚拟化技术!
- vm : linux centos原生镜像 (相当于电脑! ) 若需要隔离,则需要打开多机! 占内存几个G 运行几分钟
- docker: 镜像相互隔离,镜像相互隔离 (核心环境4m jdk环境 mysq1环境) 十分的小巧,运行镜像就可以了! 小巧! 内存M或KB级别 秒级启动!
- 如果电脑不好,几台虚拟电脑会卡住,但是Docker不会。
- 很轻在出来之前,我们都过。!虚拟机:在window中装一个 Vmware ,通过这个软件,我们可以虚拟一台或多台电脑!笨重!占用内存!虚拟机也属于虚拟化技术, Docker 容器技术,也是虚拟化技术!
- 聊聊Docker
- Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
- Docker使用文档地址
- 存放镜像仓库地址 :与get类似
- 使用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
3、Docke能干嘛
-
- 虚拟化技术特点:
-
-
- 传统虚拟机,虚拟出硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
- Docker容器内的应用直接运行在,容器是没有自己的内核的,也没有虚拟硬件。
-
-
- 传统方式:一堆的帮助文档,参考帮助文档,安装环境和程序
- 使用Docker之后:一键运行大包成镜像,发布测试。
-
- 使用Docker之后,我们的部署应用就像搭积木一样。
- 将当前的环境、应用打包后,发现那个那个环境需要升级,就将当前包进行升级在打成包即可。
- 项目打包成一个镜像,需要扩展。服务器A 需要扩展,服务器B,运行服务器A,B就被扩展起来了(B上可以扩展其他镜像),而且容器与容器直接也能够进行通信。
- 使用Docker之后,我们的部署应用就像搭积木一样。
-
- 在容器化之后,我们的开发,测试环境都是高度一致的。不会出现,自己电脑能运行,别人电脑不能运行的情况。
-
- Docker是内核级别的虚拟机(直接运行在内核之上的),可以在一个物理机上运行很多的容器实例!服务器的性能可以被压榨到极致。
-
三、Docker安装
1、Docker术语
- :Docker镜像好比是一个模板,可以通过这个模板来创建容器服务。如:tomcat镜像==>通过run运行==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中)。
- : Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。容器可以停止,删除等一些基本命令。目前就可以把这个容器理解为就是一个建议的Linux系统。
- :仓库就是存放镜像的地方。仓库分为私有和共有仓库。Docker Hub 默认是国外的。阿里云…都要容器服务器(配置镜像加速)
2、安装Docker
-
- 需要会一点点耳的Linux的基础.
- CentOS7镜像
- 使用Xshell(或者FinalShell)连接远程服务器进行操作!
-
- Xshell连接到Linux环境后,查看当前环境
# 系统内核是3.10以上的
[root@haodop1 ~]# uname -r
3.10.0-957.el7.x86_64
-
- Xshell连接到Linux环境后,查看当前系统
# 存储系统信息的文件 /etc/os-release
[root@haodop1 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
-
- centOS安装Docker官网
- 卸载旧版本的Docker
#1.卸载旧版本的Docker [root@haodop1 ~]# yum remove docker \ > docker-client \ > docker-client-latest \ > docker-common \ > docker-latest \ > docker-latest-logrotate \ > docker-logrotate \ > docker-engine
- 需要的安装包
#2.安装需要的安装包 [root@haodop1 ~]# yum install -y yum-utils
- 配置镜像的下载路径
#3、默认的Docker自己的仓库镜像地址,国外的 下载速度慢 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #阿里云的仓库镜像地址,推荐这个 yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新软件包索引
[root@localhost ~]# yum makecache fast 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * extras: mirrors.tuna.tsinghua.edu.cn * updates: mirrors.tuna.tsinghua.edu.cn base | 3.6 kB 00:00:00 docker-ce-stable | 3.5 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 元数据缓存已建立
- 安装docker的相关内容
#4.安装docker相关的内容(最新版) docker-ce 社区版(推荐) ee 企业版 #安装时 中途会提示你是否安装 需要输入 y 确定 yum install docker-ce docker-ce-cli containerd.io #安装时指定版本 yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 启动docker
#5.启动docker,docker相当于一个服务了 systemctl start docker # 设置开机自启动 systemctl enable docker
- 查看docker版本
#6.查看docker版本 [root@localhost ~]# docker version Client: Docker Engine - Community Version: 20.10.8 #版本号 API version: 1.41 Go version: go1.16.6 Git commit: 3967b7d Built: Fri Jul 30 19:55:49 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community #社区版 Engine: Version: 20.10.8 API version: 1.41 (minimum version 1.12) Go version: go1.16.6 Git commit: 75249d8 Built: Fri Jul 30 19:54:13 2021 OS/Arch: linux/amd64 #Linux系统 Experimental: false containerd: Version: 1.4.9 GitCommit: e25210fe30a0a703442421b0f60afac609f950a3 runc: Version: 1.0.1 GitCommit: v1.0.1-0-g4144b63 docker-init: Version: 0.19.0 GitCommit: de40ad0
- 启动测试helloWord
# 7.启动 官方的 hello-world 镜像 [root@localhost ~]# docker run hello-world Unable to find image 'hello-world:latest' locally #找不到hello-world镜像 尝试去下载 latest: Pulling from library/hello-world #远程拉取镜像 2db29710123e: Pull complete Digest: sha256:393b81f0ea5a98a7335d7ad44be96fe76ca8eb2eaa76950eb8c989ebf2b78ec0 Status: Downloaded newer image for hello-world:latest Hello from Docker! #docker已经安装成功了 This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
- 查看所有镜像
#8.查看下载的这个hello-word镜像 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 26 hours ago 13.3kB
- 了解卸载
#1.卸载依赖 sudo yum remove docker-ce docker-ce-cli containerd.io #2.删除资源 sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
- docker的默认工作路径: /var/lib/docker
2、配置docker阿里云镜像加速器(博主没有服务器,就没配置)
- 进入阿里云官网,登陆阿里云
- 搜索容器镜像服务
- 找到镜像服务
- 配置使用(需要使用自己的容器服务进行加速)
sudo mkdir -p /etc/docker sudo tee /etc/ docker/daemon. json <<-' EOF ' { "registry- mirrors": ["https://qiyb9988.mirror. aliyuncs. com"] } EOF sudo systemct1 daemon-reload sudo systemct1 restart docker
3、回顾hello-word的流程
- 命令下载流程
- 下载镜像流程图
- 找不到镜像抛出错误
#镜像找不到错误 [root@localhost docker]# docker run 666666666 Unable to find image '666666666:latest' locally docker: Error response from daemon: pull access denied for 666666666, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.
4、底层工作原理
-
- Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问!Docker Server接收到Docker-Client的指令,就会执行这个指令!
-
- 1、Docker比虚拟机更少的抽象层
- 2、docker利用宿主机的内核,VM需要的是Guest OS
- 3、所以说,新建一个容器的时候, docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导。虛拟机是加载GuestOS ,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!、
- 4、Docker和VM的对比如下:
四、Docker的常用命令
命令官方文档地址
1、帮助命令
[root@localhost docker]# docker version
#显示镜像个数,镜像启动个数等情况 [root@localhost docker]# docker info
#显示某个命令的帮助文档 [root@localhost docker]# docker 命令 --help [root@localhost docker]# docker images --help Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] List images Options: -a, --all Show all images (default hides intermediate images) --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --no-trunc Don't truncate output -q, --quiet Only show image IDs
2、镜像命令
- 查看所有本地的主机上镜像
[root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 27 hours ago 13.3kB #解释: REPOSITORY 镜像的仓库源 TAG 镜像的
标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 # 可选参数 -a/--all 列出所有镜像 -q/--quiet 只显示镜像的id #显示所有的镜像 [root@localhost docker]# docker images -a REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 27 hours ago 13.3kB #显示所有镜像的ID [root@localhost docker]# docker images -q feb5d9fea6a5 #显示所有镜像的ID [root@localhost docker]# docker images -aq feb5d9fea6a5
-
- 官网搜索镜像地址
- 命令搜索
[root@localhost docker]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11461 [OK] mariadb MariaDB Server is a high performing open sou… 4351 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 848 [OK] #可选参数 -f, --filter 过滤条件 #过滤条件为STARS大于3000的 [root@localhost docker]# docker search mysql -f=STARS=3000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11461 [OK] mariadb MariaDB Server is a high performing open sou… 4351 [OK] #过滤条件为STARS大于5000的 [root@localhost docker]# docker search mysql -f=STARS=5000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11461 [OK]
-
- 不指定版本默认下载最新版
[root@localhost docker]# docker pull mysql Using default tag: latest #如果不写tag默认就是latest latest: Pulling from library/mysql a330b6cecb98: Pull complete #分层下载,docker image的核心-联合文件系统 9c8f656c32b8: Pull complete 88e473c3f553: Pull complete 062463ea5d2f: Pull complete daf7e3bdf4b6: Pull complete 1839c0b7aac9: Pull complete cf0a0cfee6d0: Pull complete 1b42041bb11e: Pull complete 10459d86c7e6: Pull complete b7199599d5f9: Pull complete 1d6f51e17d45: Pull complete 50e0789bacad: Pull complete Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #下载来源的真实地址 #docker pull mysq l等价于 docker pull docker.io/library/mysql:latest
- 指定版本下载指定版本的(必须存再改版本才能够下载,不存在不能下载,可在官网搜索镜像查找镜像版本信息)
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql 6ec7b7d162b2: Already exists fedd960d3481: Already exists 7ab947313861: Already exists 64f92f19e638: Already exists 3e80b17bff96: Already exists 014e976799f9: Already exists 59ae84fee1b3: Already exists 7d1da2a18e2e: Pull complete 301a28b700b9: Pull complete 529dc8dbeaf3: Pull complete bc9d021dc13f: Pull complete Digest: sha256:c3a567d3e3ad8b05dfce401ed08f0f6bf3f3b64cc17694979d5f2e5d78e10173 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7
- 不指定版本默认下载最新版
-
- 通过镜像id或者名称来删除
#删除指定的镜像id [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f 镜像id #删除多个镜像id [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f 镜像id 镜像id 镜像id #通过镜像的名称删除镜像 [root@localhost docker]# docker rmi mysql
- 删除所有的镜像
#删除全部的镜像id $(...) 代表参数信息 docker images -aq 获取所以镜像id [root@iZwz99sm8v95sckz8bd2c4Z ~]# docker rmi -f $(docker images -aq)
3、容器命令
#下载一个centOS镜像
[root@localhost ~]# docker pull centos
-
- 通过run命令启动容器
docker run [可选参数] image #参数说明 --name="名字" 指定容器名字 tomcat01 tomcat01 区分容器名称 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 宿主机的端口映射到容器端口 -p ip:主机端口:容器端口 配置主机端口映射到容器端口 -p 主机端口:容器端口 (常用) -p 容器端口 容器端口号 -P 随机指定端口(大写的P) 随机产生端口映射 #测试,启动并进入容器 [root@localhost ~]# docker run -it centos /bin/bash #主机名称变了 证明进入容器成功 [root@f8ea34ea99d6 /]# #查看容器内的centos, 基础版本,很多命令都是不完善的! [root@f8ea34ea99d6 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr #宿主机的ls 比容器中的东西多 [root@localhost /]# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
-
[root@f8ea34ea99d6 /]# exit exit
-
#列出正在运行的容器 [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES #列出运行过的容器 [root@localhost /]# docker ps -a 参数说明: 列出当前正在运行的容器 -a 列出所有容器的运行记录 包括运行的和未运行的 -n=? 显示最近创建的n个容器 -q 只显示容器的编号 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f8ea34ea99d6 centos "/bin/bash" 6 minutes ago Exited (127) 2 minutes ago elegant_mahavira 4662c9a87254 feb5d9fea6a5 "/hello" 2 hours ago Exited (0) 2 hours ago friendly_kilby #显示最近创建过容器 [root@localhost /]# docker ps -n=1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f8ea34ea99d6 centos "/bin/bash" 11 minutes ago Exited (127) 8 minutes ago elegant_mahavira
-
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -a -q|xargs docker rm #删除所有的容器 #删除正在运行的容器报错 [root@localhost /]# docker rm 8eff292318fa Error response from daemon: You cannot remove a running container 8eff292318fa9abc1626e46e90f64af022c809498fdaa7015d46a6ac1d3a4ad1. Stop the container before attempting removal or force remove #强制删除 [root@localhost /]# docker rm -f 8eff292318fa 8eff292318fa
-
docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停止当前运行的容器 docker kill 容器id #强制停止当前容器 #启动容器 [root@localhost ~]# docker run -it centos /bin/bash #退出容器 [root@237857fa7604 /]# exit exit #查看所有启动过的容器 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 237857fa7604 centos "/bin/bash" 15 seconds ago Exited (0) 7 seconds ago great_hellman #通过启动过的容器id,启动未启动的容器 [root@localhost ~]# docker start 237857fa7604 237857fa7604 #查看启动的容器 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 237857fa7604 centos "/bin/bash" 56 seconds ago Up 14 seconds great_hellman #停止启动了的ring器 [root@localhost ~]# docker stop 237857fa7604 237857fa7604 #查看启动的容器 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4、其他常用命令
# 命令docker run -d 镜像名! -d:通过后台启动容器 [root@localhost ~]# docker run -d centos 02c0339f711b8ad483d644a6de9add5a35cd52b1d535145e4e02c5e89011a373 #问题docker ps,发现centos停止了 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES #产生问题的原因:常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有前台应用,就会自动停止(不是没有提供服务,而是启动后没有其他的指令,就自己结束了) #nginx:nginx 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
[root@localhost ~]# docker logs --help #参数解析 Options: --details #显示提供给日志的其他详细信息 -f, --follow #跟踪日志输出 --since string #显示自时间戳以来的日志 -n, --tail string #显示n条日志,不指定显示所有 -t, --timestamps #显示时间戳 --until string #在时间戳(例如2013-01-02T13:23:37Z)或相对时间戳之前显示日志(例如,42米跑42分钟) 常用: docker logs -tf 容器id docker logs -tf --tail number 容器id #number为要显示的日志条数,不指定默认显示所有 #docker容器后台运行,必须要有一个前台的进程,否则会自动停止 #编写shell脚本循环执行,使得centos容器保持运行状态 [root@localhost ~]# docker run -d centos /bin/bash -c "while true;do echo yyds;sleep 5;done" e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c #查看当前运行的容器 如果不加shell脚本,会自动停止 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e35123013dec centos "/bin/bash -c 'while…" 8 seconds ago Up 7 seconds objective_rosalind #查看日志 会自动追踪日志进行输出 [root@localhost ~]# docker log login logout logs [root@localhost ~]# docker logs -tf --tail 10 e35123013dec 2021-09-25T06:17:15.055348714Z yyds 2021-09-25T06:17:20.082568234Z yyds 2021-09-25T06:17:25.086254765Z yyds 2021-09-25T06:17:30.090379614Z yyds 2021-09-25T06:17:35.095466135Z yyds 2021-09-25T06:17:40.099160475Z yyds 2021-09-25T06:17:45.103262540Z yyds
#命令:docker top 容器id [root@localhost ~]# docker top e35123013dec UID(当期用户ID) PID(进程ID) PPID(父ID) C STIME TTY TIME CMD root 20073 20052 0 14:17 ? 00:00:00 /bin/bash -c while true;do echo yyds;sleep 5;done root 20383 20073 0 14:20 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5 #可以通过进程ID杀死进程
# docker inspect 容器id #包括 执行的脚本信息、容器的Id生成(截取了显示Id的前一段)、状态、从哪个镜像过来的、一些配置、挂载点(数据存储到宿主机上)、环境变量、网络配置等。 [root@localhost ~]# docker inspect e35123013dec [ { "Id": "e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c", #容器的Id生成(截取了Id的前一段) "Created": "2021-09-25T06:17:14.320046194Z", "Path": "/bin/bash", "Args": [ "-c", #执行的脚本 "while true;do echo yyds;sleep 5;done" ], "State": { #状态 "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 20073, "ExitCode": 0, "Error": "", "StartedAt": "2021-09-25T06:17:15.056344032Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",# 来自于哪个镜像 "ResolvConfPath": "/var/lib/docker/containers/e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c/resolv.conf", "HostnamePath": "/var/lib/docker/containers/e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c/hostname", "HostsPath": "/var/lib/docker/containers/e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c/hosts", "LogPath": "/var/lib/docker/containers/e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c/e35123013dec93452c6b8886ada225584f17a668f4f3683ad18b26623a49d16c-json.log", "Name": "/objective_rosalind", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": { } }, "NetworkMode": "default", "PortBindings": { }, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "CgroupnsMode": "host", "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs" 标签:
sc无耳连接器