我们写代码会接触到好几个环境: 开发环境、测试环境、测试环境
不知道大家有没有遇到过这种情况,一个代码在自己电脑跑的好好的,但是在放到别人的电脑上跑的时候忽然就报错了,究其根本只能是因为环境不匹配导致的,但如何解决这种因为环境导致的问题呢?是不是可以在迁移的过程中,把环境也迁移过去,Docker就是为此而生的
Docker是一个开源的应用容器引擎
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。
容器是完全使用沙箱机制,相互隔离
容器性能开销极低
Docker安装
第一步:先查看centsos版本
Docker要求CentOS系统的内核版本高于3.10
如果不满足的话可以升级软件包及内核
yum updat
第二步:安装Docker
第三步: 启动Docker
第四步:开机启动docker
第五步:停止docker
Docker架构
镜像(Image) : Docker镜像(lmage),就相当于是—个root文件系统。比如官方镜像ubuntu:16.04就包,含了完整的一套Ubuntu16.04最小系统的root文件系统。
容器(Container) :镜像(lmage)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository) :仓库可看成一个代码控制中心,用来保存镜像。
配置Docker镜像加速器
docker命令
docker服务相关的命令
启动docker
查看docker状态
停止docker
重启docker
开机启动docker
docker镜像相关的命令
查看镜像
搜索镜像
拉取镜像
删除镜像
删除所有镜像
Docker容器相关命令
查看容器
创建容器
注意
如果通过-it创建的容器,退出容器哦之后就关闭了
该创建方式通过exit退出之后不会关闭容器
进入容器
启动容器
关闭容器
删除容器
删除所有容器
查看容器信息
Docker容器的数据卷
Docker容器删除后,在容器中产生的数据还在吗?
Docker容器和外部机器可以直接交换文件吗?
容器之间想要进行数据交互?
数据卷:1.数据卷是宿主机中的一个目录或文件
2.当容器目录和数据卷目录绑定后,对方的修改会立即同步
3.一个数据卷可以被多个容器同时挂载
4.一个容器也可以呗挂载多个数据卷
数据卷的作用
1.容器数据持久化
2.外部机器和容器间通信
3,容器之间数据交换
配置数据卷
创建启动容器时,使用-v参数 设置数据卷
注意事项:
1.目录必须是绝对路径
2.如果目录不存在,会自动创建
3.可以挂载多个数据卷
恢复容器
数据卷容器
多容器进行数据交换
1.多个容器挂载同一个数据卷
2.数据卷容器
配置数据卷容器
1.创建启动c3数据卷容器,使用-v参数设置数据卷
2.创建启动c1 c2容器,使用–volumes-from参数 设置数据卷
Docker应用部署
MySQL部署
案例需求:
在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server
该操作行为称为端口映射
实现步骤:
第一步:搜索mysql镜像
第二步:拉取mysql镜像
第三步:创建容器、设置端口映射、目录映射
第四步:操作容器中的mysql
Tomcat部署
在Docker容器中部罢Tomcat,并通过外部机器访问Tomcat部署的项目。
实现步骤:
1.搜索tomcat镜像
2.拉取tomcat镜像
3.创建容器
4.部署项目
5.测试访问