Docker是一个开源的应用容器引擎,基于Go语言开发,Docker可以打包应用及其依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的系统。
docker相关资源:
Docker架构
图片来源:Docker 架构
Docker与虚拟机的区别:
容器与容器之间只是进程的隔离,虚拟机是完全的资源隔离(容器虚拟化的是操作系统,虚拟机虚拟化的是硬件)虚拟机的启动需要的时间是分钟级别,Docker启动是秒级甚至更短容器使用宿主操作系统的内核,只能运行在同一类型操作系统,虚拟机使用完全独立的内核,可以运行不同操作系统安装
Docker可以运行在MAC、Windows、CentOS、Ubuntu等操作系统上,官网:https://www.docker.com/
网上有很多安装教程,尽量在linux系统上安装使用。
安装成功后,可以通过docker -v
命令查看安装是否成功
> docker -vDocker version 20.10.11, build dea9396
Docker基本命令
服务相关命令
命令 | 描述 |
---|---|
systemctl start docker | 启动docker服务 |
systemctl stop docker | 停止docker服务 |
systemctl restart docker | 重启docker服务 |
systemctl status docker | 查看docker服务状态,启动中:active (running)、停止状态:inactive (dead) |
systemctl enable docker | 设置开机启动docker服务 |
镜像相关命令
命令 | 描述 |
---|---|
docker images | 查看本地所有的镜像 |
docker search 镜像名称 | 从 Docker Hub 查找需要的镜像 |
docker pull 镜像名称[:版本号] | 从Docker Hub(仓库)下载指定版本镜像到本地,如果版本号未指定,则默认下载最新的版本。 |
docker rmi 镜像id docker rmi 镜像名称[:版本号] | 根据镜像id或镜像名称+版本号(若版本号未输,默认是latest)删除指定镜像 |
docker save 镜像名称:版本>路径/xxx.tar | 将指定镜像导出到指定路径下(文件后缀为rar) |
docker load<文件路径 | 将指定镜像文件导入到系统中 |
docker tag 原镜像名称:版本 新镜像名称:新版本 docker tag 镜像id 新镜像名称:新版本 | 标记本地镜像为新镜像名称、新版本(不会修改原有的镜像) |
docker history 镜像名称 | 查看指定镜像的创建历史 |
docker images
命令:docker images [OPTIONS]
描述:列出本地镜像
输出结果字段说明:
docker search
命令:docker search 镜像名称
描述:从 Docker Hub 查找需要的镜像
输出结果字段说明:
docker pull
命令:docker pull 镜像名称[:版本号]
描述:从 Docker Hub 拉取指定的镜像到本地
docker rmi
命令:
根据镜像id删除:docker rmi 镜像id根据镜像名称和版本号(默认为latest)删除:docker rmi 镜像名称[:版本号]描述:rmi(remove images的缩写)删除指定的镜像
注意:如果镜像名称一样,版本号一个是latest,一个是具体的版本号,如果具体的版本号就是最新的,则2个镜像的镜像id是一样的,这个时候使用镜像id删除会失败,这个时候就只能使用镜像名称+版本号的方式去删除指定的镜像。
也可以批量删除镜像(需要跟docker images -q结合使用),命令行格式为:docker rmi `docker images -q redis`
docker save
命令:docker save 镜像名称:版本>路径/xxx.tar
描述:将指定镜像导出到指定路径下(文件后缀为rar)
注意:文件对应的路径必须是已经存在的,路径不存在的话会失败
docker load
命令:docker load<文件完整路径(包含文件名)
描述:将指定镜像文件导入到系统中
docker tag
命令:
按照镜像名称和版本:docker tag 原镜像名称:版本 新镜像名称:新版本按照镜像id:docker tag 镜像id 新镜像名称:新版本描述:标记本地镜像为新镜像名称、新版本
从结果来看,docker tag并没有将原有的内容进行修改(IMAGE ID)一样,相当于是复制了个镜像
docker history
命令:docker history 镜像名称
描述:查看指定镜像的创建历史
容器相关命令
命令 | 描述 |
---|---|
docker ps | 查看正在运行的容器 |
docker run [option] --name=容器名称 本地镜像名称:镜像版本 [待执行命令] | 创建并启动容器,且自动执行待执行命令 |
docker exec 参数 容器名称或容器id 待执行命令 | 进入容器(后面退出容器,容器不会关闭) |
docker start/restart/stop/kill 容器名称或容器id | 启动/重启/停止/杀掉 容器 |
docker pause/unpause 容器名称或容器id | 暂停容器运行 |
docker rm 容器名称或容器id | 删除容器 |
docker inspect 容器名称或容器id | 查看容器元信息 |
docker top 容器名称或容器id | 查看容器中运行的进程信息 |
docker stats 容器名称或容器id | 查看容器占用资源情况 |
docker cp 本地路径 容器id:路径 docker cp 容器id:路径 本地路径 | 将本地路径内容拷贝到指定容器的指定路径下 将指定容器的指定路径内容拷贝到本地指定路径 |
docker logs [option] 容器名称或容器id | 查看指定容器的日志 |
docker ps
命令:docker ps或docker ps -a
描述:查看正在运行的容器
结果字段说明
docker run
命令:docker run [option] --name=容器名称 镜像名称:镜像id 待执行命令
option常用参数:
描述:创建并启动容器,并在容器中自动执行指定的一条命令
docker start/restart/stop/kill
命令:docker start/restart/stop/kill 容器名称或容器id
描述:启动/重启/停止/杀掉 容器
docker pause/unpause
命令:docker pause/unpause 容器名称或容器id
描述:暂停容器运行
docker rm
命令:docker rm 容器名称或容器id
选项:
描述:删除容器(需要停止容器再删,运行状态的会删除失败)
docker inspect
命令:docker inspect 容器名称或容器id
描述:查看容器元信息
docker top
命令:docker top 容器名称或容器id
描述:查看容器中运行的进程信息
输出结果字段说明:
docker stats
命令:docker stats 容器名称或容器id
描述:查看容器占用资源情况
输入docker stats命令,回车后,出现如下界面:
之后可以Ctrl+C退出当前界面
docker cp
命令:docker cp 路径1 路径2
描述:将路径1的内容复制到路径2去。如果是表示某个容器的路径,则需要是容器id:
或容器名称:
开头
注意:路径均为绝对路径
docker logs
命令:docker logs [option] 容器名称或容器id
描述:获取容器的日志
option参数说明
docker exec
命令:docker exec 参数 容器名称或容器id 待执行命令
描述:在运行的容器中执行命令(exit命令退出容器后,容器不会关闭)
参数说明:
数据卷和数据卷容器
思考:
Docker容器删除后,容器中产生的数据也会随之销毁(数据非持久化)Docker容器和外部机器不能可以直接交换文件(不能直接,那就间接)容器之间想要进行数据交互(不能直接,那就间接)为了解决容器中的数据无法与其他机器、容器交互和持久保存的问题,Docker提供了数据卷。
数据卷:
数据卷作用:
容器数据持久化外部机器和容器间接通信容器之间数据交换配置数据卷
在创建启动容器时,使用 -v参数 设置数据卷:
docker run … -v 宿主机目录(文件):容器内目录(文件)
…
注意事项:
目录必须时绝对路径如果目录不存在,会自动创建可以挂载多个数据卷
一个容器可以挂载多个数据卷
配置数据卷容器
如果某个容器想与数据卷容器共享数据,除了2者的数据卷是同一个的方法外,也可以设置一个数据卷容器,然后其他容器可以跟这个数据卷容器进行挂载。
在创建启动数据卷容器时,使用 -v参数 设置数据卷:
docker run … -v 容器内目录(文件)路径
…
在创建启动容器时,使用 –volumes-from 数据卷容器id或名称 挂载数据卷容器
docker run … --volumes-from 数据卷容器id或名称
…
docker volume命令
docker volume ls
格式:docker volume ls [option]
常用选项:
--filter dangling=true
:只显示未使用中的卷 描述:查看全部数据卷容器信息(只展示数据卷容器的卷,主机的数据卷目录、文件或关联数据卷容器的容器均不被识别)
docker volume inspect
格式:docker volume inspect 卷名称
描述:查看卷详情
docker volume rm
格式:docker volume rm 卷名称
描述:删除对应的卷(如果卷还在使用中【被映射、挂载】,则删除失败)