文章目录

前言

前言有点长,讲述Docker和DockerCompose用来做什么的和一些使用感受,不看可跳过。

随着我使用Docker越来越频繁,开始逐渐理解一些Docker的作用了。刚接触Docker总是会听说“Docker是Linux上的虚拟机”,然后就会把Docker和Vmware来类比,虽然有些相似,但你用多了就会发现区别:

Docker镜像用起来最大的感受就是,它的读写是不会保存的。Vmware不管你在虚拟机操作了什么,它都会保存,而Docker更多地是一个独立的镜像,可以无限复制到任意安装了Docker的机器上跑,而且对外表现一致——这给服务的部署带来了便利。比如我买的服务器到期了,续费比活动购买新机要贵得多,这时候就需要迁移服务,如果我直接安装到机器上,那迁移服务就很累了,可能会依赖很多组件,你要重新构建环境,这可能包括数据库、Redis集群、Kafka集群……所以我为什么在初期喜欢写脚本,什么一键搭建好LNMP环境之类的脚本。现在这个阶段,只需要你搭建的时候放在Docker里面就好了,迁移只需要复制过来跑,可能需要重新配置下端口,但任何其他的操作都不需要你来做,这就是从脚本搭服务过渡到Docker搭服务的现代部署方式。

这时候我会有个巨大的疑问,Docker不保存读写,那它的数据怎么办呢?Docker有一个配置叫做Volume,通过这个参数的配置你可以将容器中的文件对应到宿主机中,比如你的Redis有日志吧,有AOF或者RDB备份文件吧,这些你都可以通过这个参数配置到宿主机中,容器里面发生的任何变化都会写入宿主机对应的地方。所以从这里看来,Docker更像是一个进程,它只帮你跑程序,你的数据都自己保存在本地。

到这里应该能解开很多疑惑了,Docker好处就在于它帮你把物理机隔开了,你要迁移只需要像文件一样拷贝走就好了(还包括宿主机上的数据),然后在新机器上运行,完全不需要重新搭建现场,简直无敌好用……而且Docker有无数官方镜像,都把环境搭建好了,想换什么系统就换什么系统,你只需要在上面写你自己的东西,然后生成自己的镜像,分分钟部署。

DockerCompose是什么呢?DockerCompose就是多容器部署的神器。假设我们要安装Kafka集群,那就需要部署多个Kafka镜像实例,还需要部署多个Zookeeper镜像实例,ZooKeeper集群还必须在Kafka之前部署好,DockerCompose就是来做这个的。通过编写DockerCompose的配置文件,你可以Volume数据到合适的地方,配置先启动哪个容器,后启动哪个容器,后面的容器依赖前面容器的哪个参数,以及每个容器刚起来的时候执行什么命令,容器之间如何组网通信等等。对比一下制作镜像用的dockerfile,dockerfile是用来制作镜像的,导入哪些包、如何安装、如何创建文件夹等等,它都是在一个系统内操作;而docker-compose.yml配置文件配置的是多个不同镜像(很可能不同的系统)之间的交互。

这时候疑问又来了,为什么不都放到一个镜像去呢?首先,我们要搭集群,集群就是不同物理机,都放到一个镜像上去,一台机器挂了集群就当场去世,集群还有什么用呢;第二,分开得越独立,使用越方便,比如ZooKeeper可能除了管理Kafka,还管理微服务,还管理Redis;第三,使用基础软件版本可能有冲突,比如一个必须用Java8,一个必须用Java10,分开更好。

Debian 8 安装Docker CE

如果只是想体验一下玩一玩,可以参考以前写的文章《Hello Docker》,很容易搭建。这里讲述的是Docker CE的安装方法。Docker从2017年3月1号开始,将Docker分为社区版Docker CE(Docker Community Edition)和企业版Docker EE(Docker Enterprise Edition),这也是目前开源软件的趋势,一个免费的CE快速迭代,一个收费的EE提供额外服务,我们用Docker CE就好。按照官网手册去安装。

1、检查是否能够安装

Debian 8 Jessie 几乎是Docker CE 可以支持的最低版本(好险= =),因为它需要Linux内核3.10+,如果不够就需要自己去升级内核了。

查看Linux内核版本,系统架构必须是X64:

$ uname -r
3.16.0-7-amd64

查看Debian名称:

$ lsb_release -cs
jessie

2、设置apt源

官方源,一定要加:

$ vi /etc/apt/sources.list
# 官方
deb http://http.debian.net/debian jessie-backports main
# dotdeb很好用
deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

辅助源幸福二选一:

# ====== 163 ========
deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
# ================== 清华 ===============
# == https://mirrors.tuna.tsinghua.edu.cn/help/debian/ ==  
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ jessie-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security jessie/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security jessie/updates main contrib non-free

然后更新:

$ sudo apt-get update

3、卸载旧版Docker

$ sudo apt-get remove docker docker.io  docker-engine containerd runc

4、安装基础环境

基础依赖包,安装过程中会有readme文件弹出来,不要慌,回车到最后根据提示q退出即可:

$ sudo apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common

加入Docker官方GPG密钥,提示OK:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

检查密钥有效性:

$ sudo apt-key fingerprint 0EBFCD88
你应该能够找到以下的密钥:
pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22

选择安装仓库,这里选择稳定版+amd64:

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"

5、安装Docker

更新源:

$ sudo apt-get update

如果要安装最新版,只需要:

$ sudo apt-get install docker-ce

如果要选择版本,先列出所有版本,例如列出18.09.0~ce-0~debian:

$ apt-cache madison docker-ce

然后安装指定版本,例如填入docker-ce=18.03.0.ce:

$ sudo apt-get install docker-ce=<VERSION_STRING>

6、运行测试

检查安装版本:

$ docker --version
Docker version 18.06.1-ce, build e68fc7a

跑Hello-world测试一下:

$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

此外还可以通过直接安装deb包去安装Docker,有兴趣可看官网手册。

Debian 8 安装DockerCompose

DockerCompose安装非常简单。

1、安装

【第一种方式】直接下载bin包然后设置

github选择合适的版本,这里选1.22.0

用如下命令获取可执行文件,替换指定版本号即可。(uname -s就是Linux,uname -m就是系统架构x86_64)

$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

赋予执行权限就搞定了

$ sudo chmod +x /usr/local/bin/docker-compose

【第二种方式】当作python应用,用pip下载

一行命令搞定:

$ sudo pip install -U docker-compose

2、检查DockerCompose版本

$ docker-compose --version
docker-compose version 1.22.0, build f46880fe


转载请注明出处http://www.bewindoweb.com/239.html | 三颗豆子
分享许可方式知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
重大发现:转载注明原文网址的同学刚买了彩票就中奖,刚写完代码就跑通,刚转身就遇到了真爱。
你可能还会喜欢
具体问题具体杠