美文网首页
Docker Secret和Service更新

Docker Secret和Service更新

作者: CaiGuangyin | 来源:发表于2019-04-18 18:50 被阅读0次

Docker Secret

使用场景:数据库密码不想让人看到

先来查看一下docker secret使用帮助:

[root@openstack-load1 ~]# docker secret --help
Usage:  docker secret COMMAND
Manage Docker secrets
Options:

Commands:
  create      从文件或标准输出的内容创建一个secret(密码)
  inspect     显示一个或多个secret的详细信息
  ls          列出所有的secret
  rm          删除一个或多个secret
  
Run 'docker secret COMMAND --help' for more information on a command.

创建secret

# 用文件的内容创建一个名为my-pw的密码
docker secret create my-pw ./passwd.txt

# 用标准输出的内容创建一个名为my-pw-1的密码
echo "admin789" | docker secret create my-pw-1 -

使用secret

命令行用--secret <secret_name>

docker service create -d --secret my-pw --name test busybox sh -c "while true;do sleep 3600;done

**注意: **--secret my-pw会在容器内部生成一个以my-pw为文件名的文件,文件存放路径:/run/secrets/my-pw,而文件的内容就是创建secret时的明文字符串。

下面用一个创建mysql service的例子展示如何使用secret:

docker service create -d --name mysql --secret my-pw -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/my-pw mysql

通过环境变量MYSQL_ROOT_PASSWORD_FILE去指定容器内部存放密码的文件。

在docker-compose.yml中使用serect

version: '3.6'

services: 

  web:
    image: wordpress
    ports:
      - 9000:80
    networks:
      - my-net
    volumes:
      - my-data
    secrets:
      - my-passwd
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD_FILE: /run/secrets/my-passwd
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - mysql
    deploy:
      endpoint_mode: vip
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 2
        delay: 3s

  mysql:
    image: mysql
    networks:
      - my-net
    secrets:
      - my-passwd
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/my-passwd
      MYSQL_DATABASE: wordpress
    volumes:
      - my-data:/var/lib/mysql
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == manager

volumes:
  my-data:

networks:
  my-net:
    driver: overlay

secrets:
  my-passwd:
    file: ./password.txt

Service更新

需求场景:确保线上业务在不中断的情况下对service进行更新。

更新service的镜像

先创建一个service

docker service create --name web -p 8080:5000 --network demo cgy/flask-demo:1.0

镜像为1.0版本。接下来将web service的镜像更新至2.0

需要先对service进行横向扩展,确保service在更新时,不宕机。

docker service scale web=2

再来更新web service的镜像

docker service update --image gy/flask-demo:2.0 web

更新service的端口

docker service update --publish-rm 8080:5000 --publish-add 8088:5000 web

更多可更新的选项可以通过docker service update --help查看,

注意:利用docker-compose.yml文件通过docker stack deploy -c docker-compose.yml wordpress部署的service,需要更新时,可以直接在docker-compose.yml文件中修改需要更新的值。然后再重新docker stack deploy -c docker-compose.yml wordpress即可更新。

相关文章

网友评论

      本文标题:Docker Secret和Service更新

      本文链接:https://www.haomeiwen.com/subject/bcxxgqtx.html