天天看點

36. docker swarm docker secret 的使用和管理

1.secret management 的作用

  用來存儲 其他人不想看到 的資料

2.secret management 

  存在 swarm manager 節點 raft database 裡。

  secret 可以 assign 給一個 service (or container), 這個 sevice 就能看到這個secret了

  在 container 内部 secret 看起來像檔案, 但實際是在記憶體中

3. secret 的 操作

  建立

    從檔案内建立

      vim password

        #password  内容

          123456a

    建立 secret

      docker secret create my-pass password

36. docker swarm docker secret 的使用和管理

    删除 password 檔案

      rm -rf ./password

    從指令行輸入建立

      echo '123456a' | docker secret create my-pass2 -

36. docker swarm docker secret 的使用和管理

  檢視 

    docker secret ls

  删除

    docker secret rm my-pass2

4. secret 的使用

  建立 service 的時候指定 secret

    docker service create --name client --secret my-pass busybox sh -c "while true; do sleep 3600; done"

  檢視 service 伺服器 位置

    docker service ps client

  在 指定伺服器 檢視 container id

    docker ps

  進入容器

    docker exec -it [container_id] sh

  檢視指定的密碼

    cat /run/secrets/my-pass

5. mysql 案例

  建立 mysql service 指定檔案根目錄 密碼檔案為 /run/secrets/my-pass

    docker service create --name db --secret my-pass -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/my-pass mysql:5.7.27

  檢視所在伺服器位置

    docker service ps db

  在 指定伺服器 檢視容器id 并進入

    docker ps

    docker exec -it [container_id] sh

  檢視docker secret 密碼  并 進入mysql

      cat /run/secrets/my-pass

      mysql -uroot -p[my-pass]   

    或簡寫為:

      mysql -uroot -p$(cat /run/secrets/my-pass)

6. 在 docker stack 中的使用

  編輯 docker-compose.yml

   在各個 service 下添加

    secrets 參數 和 environment 參數

    eg:

      services:

         web:

        image: wordpress

        secrets:

           - my-pass

        environment:

           WORDPRESS_DB_HOST: mysql

         WORDPRESS_DB_PASSWORD_FILE: /run/secrets/my-pass

        ...

  eg: docker-compose.yml

version: '3.1'

services:

  db:

    image: mysql:5.7.27

    volumes:

      - db_data:/var/lib/mysql

    environment:

      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password

      MYSQL_DATABASE: wordpress

      MYSQL_USER: wordpress

      MYSQL_PASSWORD_FILE: /run/secrets/db_password

    secrets:

      - db_root_password

      - db_password

  wordpress:

    depends_on:

      - db

    image: wordpress:latest

    ports:

      - "8888:80"

    environment:

      WORDPRESS_DB_HOST: db:3306

      WORDPRESS_DB_USER: wordpress

      WORDPRESS_DB_PASSWORD_FILE: /run/secrets/db_password

    secrets:

      - db_password

secrets:

  db_password:

    file: password.txt

  db_root_password:

    file: password.txt

volumes:

  db_data:

6. 根據上述的 docker-compose.yml 建立 service

  docker stack deploy wordpress -c=docker-compose.yml

  檢視 mysql 所在的伺服器 

  docker service ls

  docker service [container_name | container id]

  檢視所在伺服器的 容器 id

  docker ps

  進入 mysql 容器

  docker exec -it [container_id] /bin/bash

  mysql -uroot -p[your setting password]

  能登陸即可

  或能通路 192.168.205.10 也行

轉載于:https://www.cnblogs.com/zonehoo/p/11419823.html