一、概述
百度百科:
简介:
Docker是一个虚拟化平台( https://www.docker.com),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。现阶段,很多应用软件的安装都在向基于docker方式的安装进行实现。例如mysql,那么为什么不直接在操作系统中安装一个mysql,而是用容器呢?因为,安装MySql过程并不简单,要配置安装源,安装依赖包,对mysql进行配置…如果要在多台主机上安装,每台主机都要进行这些繁琐的操作,万一服务器挂了,这一系列操作还要再重来一遍,但有了docker,一个安装配置好的mysql容器,可以直接拿到另一台主机上启动,而不必重新安装mysql。另外,docker还有一重要的用处,就是可以保证开发,测试和生产环境的一致.
Docker核心对象
1.镜像
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。
2.容器
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。
二、Docker相关命令
1.Docker服务操作相关指令
systemctl start docker 启动docker服务
systemctl status docker 查看Docker状态,running表示运行中
systemctl stop docker 停止docker服务
systemctl restart docker 重新启动Docker服务
systemctl enable docker 设置Docker开机自启
systemctl disable docker 禁用Docker开机自启
docker info 查看Docker信息
2. Docker 镜像操作相关指令
docker pull 镜像名:版本号 下载镜像
docker images 浏览本地镜像文件
docker inspect 镜像名 查看镜像详情
docker history 镜像名 查看镜像历史
docker image rm 镜像名或镜像id 删除镜像文件
docker save hello-world | gzip > 镜像名.tar.gz 导出镜像文件
docker load < 镜像名.tar.gz 导入镜像文件
docker run 镜像名 运行镜像文件
3. Docker 容器操作相关指令
docker run hello-world 启动hello-world镜像
docker run -it 镜像名 bash 创建并启动容器
docker exec -it 容器id bash 进入指定的容器
exit 退出容器
docker container rm 容器id 删除容器
docker container rm -f 容器id 删除正在运行的容器
docker container prune 清理所有处于终止状态容器
docker ps 查看Docker中正在运行的容器
docker ps -a 查看Docker所有的容器
docker container stop 容器id 停止运行的容器
docker container restart 容器id 重新启动容器
docker container logs 容器id 查看容器日志
注:
- -i 表示交互模式
- -t 表示终端模式
- -d 后台运行模式
- -e 表示指定环境,如指定启动mysql时的容器密码
- -v 挂载(数据卷/目录)
- -p 端口(3306:3306)
- --name 给容器一个名字
4.Docker 数据卷或目录挂载相关指令
数据管理概述
在容器中管理数据主要有两种方式:
- 数据卷(Volumes)
- 挂载主机目录 (Bind mounts)
数据卷:
- 定义:数据卷是一个可以供一个或者多个容器使用的特殊目录
- 特点
可以在容器之间共享和重用
对数据卷的修改会马上生效
对数据卷的更新不会影响镜像
数据卷会一直存在,即使容器被删除
docker volume create 数据卷名称 创建数据卷
docker volume inspect 数据卷名称 查看指定数据卷的信息
docker volume ls 查看所有的数据卷
docker run -it -v 数据卷名:容器目录 镜像名 bash(交互模式才加) 启动挂载数据卷的容器
docker volume rm 数据卷名称 删除数据卷(如果数据卷被容器使用则无法删除)
docker volume prune 清理无主数据卷
docker run -it -v 宿主机目录:容器目录 镜像名 bash 启动容器时挂载主机目录
5.Docker容器互联
Docker 中存在多个容器时,容器与容器之间经常需要进行通讯,例如nacos访问mysql,redis集群中各个节点之间的通讯。
1.创建网络
docker network create -d bridge yjh-net yjh-net为自定义网络名,-d driver,网络类型,默认 bridge
docker network ls 查看所有网络
docker inspect 网络id 查看网络信息
2.添加容器到网络
开启第一个终端基于centos:7这个镜像启动容器,并加入到yjh-net这个网络
docker run -it --name yjh1 --network yjh-net centos:7
开启第二个终端基于centos:7这个镜像启动容器,并加入到yjh-net这个网络
docker run -it --name yjh2 --network yjh-net centos:7
3.联通测试
互联成功,测试完成。
满怀希望就会所向披靡!!!