说在前面:本文依旧是B站“狂神说Java”Docker课程的笔记整理
课程链接:【狂神说Java】Docker最新超详细版教程通俗易懂_哔哩哔哩_bilibili
一、 Docker的底层原理
1. Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。当Docker接收到Docker-Client的指令,就会执行这个命令!
2. Docker为什么比虚拟机快?
(1) 与虚拟机相比,Docker有着比虚拟机更少的抽象层;
(2) Docker利用的是宿主机的内核,虚拟机需要的是Guest OS.
所以说,新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个操作系统的内核,避免引导。虚拟机加载Guest OS,分钟级别;而Docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!
二、 Docker的常用命令
1. 帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker --help # 帮助命令
docker帮助文档的地址:Redirecting…
2. 镜像命令
docker images # 查看本地主机上的所有镜像
# 不用创建和拉取就有的镜像
REPOSITORY # 镜像的仓库源
TAG # 镜像的标签
IMAGE ID # 镜像的ID
CREATED # 镜像的创建时间
SIZE # 镜像的大小
# 可选项
-a, --all # 列出所有镜像
-q, --quiet # 只显示镜像的id
docker images -aq # 显示所有的镜像id
docker search # 搜索命令
docker search mysql # 在DockerHub中搜索mysql
# 可选项,通过搜索来过滤
docker search mysql --filter=STARS=3000 # 筛选STARS大于3000的镜像
docker pull 下载镜像
下载镜像命令格式:
docker pull 镜像名 # 默认下载最新版本
docker pull 镜像名[:tag] # 下载指定版本的镜像
# 下载mysql
docker pull mysql
docker pull mysql:5.7
docker rmi # 删除镜像
docker rmi -f 容器id # 删除指定容器
docker rmi -f 容器id 容器id 容器id # 删除多个容器
docker rmi -f $(docker images -aq) # 删除全部容器
3. 容器命令
说明:有了一个镜像才可以创建容器,下载一个ubuntu镜像来测试学习
docker pull ubuntu
新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字 tomcat01,tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P 随机指定端口
# 测试,启动并进入容器
docker run -it ubuntu /bin/bash
ls # 查看容器内的ubuntu
# 从容器中退回主机
exit # 退出容器
列出所有运行的容器——docker ps 命令
docker ps # 列出当前正在运行的容器
docker ps -a # 列出当前正在运行的容器+显示历史运行过的程序
docker ps -n=? # 显示最近创建的n个容器
docker ps -p # 只显示容器的编号
退出容器
exit # 容器停止并退出
ctrl+P+Q # 容器停止不退出
删除容器
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,强制删除 rm -f
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器