标签: boot2docker

Docker 不释放端口

(在 Mac 上,Boot2Docker,docker v 1.1.1)

在分配主机端口时,Docker 不会释放它使用的端口,这是一个问题。例如,我使用相同的映像启动 3 个容器。我的docker ps返回结果如下:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
9875e2d28c3b        49ffc1050348        /sbin/my_init       19 hours ago        Up 1 seconds        0.0.0.0:49169->22/tcp, 0.0.0.0:49170->3306/tcp   boring_goldstine
f0a40c3bb4a1        49ffc1050348        /sbin/my_init       19 hours ago        Up 6 seconds        0.0.0.0:49167->22/tcp, 0.0.0.0:49168->3306/tcp   sleepy_wright
0fb913db3528        49ffc1050348        /sbin/my_init       19 hours ago        Up About a minute   0.0.0.0:49165->22/tcp, 0.0.0.0:49166->3306/tcp   agitated_jones
Run Code Online (Sandbox Code Playgroud)

滚动到端口,您将看到 49170 是最后分配的端口。

如果我停止并 rm 这些容器并运行另一个容器,Docker 会使用最低的可用端口。然而现在这个数字还在不断增加:

docker run -P -d 49ffc1050348

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
82fdf0e54846        49ffc1050348        /sbin/my_init …
Run Code Online (Sandbox Code Playgroud)

docker boot2docker

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

如何更改正在运行的 docker 容器的 dns

默认的dns 8.8.8.8和8.8.4.4被我国的防火墙阻止,我不想停止容器,因为我在其中安装了很多软件。

docker boot2docker

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

Docker 容器内构建的 Golang 二进制文件,还是 Mach-O 可执行格式?

我真的需要一些帮助。我想做的是使用标准 golang:1.5 Docker 映像构建 Go 二进制文件,然后将该二进制文件从容器中复制到基于 busybox 的新的最小 Docker 容器中。使用 Docker 安装的卷将二进制文件从容器中拉出。到目前为止,我遇到了两个问题。

  1. 运行命令时,主机上生成的二进制文件(随后复制到第二个容器中)似乎仍然是 Mach-O 64 位可执行文件file。Docker 容器是否以某种方式从主机获取 GOOS 和 GOARCH?

  2. 当手动运行容器并bash构建 Go 二进制文件时,它现在说它是 ELF 可执行文件,但它是动态链接的。我认为默认情况下构建静态链接的二进制文件?我的这个假设可能是错误的。

预先感谢您可以提供的任何帮助。

编辑:这是我正在使用的命令。希望这能让它更清楚一些

## golang:1.5 base image with WORKDIR set to $GOPATH/src/myproject the source
## for the project was added in when creating the 'mybuild_img' docker image
## GOPATH is set automatically in the golang image.
docker run -i -v `pwd`/jenkins/out:$GOPATH/src/myproject/jenkins/out mybuild_img:latest bash -c 'go build && cp myproject ./jenkins/out'
Run Code Online (Sandbox Code Playgroud)

容器运行完毕后,我在 ./jenkins/out/ …

macos go docker boot2docker docker-machine

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

在 OS X 上运行 docker 容器时如何将主机 IP 作为环境变量传递

我有一个 docker 映像,当我运行它时,我需要将主机 IP 地址作为环境变量传递。所以我需要这样的东西:

docker run --rm -it -e HOST_IP=<?????> -p 8000:8000 image
Run Code Online (Sandbox Code Playgroud)

我在 OS X 上使用 Docker。基本上这个镜像正在运行一个我想要连接到本地 PostgreSQL 服务器的服务。该服务从环境变量中读取服务器主机 IP。

如何获取宿主机的IP供docker使用?

如果我使用本地计算机地址 192.168.99.1 (来自ifconfig),psycopg2 会抱怨:

psycopg2.OperationalError: FATAL:  no pg_hba.conf entry for host "192.168.99.100", user "postgres", database "database", SSL off
Run Code Online (Sandbox Code Playgroud)

错误中提到的地址192.168.99.100是我的docker-machine的IP。

我怎样才能获得正确的IP?

postgresql macos docker boot2docker docker-machine

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

码头工人。无此文件或目录

我有一些文件,我想将它们移动到 docker 容器。但最后docker找不到文件..

包含本地机器上文件的文件夹位于/home/katalonne/flask4

文件结构(如果重要):

如果重要的话,文件结构Dockerfile

#
# First Flask App Dockerfile
#
#

# Pull base image.
FROM centos:7.0.1406

# Build commands
RUN yum install -y python-setuptools mysql-connector mysql-devel gcc python-devel
RUN easy_install pip
RUN mkdir /opt/flask4
WORKDIR /opt/flask4
ADD requirements.txt /opt/flask4
RUN pip install -r requirements.txt
ADD . /opt/flask4

# Define deafult command.
CMD ["python","hello.py"]

# Expose ports.
EXPOSE 5000
Run Code Online (Sandbox Code Playgroud)

所以我用这个命令构建了图像:

docker build -t flask4 .
Run Code Online (Sandbox Code Playgroud)

我通过以下方式运行容器:

docker run -d -p 5000:5000 -v /home/Katalonne/flask4:/opt/flask4 …
Run Code Online (Sandbox Code Playgroud)

python linux command-line-interface docker boot2docker

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

Vagrant ssh 到 Docker 容器

