标签: docker-compose

如何通过名称而不是IP地址访问docker容器?

有没有办法可以使用名称而不是IP地址访问我的docker容器?

我听说过管道工程,我已经看到了docker的一些dns和主机名类型选项,但我仍然无法将所有内容拼凑在一起.

感谢您的时间.

我不确定这是否有用,但这是我到目前为止所做的:

  • 使用docker-machine和vmwarevsphere驱动程序安装docker container host
  • 用docker-compose启动所有服务
  • 我可以使用IP和端口从网络上的任何其他计算机上获取所有服务

我已经将DNS别名条目添加到我的专用网络DNS服务器,它与docker-machine使用的机器名称相匹配.但是,当计算机启动并连接到网络时,它始终会选择不同的IP地址.

我只是迷失在哪里解决这个问题:

  • 网络DNS服务器
  • docker-machine主机名
  • docker container hostname
  • 可能是所有这些的组合

我可能正在寻找类似这个问题的东西:

如何让docker使用我的网络路由器轻松地将dhcp ip分配给容器而不是管道?

任何大方向都会很棒......再次感谢!

dns hostname docker docker-compose docker-machine

34
推荐指数
3
解决办法
3万
查看次数

使用初始模式构建postgres docker容器

我正在寻找构建代表已存在的公司数据库的dockerfiles.同样,我想创建一个通过恢复psql转储开始的docker文件.

我有我psql_dump.sql.目录.

FROM postgres
ADD . /init_data
run "createdb" "--template=template0" "my_database"
run  "psql" "-d" "my_database"  --command="create role my_admin superuser"
run  "psql" "my_database" "<" "init_data/psql_dump.sql"
Run Code Online (Sandbox Code Playgroud)

我认为这样做会很好.我想避免使用.sh脚本的解决方案.像这个解决方案.

我使用template0,因为psql文档说您需要创建原始数据库中的相同用户,并且需要在还原之前使用template0创建数据库.

但是,它给了我一个错误:

createdb: could not connect to database template1: could not connect to server: No such file or directory
        Is the server running locally and accepting
Run Code Online (Sandbox Code Playgroud)

我也在使用docker compose作为整个应用程序,如果在docker-compose中解决这个问题更好,我会很乐意使用基本的psql镜像并使用docker compose来做到这一点.

postgresql docker dockerfile docker-compose

34
推荐指数
3
解决办法
2万
查看次数

MYSQL_ROOT_PASSWORD 已设置,但在 docker 容器中收到“用户‘root’@‘localhost’的访问被拒绝(使用密码:YES)”

