Docker是怎么工作的
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机 上,然后通过socke连接从客户端访问,守护进程从 客户端接收命令并管理运行在主机上的容器。
为什么Docker比VM快
通过上图可以知道:
- docker有着比虚拟机更少的抽象层。由于Docker不需要Hypervisor实现资源虚拟化,运行在docker容器上的程序直接使用的都是物理机的硬件资源。因此在CPU、内存利用率上Docker将会有明显的优势。
- 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]
退出容器
两种退出方式
- exit 容器停止并 退出
- 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服务,无法访问,尝试
- 关闭防火墙
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