docker底层原理
docker是怎么工作的?
Docker是一个C/S结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器,容器,是一个运行时主机,就是我们前面说到的集装箱。
为什么Docker比VM比较快
Docker常用命令
帮助命令
- docker version
- docker info
- docker --help
镜像命令
- docker images 列出本地主机上的镜像
- -a 列出本地所有的镜像(含中间映像层)
- -q 只显示镜像ID
- -digests: 显示镜像的摘要信息、
- -no-trunc:显示完整的镜像信息
- docker search 某个镜像的名字 去https://hub.docker.com 去搜索镜像
- --no-trunc 显示完整的镜像描述
- -s 列出收藏数不小于指定值的镜像
- --automated只列出automated build类型的镜像
- docker pull 某个镜像的名字 下载镜像
- docker pull 镜像名字[:TAG]
如果镜像名字后面不加标签,表明就是最新版本
- docker rmi 镜像名字ID 删除进行
- 删除单个 docker rmi -f 镜像ID
- 删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG
- 删除全部 docker rmi -f $(docker images -qa)
容器命令
有了镜像才能创建容器,这是根本前提
新建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- OPTIONS
- --name="容器新名字":为容器指定一个名称
- -d 后台运行容器,并返回容器ID 也即启动守护式容器
- -i: 以交互模式运行容器,通常与-t同时使用
- -t 为容器重新分配一个伪输入终端,通常与-i同时使用
- -P 随机端口映射
- -p: 指定端口映射,有以下四种格式
列出当前所有正在运行的容器 docker ps [OPTIONS]
-a 列出当前所有正在运行的容器+历史上运行过的
-l 显示最近创建的容器
-n 显示最近n个创建的容器
-q 静默模式,只显示容器的编号
--no-trunc 不截断输出
退出容器
- 两种退出方式
- exit 容器停止退出
- ctrl+P+Q 容器不停止退出
启动容器 docker start 容器名或者容器ID
重启容器 docker restart 容器名或者容器ID
停止容器 docker stop 容器名或者容器ID
强制停止容器 docker kill 容器名或者容器ID
删除已停止的容器 docker rm 容器iD
一次性删除多个容器
- docker rm -f $(docker ps -a -q )
- docker ps -a -q | xargs docker rm
重要
启动守护式容器 docker run -d 容器名
查看容器日志 docker logs -f -t --tail 容器ID
- -t 是加入时间戳
- -f 跟随最新的日志打印
- --tail 数字 显示最后多少条
查看容器内运行的进程 docker top 容器ID
查看容器内部细节 docker inspect 容器ID
进入正在运行的容器并以命令行交互
- docker exec -it 容器ID bashshell
- 重新进入docker attach 容器ID
- 上述两个区别:
- attach 直接进入容器启动命令的终端,不会启动新的进程
- exec 是在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID :容器内路径 目的主机路径