我在 Vagrant 盒子 boot2docker 中将 Drupal 作为 Docker 容器运行(在 Windows 8.1 上):

Vagrantfile(我的 Docker 容器)

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.provider "docker" do |docker|
    docker.vagrant_vagrantfile = "host/Vagrantfile"
    docker.image = "drupal"
    docker.ports = ['80:80']
    docker.name = 'drupal-container'
  end
  config.vm.synced_folder ".", "/vagrant", type: "smb", disabled: true
end
Run Code Online (Sandbox Code Playgroud)

主机/Vagrantfile(主机)

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.hostname = "docker-host"
  config.vm.box = "hashicorp/boot2docker"
  config.vm.network "forwarded_port", guest: 80, host: …
Run Code Online (Sandbox Code Playgroud)

ssh drupal vagrant docker boot2docker

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

如何为 Mac/Windows 的 Docker 禁用透明大页面(本机)

TokuDB 引擎和 Redis 需要禁用透明大页面。使用 docker-toolbox,我可以通过 docker-machine ssh 进入主机并禁用它。我不再有权访问主机操作系统,那么如何禁用它?

docker boot2docker docker-compose

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

Laradock(docker)不断抛出http错误500

无论我尝试什么,当我访问我的 docker-machine ip 时,我都会收到 HTTP 错误代码 500。

我通过 Docker 工具箱运行 laradock(操作系统:Windows 10)并运行默认虚拟机。我已经按照视频中的说明设置了 laradock。

我已成功将所需的文件夹安装到虚拟机中,并根据虚拟机中代码的位置更改了 docker-compose.yml:

这是我的 docker-compose.yml 文件:

版本:'2'

服务:

Nginx 服务器容器

nginx:
    build: ./nginx
    volumes_from:
        - volumes_source
    volumes:
        - ./logs/nginx/:/var/log/nginx
    ports:
        - "80:80"
        - "443:443"
    links:
        - php-fpm
Run Code Online (Sandbox Code Playgroud)

PHP-FPM容器

php-fpm:
    build:
        context: ./php-fpm
        dockerfile: Dockerfile-70
    volumes_from:
        - volumes_source
    expose:
        - "9000"
    links:
        - workspace
Run Code Online (Sandbox Code Playgroud)

MySQL容器

mysql:
    build: ./mysql
    volumes_from:
        - volumes_data
    ports:
        - "3306:3306"
    environment:
        MYSQL_DATABASE: homestead
        MYSQL_USER: homestead
        MYSQL_PASSWORD: secret
        MYSQL_ROOT_PASSWORD: root
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 容器

postgres:
    build: ./postgres
    volumes_from: …
Run Code Online (Sandbox Code Playgroud)

laravel docker boot2docker docker-compose

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

从 cygwin 使用 SSH 运行 docker 容器显示不起作用

我正在运行安装在 Windows 7 计算机上的 docker 工具箱,我正在尝试从外部(win 桌面)访问 docker,以便我可以让 GUI 应用程序正常工作(假设我们将使用 Firefox 进行测试)如您所知, docker 没有随 Server X 一起提供,所以我发现解决方案是安装 xcygwin 来执行 X11 任务,然后通过 ssh 运行容器,以便它可以显示在我的 Windows 上。

问题是我无法正确设置显示,我可以:

export DISPLAY=:0.0 
Run Code Online (Sandbox Code Playgroud)

并尝试了其他一些选项,例如导出到主机的 IP、导出到本地主机等。然后我通过运行 SSH 到我的 docker:

docker-machine ssh default -X 
Run Code Online (Sandbox Code Playgroud)

(如果我没记错的话,-X 应该激活 x11 转发)

现在,我进入我的 docker,所以我简单地尝试通过运行如下命令来运行我的神奇 Firefox 容器:

docker run --rm -e DISPLAY=$DISPLAY devurandom/firefox 
Run Code Online (Sandbox Code Playgroud)

我收到预期的错误:cannot open display

正确的!我没有在我的泊坞窗中设置显示!所以我做了 :

DOCKER=0.0
Run Code Online (Sandbox Code Playgroud)

我明白了Cannot open display: 0.0

我也尝试过这个,我无法弄清楚路径从哪里来,但是好吧..

docker run -ti  -v /tmp/serverX:/tmp/ServerX -e DISPLAY=$DISPLAY ...
Run Code Online (Sandbox Code Playgroud)

运气不好,有人知道如何解决这个问题吗?

x11 x11-forwarding docker boot2docker

5
推荐指数
0
解决办法
814
查看次数

--virtualbox-hostonly-cidr 在 docker 机器创建期间做什么?

嗨,我想在 Windows 上创建一个 Docker 机器并拥有 Docker 工具箱并且必须执行此代码

./docker-machine create -d virtualbox  --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.11.2/boot2docker.iso --virtualbox-memory 3240 --virtualbox-cpu-count 2 --virtualbox-disk-size 30480 --virtualbox-hostonly-cidr "192.168.56.1/24" local
Run Code Online (Sandbox Code Playgroud)

所以我想知道什么是 --virtualbox-hostonly-cidr 并且它做了

官方文档说:

--virtualbox-hostonly-cidr "192.168.99.1/24"                                                         Specify the Host Only CIDR [$VIRTUALBOX_HOSTONLY_CIDR]
Run Code Online (Sandbox Code Playgroud)

我不明白。网络文化低的开发者能否详细解释一下。

virtualbox docker boot2docker docker-machine docker-toolbox

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