(在 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) 默认的dns 8.8.8.8和8.8.4.4被我国的防火墙阻止,我不想停止容器,因为我在其中安装了很多软件。
我真的需要一些帮助。我想做的是使用标准 golang:1.5 Docker 映像构建 Go 二进制文件,然后将该二进制文件从容器中复制到基于 busybox 的新的最小 Docker 容器中。使用 Docker 安装的卷将二进制文件从容器中拉出。到目前为止,我遇到了两个问题。
运行命令时,主机上生成的二进制文件(随后复制到第二个容器中)似乎仍然是 Mach-O 64 位可执行文件file。Docker 容器是否以某种方式从主机获取 GOOS 和 GOARCH?
当手动运行容器并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/ …
我有一个 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?
我有一些文件,我想将它们移动到 docker 容器。但最后docker找不到文件..
包含本地机器上文件的文件夹位于/home/katalonne/flask4
文件结构(如果重要):
#
# 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) 我在 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) TokuDB 引擎和 Redis 需要禁用透明大页面。使用 docker-toolbox,我可以通过 docker-machine ssh 进入主机并禁用它。我不再有权访问主机操作系统,那么如何禁用它?
无论我尝试什么,当我访问我的 docker-machine ip 时,我都会收到 HTTP 错误代码 500。
我通过 Docker 工具箱运行 laradock(操作系统:Windows 10)并运行默认虚拟机。我已经按照视频中的说明设置了 laradock。
我已成功将所需的文件夹安装到虚拟机中,并根据虚拟机中代码的位置更改了 docker-compose.yml:
这是我的 docker-compose.yml 文件:
版本:'2'
服务:
Nginx 服务器容器
Run Code Online (Sandbox Code Playgroud)nginx: build: ./nginx volumes_from: - volumes_source volumes: - ./logs/nginx/:/var/log/nginx ports: - "80:80" - "443:443" links: - php-fpmPHP-FPM容器
Run Code Online (Sandbox Code Playgroud)php-fpm: build: context: ./php-fpm dockerfile: Dockerfile-70 volumes_from: - volumes_source expose: - "9000" links: - workspaceMySQL容器
Run Code Online (Sandbox Code Playgroud)mysql: build: ./mysql volumes_from: - volumes_data ports: - "3306:3306" environment: MYSQL_DATABASE: homestead MYSQL_USER: homestead MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: rootPostgreSQL 容器
Run Code Online (Sandbox Code Playgroud)postgres: build: ./postgres volumes_from: …
我正在运行安装在 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)
运气不好,有人知道如何解决这个问题吗?
嗨,我想在 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)
我不明白。网络文化低的开发者能否详细解释一下。
boot2docker ×10
docker ×10
macos ×2
drupal ×1
go ×1
laravel ×1
linux ×1
postgresql ×1
python ×1
ssh ×1
vagrant ×1
virtualbox ×1
x11 ×1