我最近在Windows 10机器上安装了Docker Toolbox.
但是,每当我运行时,docker-compose up我收到以下错误消息:
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "compose\cli\main.py", line 65, in main
File "compose\cli\main.py", line 117, in perform_command
File "compose\cli\main.py", line 849, in up
File "compose\project.py", line 372, in up
File "compose\project.py", line 539, in warn_for_swarm_mode
File "site-packages\docker\api\daemon.py", line 33, in info
File "site-packages\docker\utils\decorators.py", line 47, in inner
File "site-packages\docker\client.py", line 139, in _get
File "site-packages\requests\sessions.py", line 488, in get
File "site-packages\requests\sessions.py", line 475, in request
File "site-packages\requests\sessions.py", …Run Code Online (Sandbox Code Playgroud) 我们什么时候使用docker service create命令,什么时候使用docker run命令?
我有一个docker mysql映像正在运行,以下是docker-compose.yml文件的样子:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: yes
ports:
- "3306:3306"
Run Code Online (Sandbox Code Playgroud)
这很好用.
我的问题是:如何从主机(我的macbook)上的命令行mysql客户端连接到该容器上运行的MySQL实例?
澄清:
docker命令来实现这一点.相反,我想mysql直接从终端使用客户端(不通过docker容器进行隧道传输).我没有在本地运行MySQL,因此端口3306应该是开放的并且可以使用.
我用来启动容器的命令是: docker-compose run
我docker-compose用来运行一个测试环境,它包含大约5个不同的容器.容器间链接和共享卷(卷 - 来)非常有效.我还将一些端口暴露给主机,这很好用.
我缺少的是一种将我的一些真实服务器链接到这个环境的方法,没有硬编码的IP地址.使用docker run,您可以使用--add-host在/etc/hosts文件中添加另一行.有没有办法用docker-compose做类似的事情?
我看到我不是第一个提出这个问题的人,但对此没有明确答案:
如何在Python开发中使用pdb和docker-composer?
当你问谷歌叔叔django docker你得到了很棒的docker-composer示例和教程,我有一个环境工作 - 我可以运行docker-compose up,我有一个整洁的开发人员环境,但PDB不工作(这是非常悲伤).
我可以运行定居docker-compose run my-awesome-app python app.py 0.0.0.0:8000,但后来我可以通过访问我的应用程序http://127.0.0.1:8000从主机(我可以带docker-compose up),似乎每次使用时间run新容器等制成的:dir_app_13和dir_db_4我不欲望.
善意的人请帮助我.
PS
我正在使用pdb ++作为该示例,并使用此django示例中的基本docker-compose.yml .我也进行了实验,但似乎没有什么可以帮助我.我正在使用docker -composer 1.3.0rc3,因为它有Dockerfile指向支持.
我正在开发一个服务,并使用docker compose来旋转postgres,redis,elasticsearch等服务.我有一个基于RubyOnRails的Web应用程序,可以从所有这些服务中进行写入和读取.
这是我的 docker-compose.yml
version: '2'
services:
redis:
image: redis:2.8
networks:
- frontapp
elasticsearch:
image: elasticsearch:2.2
networks:
- frontapp
postgres:
image: postgres:9.5
environment:
POSTGRES_USER: elephant
POSTGRES_PASSWORD: smarty_pants
POSTGRES_DB: elephant
volumes:
- /var/lib/postgresql/data
networks:
- frontapp
networks:
frontapp:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
我可以ping这个网络中的容器
$ docker-compose run redis /bin/bash
root@777501e06c03:/data# ping postgres
PING postgres (172.20.0.2): 56 data bytes
64 bytes from 172.20.0.2: icmp_seq=0 ttl=64 time=0.346 ms
64 bytes from 172.20.0.2: icmp_seq=1 ttl=64 time=0.047 ms
...
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我想在我的主机上的rails应用程序上运行ruby但是能够使用url访问postgres实例,就像postgresql://username:password@postgres/database目前那样是不可能的
$ ping postgres
ping: unknown host …Run Code Online (Sandbox Code Playgroud) 我有一个遗留项目正在运行docker-compose。一年前,它是从以下配置开始的。
现在它抛出一个错误:
exec /usr/local/bin/docker-entrypoint.sh: exec format error
Run Code Online (Sandbox Code Playgroud)
我想使用 CMD 配置运行容器。我在网上发现#!/bin/bash需要添加以避免这个错误,我将其添加到Dockerfile中。
没有自定义docker-entrypoint.sh定义。据我了解,需要有一个入口点或一个命令。
CMD 的主要目的是为执行容器提供默认值。这些默认值可以包含可执行文件,也可以省略可执行文件,在这种情况下,您还必须指定 ENTRYPOINT 指令。
#!/bin/bash
#nodejs
FROM node:11.15
ENV NODE_VERSION 11.15
#app directory
WORKDIR ./
#mongodb tools
RUN wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | apt-key add -
RUN echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | tee /etc/apt/sources.list.d/mongodb-org-5.0.list
RUN apt-get update
RUN apt-get install -y mongodb
RUN apt-get install nano
#nodejs packages
# A wildcard is used to ensure both package.json AND package-lock.json are copied …Run Code Online (Sandbox Code Playgroud) Kubernetes Pods和Docker Compose脚本(以下称为"Compositions")的结果似乎都会产生虚拟计算机集群.
群集中的计算机都可以配置为相互通信,因此您可以编写一个镜像整个端到端生产配置的脚本.单个脚本允许您在任何容器主机上部署该群集.
鉴于两个系统之间的相似性,我很难理解两者之间的差异.
为什么我会选择一个而不是另一个?它们是相互排斥的系统还是我可以在kubernetes中运行组合.
在设计集装箱系统时是否需要考虑任何关键因素?如果我设计的架构网站今天,并会想尝试建立一个基于容器的系统.我应该设计的最重要的事情是什么?(与在单一机器系统上构建相比)
我有一个使用Docker compose启动的Web应用程序,我想要禁用所有日志记录(或者至少将其打印到syslog而不是文件).
当我的Web应用程序工作时,它可以在启动时快速生成11GB的日志文件,因此这会非常快地占用我的磁盘空间.
我知道普通的docker有运行命令的日志选项,但在我使用的Docker Compose中
Docker-组成
在应用程序文件夹中启动我的应用程序.我如何在我的情况下启用此功能?我没有在网上找到具体案例.
我发现自己处于这种情况,我想暂时禁用docker-compose文件中的服务.
当然我可以发表评论,但有没有选择只说" enabled: false"?
docker ×10
docker-compose ×10
python ×2
containers ×1
dockerfile ×1
hosts ×1
kubernetes ×1
macos ×1
mysql ×1
pdb ×1