Docker —— Docker 的底层原理

Posted Johnny*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker —— Docker 的底层原理相关的知识,希望对你有一定的参考价值。

Docker是怎么工作的

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机 上,然后通过socke连接从客户端访问,守护进程从 客户端接收命令并管理运行在主机上的容器。

在这里插入图片描述

为什么Docker比VM快

在这里插入图片描述
通过上图可以知道:

  1. docker有着比虚拟机更少的抽象层。由于Docker不需要Hypervisor实现资源虚拟化,运行在docker容器上的程序直接使用的都是物理机的硬件资源。因此在CPU、内存利用率上Docker将会有明显的优势。
  2. Docker 利用的是宿主机的内核,而不需要Guest OS。因此新建一个容器时,不需要和虚拟机一样重新加载一个操作系统内核 。对于虚拟机来说,当新建一个虚拟机是时候,虚拟软件需要加载Guest OS,这个过程是分钟级别的,而Docker直接利用宿主机的操作系统,省略了这个过程,因此新建一个docker容器只需要几秒钟。

在这里插入图片描述

Docker常用命令

帮助命令

查看docker版本
[johnny@localhost ~]$ docker version

查看docker详细信息

[johnny@localhost ~]$ docker info

docker帮助命令
[johnny@localhost ~]$ docker --help

镜像命令

docker images 列出本地主机上的镜像

【可选参数】
-a 列出本地所有镜像(含中间映像层)
-q 只显示镜像ID
–digests 显示镜像摘要
–no-trunc 显示完整的镜像信息

在这里插入图片描述

docker search 某个镜像名字 ,该命令从docker.hub中搜索文件并返回查询结果

在这里插入图片描述
docker pull 某个镜像名字 从镜像源拉取镜像到本地

docker rmi 某个镜像ID

在这里插入图片描述

容器命令

新建并启动容器

docker run [option] 容器名/id
在这里插入图片描述

在这里插入图片描述

列出当前正在运行的容器

docker ps [options]

在这里插入图片描述

退出容器

两种退出方式

  1. exit 容器停止并 退出
  2. ctrl + P +Q 容器不停止退出

启动容器

docker start 容器名/id

重启容器

当容器经ctrl + P + Q 退出,则
docker restart 容器名/id

停止容器

温柔地停止
docker stop 容器名/id

强制停止容器

docker kill 容器名/id

删除已停止的容器

docker rm 容器ID
一次性删除多个容器:
docker rm -f $(docker ps -qa)

重要

启动守护式容器

在这里插入图片描述
所以使用 docker -l 查看不到

查看容器日志

docker logs -f -t --tail 容器ID
-t 是加入时间戳
-f 跟随最新的日志打印
–tail 数字显示最后多少条

查看容器内运行的进程

docker top
在这里插入图片描述

查看容器内部细节

docker inspect 容器名/id

进入正在运行的容器并以命令行交互

在这里插入图片描述

在这里插入图片描述

从容器拷贝文件到主机上

在这里插入图片描述

安装mysql

在这里插入图片描述

使用docker 安装rabbitmq

docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.7.14-management

windows浏览器访问虚拟机开的rabbitmq服务,无法访问,尝试

  1. 关闭防火墙

systemctl stop firewalld

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

docker 未启动

[johnny@localhost ~]$ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor pre>
   Active: inactive (dead)
     Docs: https://docs.docker.com

[johnny@localhost ~]$ systemctl restart docker.service 
[johnny@localhost ~]$ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor pre>
   Active: active (running) since Fri 2021-07-02 13:18:52 CST; 6s ago
     Docs: https://docs.docker.com
 Main PID: 4849 (dockerd)

一劳永逸的方法,设置docker开机自启动
systemctl enable docker

利用虚拟机搭建docker环境,使用rabbitmq入门

以上是关于Docker —— Docker 的底层原理的主要内容,如果未能解决你的问题,请参考以下文章

Docker底层原理

好奇宝宝看 Docker 底层原理(中)

docker底层原理

Docker圣经:大白话说Docker底层原理,6W字实现Docker自由

Docker的底层原理实现(二十)

docker的底层原理及运用