使用docker-compose 部署服务

1.docker 安装

很简单 docker官网

2.docker 的一些概念

镜像

对!就和我上面说的使用光盘拷贝已经有的镜像一样,我们的镜像是指一个系统的镜像
我们的镜像都是基于 linux 的准确来说是基于 ubuntu 的。
docker 镜像可以理解为,你在 win 下用ghost 拷贝出来的磁盘镜像。不过他是 linux 版的。

性能损耗

得益于现在的 linux 内核的 namespace, 我们可以拥有各种直达内耗的容器可以用,你在 docker 中的进程其实进程就是直接的宿主机进程,这一切都在系统启动 clone 函数的时候就决定了, 所以谈不上性能损耗。

容器

容器本身就是我们最重要的概念,我们使用 docker 要做的就是容器这个东西。

简单来说容器是一个镜像的实例

更通俗来说容器就像你用 vm 或者 virtualbox 使用镜像创建的一个虚拟机实例

hub

就是镜像仓库。

如果你写代码,你肯定就知道 github,我们把代码托管到 github 之上。
如果我们部署,我肯定就要用 dockerhub, 我们把镜像托管到 docker hub 上(当然我们也可以假设,或者是用别人假设的hub)
国内有很多三方 dockerhub 服务器, 有阿里云,网易蜂巢,有容云,daocloud 等等等等
至于国外那就更多了,如果非要推荐一家,那就是 amazon 了,毕竟云服务他们家宇宙最强,没有之一,没有对手。

3.docker 简单使用

搜索镜像

docker search xxx

下载镜像

我直接用第一个吧
git pull xxx

查看镜像

查看你已经下载好的镜像
docker images

查找镜像

docker search XX

下载镜像

docker pull xx

删除镜像

docker rmi xx

开始

docker run 你的镜像

看日志

docker logs 你的容器

停止一个容器示例

docker stop 你的容器

查看容器状态

docker stats 你的容器

更快更好更强

  • 使用 dockerfile
  • 使用 crontab
  • 使用 supervisr

4.docker-compose 简介

docker-compose 是用来做docker 的多容器控制

docker-compose 是什么

docker-compose 是一个用来把 docker 自动化的东西。
有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。

docker-compose 常用命令

Commands:

 

5.docker-compose 如何配置

先看看我自己写的一个 docker-compose.yml

顺序不是重要的,我们看见wordpress中有个 depends_on: 的属性

depends_on: 依赖

代表wordpress 依赖于

– mariadb

– nginx

两个服务, 所以他们两个会先启动

image: 镜像

就是你的 docker 镜像

environment 环境变量

这个是在好理解不过的了。
不过这和我们程序语言设计层面的还是不一样的,这个是容器层面的环境变量。
如果我们写程序做一些逻辑判断的时候,肯定会使用
比如我们判断现在的编译器,我们会使用
#if __GNUC__ 或者 #if _MSC_VER
相应的,我们的容器里面肯定也有这样的逻辑,我们经常使用环境变量来传值,或者定义一个行为。写过程序的人都懂。

ports 端口映射

映射本机还有镜像的端口。这个没有什么好说的。

volumes 文件映射

有两种格式,
可以对应 docker 操作中的 -v my/path/:/docker/path
还可以使用单方面的 -v /path
这样的话 就相当于 一个匿名映射, 其实还是在本机有对应目录的。

使用docker inspect -f {{.Volumes}} /path 可以看到详细信息

相对这个了解更多的 深入理解Docker Volume

docker-compose 需要注意的

我根据我自己的体验,给出几点需要注意的

  1. 不要把 docker 当做数据容器来使用,数据一定要用 volumes 放在容器外面
  2. 不要把 docker-compose 文件暴露给别人, 因为上面有你的服务器信息
  3. 多用 docker-compose 的命令去操作, 不要用 docker 手动命令&docker-compose 去同时操作
  4. 写一个脚本类的东西,自动备份docker 映射出来的数据。
  5. 不要把所有服务都放在一个 docker 容器里面

 

«

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *