Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整体发布的容器虚拟化技术。
1.1. 前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,
要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x
1.2. Docker的基本组成
- 镜像(image): Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
- 容器(container): Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。
- 仓库(repository): 是集中存放镜像文件的场所。
类似于Maven仓库,存放各种jar包的地方;
github仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
1.3. 安装步骤
- 确定是CentOS7以上版本
- yum安装gcc相关
- 安装需要的软件包
- 设置stable镜像仓库
使用aliyun镜像加速,不建议使用官网推荐的。因为众所周知连接国外的网会比较慢
- 更新yum软件包索引
- 安装DOCKER CE
这一步是真正安装docker,上面是安装所需要的条件
- 启动docker
- 测试
- 卸载
1.4 阿里云镜像加速
https://promotion.aliyun.com/ntms/act/kubernetes.html
2.1. Docker服务相关的命令
- 启动docker服务
- 停止docker服务
- 重启docker服务
- 查看docker服务状态
- 开机启动dockeh服务
2.2. Docker镜像相关的命令
- 查看镜像-本地仓库
- 搜索镜像-远程仓库
docker search 镜像名称
- 拉取镜像
冒号后跟的是版本号,如果不跟默认latest(最新版)
docker pull 镜像名称:版本号
- 删除镜像-本地镜像
docker rmi 镜像名称:版本号 [镜像id]
2.3. Docker容器相关的命令
- 创建容器命令
-i:交互,保持容器一直运行
-t:提供一个交互页面,如果使用exit则退出容器,容器就会被关闭
- -name:容器的名称
上面使用-t就会进入容器内部,
-d:后台运行。配合i。
- 查看当前的容器有哪些
- 进入开启的容器内部
注意:使用exit则不会关闭容器,只会退出容器
- 启动容器
- 关闭容器
- 删除容器
注意:只能删除关闭的容器
- 查看容器的信息
思考:
dockers容器删除后,容器中的产生的数据还在吗? 不存在
Docker容器和外部机器可以直接交换文件吗? 不可以
容器之间想要进行数据交互? 通过数据卷
一个数据卷可以被多个容器同时挂载一个容器也可以被挂载多个数据卷
作用:
1.解决数据持久化问题
2.解决外部机器和容器的间接通讯问题
3.解决容器之间的数据交换
- 宿主机容器卷中的内容发生改变对应容器内的目录也跟着改变
- 容器内的目录发生改变宿主机容器卷内的内容也跟着变化
- 删除容器后,再次开启容器并挂载容器卷。数据依然存在
- 一个容器挂载多个容器卷
- 多个容器挂载一个容器卷
-v :挂载数据卷
4.1. Docker部署mysql
- 拉取mysq1镜像
- 创建一个mysql目录。
- 进入
- 创建mysql容器
- 下载 Tomcat 9.0 镜像
- 创建并启动容器
- 复制配置文件的conf、log日志、webapps、work、temp文件夹。
下面命令依次执行。将容器与主机建立数据卷
- 停止容器
- 删除容器
- 再次创建启动容器并挂载目录
- 拉取tomcat镜像
- 创建tomcat目录
- 进入tomcat目录
- 创建tomcat容器
4.3. Docker部署nginx
- 拉取nginx镜像
- 创建目录
在/root目录下创建nginx目录用于存储nginx数据信息
在nginx中创建conf,log,html 目录
- 创建容器
创建容器的目的在于复制配置文件
- 容器中的nginx.conf文件,conf.d文件夹,html文件夹复制到宿主机
- 删除容器
关闭该容器
删除该容器
- 生成容器,并挂载数据卷
进入redis目录
创建redis.conf配置文件
将以下内容复制到redis.conf文件中
- 创建容器