我有一个 docker-compose 文件和一个 Dockerfile。MySQL 已正确安装。我已经设置了MYSQL_ROOT_PASSWORD。但是当尝试访问 mysql db 时,出现错误 - 访问被拒绝。我已阅读本网站的其他主题,但无法获得太多帮助。:(

这是我的 docker-compose 文件:

version: '3'

volumes:
        db_data: {}

services:
    db:
        build:
            context: .
            dockerfile: ./db/Dockerfile
            args:
                - database=iTel
                - password=123
        image: db_image
        volumes:
            - db_data:/var/lib/mysql
        ports:
            - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

和 Dockerfile:

FROM mysql:5.7.15

ARG database
ARG password

RUN echo ${database}
RUN echo ${password}

MAINTAINER me
ENV MYSQL_DATABASE=${database} \
    MYSQL_ROOT_PASSWORD=${password}
ADD ./db/database100.sql /docker-entrypoint-initdb.d
EXPOSE 3306
Run Code Online (Sandbox Code Playgroud)

以下是构建日志:

docker-compose up -d

Building db
Step 1/9 : FROM mysql:5.7.15
5.7.15: Pulling from library/mysql …
Run Code Online (Sandbox Code Playgroud)

mysql docker dockerfile docker-compose

34
推荐指数
2
解决办法
4万
查看次数

Docker-compose环境变量

我正在尝试设置一个postgres容器,并希望设置postgres登录:

POSTGRES_USER: docker
POSTGRES_PASSWORD: docker
Run Code Online (Sandbox Code Playgroud)

所以我像这样创建了docker-compose.yml

web:
  build: .
  ports:
    - "62576:62576"
  links:
   - redis
   - db
db:
  image: postgres
  environment:
    POSTGRES_PASSWORD: docker
    POSTGRES_USER: docker

redis:
   image: redis
Run Code Online (Sandbox Code Playgroud)

我还尝试了环境变量的其他语法,将db部分声明为:

db:
  image: postgres
  environment:
   - POSTGRES_PASSWORD=docker
   - POSTGRES_USER=docker
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用各种连接字符串连接到postgres数据库时,无论出于何种原因,这些选项似乎都不起作用:

postgres://postgres:postgres@db:5432/users
postgres://postgres:docker@db:5432/users
postgres://docker:docker@db:5432/users
Run Code Online (Sandbox Code Playgroud)

他们都给我auth失败,而不是抱怨没有用户数据库.

postgresql docker docker-compose

33
推荐指数
6
解决办法
4万
查看次数

错误:在文件'./docker-compose.yml'中,服务'volumes'必须是映射而不是数组

我的搬运工,compose.yml看起来像下面,我试图按照从泊坞窗注册表文件撰写的文件在这里.当我运行docker-compose时,我得到以下错误.

错误:在文件'./docker-compose.yml'中,服务'volumes'必须是映射而不是数组.

registry:
  restart: always
  image: sudarshan/registry
  ports:
    - 5000:5000
environment:
  REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
  REGISTRY_HTTP_TLS_KEY: /certs/domain.key
  REGISTRY_AUTH: silly
  REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
  REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
  - /usr/certs:/certs
Run Code Online (Sandbox Code Playgroud)

我的码头版本是

Docker版本1.12.1,build 23cf638

docker-compose版本是

docker-compose版本1.7.1,build 0a9ab35

在Ubuntu 16.04上运行

编辑:

也试过了

registry:
  restart: always
  image: sudarshan/registry
  ports:
    - 5000:5000
environment:
  REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
  REGISTRY_HTTP_TLS_KEY: /certs/domain.key
  REGISTRY_AUTH: silly
  REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
  REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
    - /usr/certs:/certs
Run Code Online (Sandbox Code Playgroud)

docker docker-registry docker-compose

33
推荐指数
2
解决办法
5万
查看次数

docker-compose up,down,stop start difference

我无法找到有关这些的更多信息.

我们应该使用docker stop我们开始使用的容器吗?docker start

或者相同docker-compose up

停止和停止有什么区别?

docker-compose

33
推荐指数
4
解决办法
2万
查看次数

来自ubuntu绝对路径的Docker COPY

我的dockerfile中有以下行

COPY /root/url.net/volumes/persistent/url/root /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)

当我尝试使用docker-compose构建图像时,我得到了

服务'前端'无法构建:lstat /root/url.net/volumes/persistent/url/root:没有这样的文件或目录

我可以从任何地方cd到/root/url.net/volumes/persistent/url/root我的机器没问题.

如何在dockerfile中指定文件夹的绝对路径?

docker dockerfile docker-compose

33
推荐指数
2
解决办法
2万
查看次数

docker和packer有何不同?配置图像时我应该选择哪一个?

包装工和码头工人有何不同?提供/维护哪一个更容易/最快?为什么?拥有docker文件的优缺点是什么?

packer docker dockerfile docker-compose

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

使用docker-compose.yml自动删除容器

docker-compose run有一个标志--rm,可以在运行后自动删除容器.我想知道是否有一个与docker-compose.yml等效的配置用于特定服务,因为我在yml中获得的服务之一是一次性构建过程,它应该只输出编译文件并自行消失.

docker docker-compose

33
推荐指数
4
解决办法
2万
查看次数

如何在 Docker Compose 中设置 uid 和 gid?

我可以这样执行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 命令替换,但它不能。

有没有办法做到这一点?

bash shell docker docker-compose

33
推荐指数
2
解决办法
3万
查看次数