我正在尝试从秘密中设置我的 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) 我有一个 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 有一段时间了,并且我熟悉 …
遇到使用 -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
我有一个堆栈文件,我试图在其中告诉它使用我提供的两个主机名中的一个。这可能吗?该服务并非以这些变量启动,但是,当删除至少其中一个变量时,它就可以工作。感谢您的帮助!
堆栈文件:
deploy:
placement:
constraints:
- node.hostname == myhost1
- node.hostname == myhost2
Run Code Online (Sandbox Code Playgroud) 第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
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 Swarm模式实现内部负载均衡,据我所知,nginx称为硬负载均衡,zookeeper是一种软负载均衡.
那么内部负载平衡与Docker v1.12一起出现的机制是什么?
它是否嵌入了nginx或类似于zookeeper的类似方法?
我有一个环境,我需要在Docker容器中运行一些外部软件.该软件试图通过特定的IP地址连接到我们的产品 - 比方说192.168.255.2 - 这个地址是固定的,无法更改.此外,主机IP地址也必须设置为特定的IP - 比方说192.168.255.3.
产品支持2个以太网接口:
我需要同时运行多个docker容器,每个容器应连接到一个产品(1对1的关系).
在容器内运行的东西必须认为它们通过使用"第一"网络接口(具有静态IP分配且无法更改的网络接口)与产品连接.
我想要做的就是创建具有相同IP地址的容器,假装容器内的应用程序使用产品的"第一"以太网接口,然后在主机级别我想使用IPTables将所有流量重定向到"第二"接口.
因此,我有一个主要问题:如何使用相同的IP地址创建多个docker容器?
这正是我所需要的。我已经有一个项目正在启动一组特定的Docker映像,并且可以正常运行。
但是我想创建另一个图像,特别是要从头开始构建包含所有依赖项的该项目。因此,问题是,在构建时,要创建docker映像,我们需要从构建容器访问在主机上运行的docker守护进程。
有什么办法吗?
假设我们有以下堆栈文件:
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 ×10
docker-swarm ×10
docker-stack ×2
dockerfile ×1
kubernetes ×1
networking ×1
nfs ×1
nginx ×1
sql-server ×1
volume ×1