标签: docker-swarm

Docker:从秘密中设置 MSSQL 密码

我正在尝试从秘密中设置我的 MSSQL 密码,但我不知道为什么我似乎没有正确地将我的秘密设置为密码。

这是我的 YAML 文件:

version: '3.7'

services:
  notguiridb:
    image: mcr.microsoft.com/mssql/server:2019-latest
    environment:
      ACCEPT_EULA: "Y"
      MSSQL_SA_PASSWORD_FILE: /run/secrets/mysecret4
    secrets:
      - source: mysecret4
        target: mysecret4

secrets:
  mysecret4:
    external: true
Run Code Online (Sandbox Code Playgroud)

然后我检查了这个秘密是否是我所期望的,但即使这样做它也说登录失败,所以我怀疑环境变量MSSQL_SA_PASSWORD_FILE并没有真正起作用。

$ docker exec -it 5fd bash
$ mssql@5fd8471a22c4:/$ cat /run/secrets/mysecret4
"Pa55W0rd!1234*"

$ docker exec -it 5fd /opt/mssql-tools/bin/sqlcmd -U sa -P Pa55w0rd!1234*
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user 'sa'..
$ docker exec -it 5fd /opt/mssql-tools/bin/sqlcmd -U sa -P "Pa55w0rd!1234*"
Sqlcmd: Error: Microsoft ODBC …
Run Code Online (Sandbox Code Playgroud)

sql-server docker docker-swarm docker-secrets

2
推荐指数
1
解决办法
4137
查看次数

如何将 docker 镜像中的数据与 kubernetes 卷 (NFS) 合并

我有一个 docker 映像,其中包含控制器 /opt/myfiles 中的数据,可以这么说: /opt/myfiles/file1.txt /opt/myfiles/file2.dat

我想将该映像部署到 kubernetes 并将 NFS 卷挂载到该目录,以便在删除 pod 时保留对这些文件的更改。

当我在 docker swarm 中执行此操作时,我只需将一个空的 NFS 卷安装到 /opt/myfiles/ ,然后启动我的 docker swarm 服务,该卷将填充映像中的文件,然后我可以使用我的服务,当我删除服务后,我的 NFS 服务器上仍然有文件,因此下次启动服务时,我会恢复之前的状态。

在 kubernetes 中,当我将空 NFS 卷挂载到 /opt/myfiles/ 时,pod 会启动,并且 /opt/myfiles/ 会被空目录覆盖,因此我的 pod 不再看到映像中的文件。

我的卷挂载和卷定义:

[...]
volumeMounts:
  - name: myvol
    mountPath: /opt/myfiles
[...]
volumes:
  - name: myvol
    nfs:  
      server: nfs-server.mydomain.org
      path: /srv/shares/myfiles
Run Code Online (Sandbox Code Playgroud)

我读了一些关于类似问题的帖子(例如K8s 不会在 Persistent Volume 上挂载文件),并尝试了一些使用subPath和 的内容subPathExpr,如文档中所示(https://kubernetes.io/docs/concepts/storage/volumes/#using- subpath),但我的任何更改都没有执行 docker swarm 默认情况下执行的操作。

kubernetes 的行为对我来说似乎很奇怪,因为我已经使用 docker swarm 有一段时间了,并且我熟悉 …

nfs volume docker kubernetes docker-swarm

2
推荐指数
1
解决办法
1158
查看次数

什么是 docker run -w 标志?

遇到使用 -w 标志的 docker run 命令。

docker run -v $(pwd):/project \
         -w /project \
         -p 8081:8081 \
         gcr.io/base-project/myoh:v1
Run Code Online (Sandbox Code Playgroud)

你知道这面旗帜有什么-w用吗?

docker dockerfile docker-compose docker-swarm docker-machine

2
推荐指数
1
解决办法
5635
查看次数

我可以在 docker 堆栈文件的约束中使用两个主机名吗?

我有一个堆栈文件,我试图在其中告诉它使用我提供的两个主机名中的一个。这可能吗?该服务并非以这些变量启动,但是,当删除至少其中一个变量时,它就可以工作。感谢您的帮助!

堆栈文件:

deploy:
    placement:
        constraints:
            - node.hostname == myhost1
            - node.hostname == myhost2
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm docker-stack

2
推荐指数
1
解决办法
5387
查看次数

码头工人群。无法对 docker 堆栈的容器运行 exec,因为“docker 容器列表”找不到该容器

第1节

我正在尝试在堆栈或服务中的容器之一上执行“exec”。我已按照此处提供的答案在 docker swarm 服务中执行命令以及此处的官方 Docker 文档https://docs.docker.com/engine/swarm/secrets/但似乎是“docker 容器列表”及其变体(“docker ps”)似乎没有找到“docker服务列表”中列出的任何容器。

请参阅https://docs.docker.com/engine/swarm/secrets/中的以下示例,该示例旨在在服务的容器上使用“exec”。

1)

