Docker 自修笔记(二)

本博客为JDGan自修Docker的笔记,如有粗鄙之处,还请见谅~

阅读本博客前,请确定掌握了前一篇blog:Docker配置及安装,最好顺便还掌握了分享docker镜像。

  • 服务services
    • 容器行为配置文件
    • 运行群服务
    • 增减容器
    • 关闭群服务

服务(services)

在一个发布的产品里,不同的app被我们称为“服务”(service),前两篇blog里的friendlyhello就是一个服务。在一般的情况下,建议是每一个容器有且仅有运行一个镜像,也就是一个服务,以实现服务之间的影响最小化。

一个实际的应用里,我们可能需要运行很多很多个服务,需要实现多个服务之间的数据传输,资源共享。那么我们就要对这些服务进行管理,而docker平台就可以非常便利的对服务进行管理和维护。

容器行为配置文件

为了实现对容器和服务的管理,docker需要用到docker-compose.yml。[YAML]

这个文件的内容一般如下:

version: "3"
services:
  web:
    image: $username/$repository:$tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

下面解释一下上面文件的描述:

  • 版本号3指的是yaml版本为3。
  • 通过$username/$repository:$tag获取app镜像(执行pull)。
  • 运行5个该app镜像容器作为一个服务名为web,并限制每个镜像的cpu最大使用率10%,内存最大限制50MB。
  • 设置重启策略为:失败后马上重启。
  • 映射端口80到服务web的端口80。
  • 所有web的容器共享端口80,并配置一个名为webnet负载均衡覆盖网络。
  • 使用默认配置定义负载均衡覆盖网络webnet

新建文件docker-compose.yml,并放到项目目录下。

运行群服务

在部署运行群服务之前,首先运行:

$ docker swarm init

然后就可以进行部署:

$ docker stack deploy -c docker-compose.yml getstartedlab

Creating network getstartedlab_webnet
Creating service getstartedlab_web

o(^▽^)o 启动成功! 执行ps命令查看。

$ docker stack ps getstartedlab
ID                  NAME                  IMAGE                NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
muc0g4py7u6g        getstartedlab_web.1   username/test:share   moby                Running             Running 3 seconds ago                       
sil8jzmjqxpt        getstartedlab_web.2   username/test:share   moby                Running             Running 2 seconds ago                       
vryfp1iz6e5a        getstartedlab_web.3   username/test:share   moby                Running             Running 2 seconds ago                       
nb3bnumfosed        getstartedlab_web.4   username/test:share   moby                Running             Running 3 seconds ago                       
khoxuflpcqgb        getstartedlab_web.5   username/test:share   moby                Running             Running 3 seconds ago    

增减容器

docker可以实现动态增减镜像,避免了增删容器时出现服务不可用的情况。修改的方法就是直接修改配置文件docker-compose.yml,修改完 replicas的值后,直接再次运行:

$ docker stack deploy -c docker-compose.yml getstartedlab

docker就会自动更新容器的数量。
例如上面的栗子中修改replicas: 2,再次运行docker stack ps

$ docker stack ps getstartedlab
ID                  NAME                  IMAGE                NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
muc0g4py7u6g        getstartedlab_web.1   username/test:share   moby                Running             Running 13 minutes ago                       
nb3bnumfosed        getstartedlab_web.4   username/test:share   moby                Running             Running 13 minutes ago   

o(^▽^)o 简单快捷,舒适平滑。

关闭群服务

执行docker stack rm getstartedlab直接关闭app。
需要关闭群服务则需要再执行docker swarm leave --force
可以通过docker node ls查看群服务是否还在运行。


你可能感兴趣的:(后端)