我可以这样执行docker run命令......
docker run --rm --user $(id -u):$(id -g) -e MYDATA=/some/path/to/data -e USER=$USER -p 8883-8887:8883-8887 ...
Run Code Online (Sandbox Code Playgroud)
但是,在 Docker Compose 中,当我写出以下内容时......
version: '3.7'
services:
container_name: some-server
image: some:img
user: $(id -u):$(id -g)
...
Run Code Online (Sandbox Code Playgroud)
... 这是行不通的。
我知道我要求docker-compose up执行子 shell 命令替换,但它不能。
有没有办法做到这一点?
我正在使用 docker compose 在 Ubuntu 23.04 VM 上创建 postgresql 数据库和节点服务器。过去几周我每次跑步时都运行良好docker-compose up --build -d。但现在我有以下错误:
我尝试降级我的 docker 版本,但同样的错误仍然存在。
以下是 docker 版本详细信息:
有人知道发生了什么吗?
我正在学习码头工人.我看到这两个词让我感到困惑.例如,这里是一个定义了两个服务redis和的docker-compose web-app.
services:
redis:
container_name: redis
image: redis:latest
ports:
- "6379:6379"
networks:
- lognet
app:
container_name: web-app
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
volumes:
- ".:/webapp"
links:
- redis
networks:
- lognet
networks:
lognet:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
此docker-compose文件定义名为lognet的网桥,所有服务都将连接到此网络.据我了解,此操作使这些服务可以看到其他人.那么为什么app服务仍然需要在上面的情况下链接到redis服务.
谢谢
如果我有一个docker-compose文件,例如:
version: "3"
services:
postgres:
image: postgres:9.4
volumes:
- db-data:/var/lib/db
volumes:
db-data:
Run Code Online (Sandbox Code Playgroud)
...然后docker-compose up创建一个命名的卷db-data.有没有办法通过docker-compose?删除此卷?如果它是一个匿名卷,那么docker-compose rm -v postgres就可以了.但就目前而言,我不知道如何在db-data不恢复docker命令的情况下移除卷.感觉这应该可以在docker-composeCLI中实现.我错过了什么吗?
您好,我在运行 docker-compose build up 后收到此错误
但我收到此错误 postgres_1 | 错误:数据库未初始化且未指定超级用户密码。
下面是我的 docker-compose.yml 文件
版本:'3.6'
services:
smart-brain-api:
container_name: backend
build: ./
command: npm start
working_dir: /usr/src/smart-brain-api
ports:
- "3000:3000"
volumes:
- ./:/usr/src/smart-brain-api
#PostGres Database
postgres:
image: postgres
ports:
- "5432:5432"
Run Code Online (Sandbox Code Playgroud) 问题:无法从 docker-compose 创建主题。在运行测试系统之前,我需要创建 kafka 主题。计划将其用作管道的一部分,因此使用 UI 不是一个选项。
\n注意:kafka 需要大约 15 秒才能准备好,因此我需要在添加主题之前休眠 15 秒。
\n可能的解决方案:
\n电流:
\n当前 docker-compose.yml:
\nversion: '2'\nservices:\nzookeeper:\nimage: docker.io/confluentinc/cp-zookeeper:5.4.1\nhostname: zookeeper\ncontainer_name: zookeeper\nports:\n- "2181:2181"\nenvironment:\nZOOKEEPER_CLIENT_PORT: 2181\nZOOKEEPER_TICK_TIME: 2000\n\nKafka1:\nimage: docker.io/confluentinc/cp-enterprise-kafka:5.4.1\nhostname: Kafka1\ncontainer_name: Kafka1\ndepends_on:\n- zookeeper\nports:\n- "9092:9092"\n- "9101:9101"\nenvironment:\nKAFKA_BROKER_ID: 1\nKAFKA_ZOOKEEPER_CONNECT: …Run Code Online (Sandbox Code Playgroud) 我有一个地方一个Dockerfile ARG在使用CMD指令:
ARG MASTER_NAME
CMD spark-submit --deploy-mode client --master ${MASTER_URL}
Run Code Online (Sandbox Code Playgroud)
arg通过docker-compose传递:
spark:
build:
context: spark
args:
- MASTER_URL=spark://master:7077
Run Code Online (Sandbox Code Playgroud)
但是,ARG似乎没有得到扩展CMD.在我之后docker-compose up.
以下是检查显示的内容:
docker inspect -f "{{.Name}} {{.Config.Cmd}}" $(docker ps -a -q)
/spark {[/bin/sh -c spark-submit --deploy-mode client --master ${MASTER_URL}]}
Run Code Online (Sandbox Code Playgroud) 我有Docker版本1.10与嵌入式DNS服务.
我在docker-compose文件中创建了两个服务容器.它们可以通过主机名和IP相互访问,但是当我想从主机到达其中一个时,它不起作用,它只适用于IP但不适用于主机名.
那么,是否可以通过Docker 1.10中的主机名从主机访问docker容器,好吗?
更新:
泊坞窗,compose.yml
version: '2'
services:
service_a:
image: nginx
container_name: docker_a
ports:
- 8080:80
service_b:
image: nginx
container_name: docker_b
ports:
- 8081:80
Run Code Online (Sandbox Code Playgroud)
然后我按命令启动它: docker-compose up --force-recreate
当我跑:
docker exec -i -t docker_a ping -c4 docker_b - 有用docker exec -i -t docker_b ping -c4 docker_a - 有用ping 172.19.0.2- 它的工作原理(172.19.0.2是docker_b的)ping docker_a- 失败了结果docker network inspect test_default是
[
{
"Name": "test_default",
"Id": "f6436ef4a2cd4c09ffdee82b0d0b47f96dd5aee3e1bde068376dd26f81e79712",
"Scope": "local",
"Driver": "bridge",
"IPAM": { …Run Code Online (Sandbox Code Playgroud) 嗨在 docker compose 我有:
environment:
- AWS_ACCESS_KEY_ID=$(aws --profile default configure get aws_access_key_id)
- AWS_SECRET_ACCESS_KEY=$(aws --profile default configure get aws_secret_access_key)
Run Code Online (Sandbox Code Playgroud)
但它返回给我一个类似主题的错误。任何人都知道如何传递这些变量?
谢谢
我使用的Fedora release 33 (Thirty Three)
Docker 版本是Docker version 20.10.0, build 7287ab3
首先我跑了docker system prune,从那以后 docker daemon 无法启动。
我运行systemctl start docker命令并得到
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
Run Code Online (Sandbox Code Playgroud)
然后systemctl status docker.service我得到了
? docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor pr>
Active: failed (Result: exit-code) since Wed 2020-12-09 11:10:58 IST; 15s >
TriggeredBy: ? docker.socket
Docs: …Run Code Online (Sandbox Code Playgroud) docker ×10
docker-compose ×10
apache-kafka ×1
bash ×1
containers ×1
fedora ×1
postgresql ×1
shell ×1
volumes ×1