printf "This is a secret" | docker secret create my_secret_data -
Run Code Online (Sandbox Code Playgroud)
docker service  create --name redis --secret my_secret_data redis:alpine
Run Code Online (Sandbox Code Playgroud)
docker service ps redis
Run Code Online (Sandbox Code Playgroud)

产量ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 75olesuh9n4h redis.1 redis:alpine virt-05 Running Running 16 minutes ago

  1. 下面的两个命令返回“redis”的零记录
docker ps --filter name=redis -q
docker container list

Run Code Online (Sandbox Code Playgroud)

下面的两个命令不会返回“redis”的记录,因此下面的命令肯定不起作用。

docker container exec $(docker ps --filter name=redis -q) ls -l /run/secrets …
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm

2
推荐指数
1
解决办法
1438
查看次数

在 Docker Swarm 中放置一个单独的服务发现并集成到集群机器上有什么区别

我在理解分离服务发现服务器的需求时遇到问题,而我们可以通过任何协议在从节点启动时将从节点注册到主节点。托管另一项服务对我来说似乎是多余的。

service-discovery docker docker-swarm

1
推荐指数
1
解决办法
230
查看次数

内部负载平衡与docker swarm v1.12的机制是什么?

Docker Swarm模式实现内部负载均衡,据我所知,nginx称为硬负载均衡,zookeeper是一种软负载均衡.

那么内部负载平衡与Docker v1.12一起出现的机制是什么?

它是否嵌入了nginx或类似于zookeeper的类似方法?

nginx cluster-computing docker docker-swarm

1
推荐指数
1
解决办法
540
查看次数

如何使用相同的内部IP地址创建docker容器?

我有一个环境,我需要在Docker容器中运行一些外部软件.该软件试图通过特定的IP地址连接到我们的产品 - 比方说192.168.255.2 - 这个地址是固定的,无法更改.此外,主机IP地址也必须设置为特定的IP - 比方说192.168.255.3.

产品支持2个以太网接口:

  • 他们中的第一个对IP寻址有严格的限制 - 我们称之为"第一"
  • 第二个没有这样的限制并提供类似的功能 - 对于这个例子,我们假设这个接口的IP地址设置为10.1.1.2/24 - 让我们称之为"秒"

我需要同时运行多个docker容器,每个容器应连接到一个产品(1对1的关系).

在容器内运行的东西必须认为它们通过使用"第一"网络接口(具有静态IP分配且无法更改的网络接口)与产品连接.

我想要做的就是创建具有相同IP地址的容器,假装容器内的应用程序使用产品的"第一"以太网接口,然后在主机级别我想使用IPTables将所有流量重定向到"第二"接口.

因此,我有一个主要问题:如何使用相同的IP地址创建多个docker容器?

networking docker docker-swarm

1
推荐指数
1
解决办法
3364
查看次数

如何从容器中调用主机的docker守护进程?

这正是我所需要的。我已经有一个项目正在启动一组特定的Docker映像,并且可以正常运行。

但是我想创建另一个图像,特别是要从头开始构建包含所有依赖项的该项目。因此,问题是,在构建时,要创建docker映像,我们需要从构建容器访问在主机上运行的docker守护进程。

有什么办法吗?

docker docker-swarm docker-container

1
推荐指数
1
解决办法
924
查看次数

docker swarm列出服务的依赖关系

假设我们有以下堆栈文件:

version: "3"
services:
  ubuntu:
    image: ubuntu
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    entrypoint:
      - tail
      - -f
      - /dev/null
    logging:
      driver: "json-file"
    ports:
      - "80:80"
    networks:
      - webnet
  web:
    image: httpd
    ports:
      - "8080:8080"
    hostname: "apache"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
      resources:
        limits:
          memory: 32M
        reservations:
          memory: 16M
    depends_on:
      - "ubuntu"
    networks:
      - webnet
networks:
  webnet:
Run Code Online (Sandbox Code Playgroud)

当我运行时docker service inspect mystack_web,生成的输出不会显示对depends_on条目的任何引用。

这样可以吗?以及如何打印给定docker服务的依赖关系?

docker docker-swarm docker-stack

1
推荐指数
1
解决办法
1513
查看次数