学习笔记。B站视频连接:https://www.bilibili.com/video/BV1Vs411E7AR?p=19
文章目录
docker运行的底层原理
为什么dockers比VM要快?
(1) docker 有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率.上有明显优势。
(2) docker 利用的是宿主机的内核,而不需要Guest OS。因此,当新建一- 个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统则省略了返个过程,因此新建一个docker容器只需要几秒钟。
docker常用命令
docker help command
docker info
docker version
docker --help
docker image command
一个镜像可以生成多个容器实例
docker images # 列出本地的docker镜像
docker images -a # 列出本地所有的镜像(含中间映像层)
docker images -q # 只显示镜像id
docker images --digests # 显示镜像的摘要信息
docker images --no-trunc # 显示镜像的完整信息
docker search xxx # search xxx's images from Official website
docker search -s 30 xxx # star num>30
docker search -s 30 --no-trunc xxx # star num>30 and show the complete information
docker search --automated # only list automated build type images
docker pull xxx # pull images:latest from
docker rmi xxx # default : latest # delete images from your depository, but there may be some error
docker rmi -f xxx # mean that you force to do delete
# delete more once
docker rmi -f helloworld tomcat xxx xxxx xxxxx
#delete all
docker rmi -f $(docker images -qa)
docker container command
# create and run a container
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS :
--name="容器新名称" # 为容器指定一个名字
-d # 后台运行容器,并返回容器ID,也即启动守护式容器
-i # 较常用 以交互模式运行容器,通常与-t同时使用
-t # 较常用 以容器重新分配一个伪输入终端,通常与-i同时使用
-P # 随机端口映射
-p # 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort
eg:docker run -it --name="centos01" 0d12
docker run -it --name centos02 0d12
# list all running contioners
docker ps [OPTIONS]
docker ps默认显示当前正在运行的容器
OPTIONS :
-a # 列出当前所有正在运行的容器和历史上运行过的
-l # 显示最近创建的容器
-n # 显示最近n个创建的容器
-q # 静默模式 只显示容器编号
--no-trunc # 不截断输出
# exit 退出容器 有两种退出方式
exit # 容器停止退出
ctrl+P+Q # 容器不停止退出
# start
docker start 【容器名/ID】
# restart
docker restart 【容器名/ID】
# stop 可以慢慢停止
docke stop 【容器名/ID】
# stop firecely 强制停止
docker kill 【容器名/ID】
# delete stopped container
docker rm 【容器ID】 # 删除镜像是rmi,这里是rm,删除容器。可以一次删除多个
# 一次性删除多个
docker rm -f $(docker ps -a -q) # 删除所有
docker rm -f $(docker ps -q) # 删除正在运行的
docker ps -a -q | xargs docker rm # 删除所有
IMPORTANT
# 启动守护式容器 查看一下run的-d参数
docker run -d --name="centos03" 0d12 # it是前台交互
# 这样就不会进入centos,而是在后台运行
# 使用docker ps的命令并没有显示执行的这个容器
docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
# 执行这句话后,也会生成一个dockers容器,但是不在前台运行,而是在后台运行,每两秒输出一个hello zzyy
# 可以使用以下命令查看
docker logs 【容器id】
docker logs -t【容器id】
# 查看容器日志
docker logs -f(追加) -t(过去的逐条详细显示) --tail 【倒数夫人第几行,与tail匹配】【容器ID】
eg:
docker logs -t -f --tail 3 【容器ID】
# explore the process that run in container 查看容器内运行的进程
docker top 【容器ID/名字】
# explore the details in the container
docker inspect 【容器ID/名字】
# 进入正在运行的容器并以命令行交互
docker exec -it 【容器ID/名字】 bashShell
eg: docker exec -t 【容器ID/名字】 ls -l /tmp
# 不用进到docker里面,就可以执行ls -l /tmp这个命令(只可以用到在运行的容器上(up)),结果返回到外面
eg: docker exec -it 【容器ID/名字】 /bin/bash
# 会进到这个容器里
docker attach【容器ID/名字】
# 注意上面两个命令都是进行正在运行的容器,如果容器没有运行,那么需要先start
# 从容器内拷贝文件到主机上
docker cp 【容器ID】:容器内路径 目的主机路径
小总结
视频截图