标签: boot2docker

如何在Docker容器中安装主机目录

我正在尝试将主机目录挂载到Docker容器中,以便在主机上完成的任何更新都会反映到Docker容器中.谷歌搜索和阅读Docker音量链接后,我无法成功.

我在哪里做错了什么.这是我做的:

kishore$ cat Dockerfile

FROM ubuntu:trusty
RUN apt-get update
RUN apt-get -y install git curl vim
CMD ["/bin/bash"]
WORKDIR /test_container
VOLUME ["/test_container"]
Run Code Online (Sandbox Code Playgroud)

kishore$ tree
.
??? Dockerfile
??? main_folder
    ??? tfile1.txt
    ??? tfile2.txt
    ??? tfile3.txt
    ??? tfile4.txt

1 directory, 5 files kishore$ pwd /Users/kishore/tdock

Run Code Online (Sandbox Code Playgroud)
kishore$ docker build --tag=k3_s3:latest .

Uploading context 7.168 kB
Uploading context
Step 0 : FROM ubuntu:trusty
 ---> 99ec81b80c55
Step 1 : RUN apt-get update
 ---> Using cache
 ---> 1c7282005040
Step 2 : RUN apt-get -y …
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)

mount docker boot2docker

552
推荐指数
23
解决办法
76万
查看次数

Docker Compose与Dockerfile - 哪个更好?

我一直在阅读并了解Docker,我正在尝试正确选择要使用的Django设置.到目前为止,要么:

Docker ComposeDockerfile

我明白这Dockerfiles是用过的Docker Compose,但我不确定将所有内容放在一个大型Dockerfile中,并FROM为不同的图像添加多个命令是不是很好?

我想使用几个不同的图像,包括:

uwsgi
nginx
postgres
redis
rabbitmq
celery with cron
Run Code Online (Sandbox Code Playgroud)

请告知使用Docker设置此类环境的最佳做法.

如果它有帮助,我在Mac上,所以使用boot2docker.

我遇到的一些问题:

  1. Docker Compose与Python3不兼容
  2. 我想将我的项目容器化,所以如果一个大的Dockerfile不理想,那么我觉得我需要使用Docker Compose来解决它
  3. 我可以让Py2和Py3项目兼容,所以我倾向于django-compose

development-environment docker boot2docker dockerfile docker-compose

334
推荐指数
9
解决办法
15万
查看次数

如何正确清除Docker容器的日志?

docker logs [container-name]用来查看特定容器的日志.

是否有一种优雅的方式来清除这些日志?

docker boot2docker docker-compose docker-machine

158
推荐指数
16
解决办法
16万
查看次数

使用Docker在OS X上设置开发环境的正确方法是什么?

介绍

我无法找到使用Docker和Boot2Docker在OS X上设置开发环境的好方法.我遇到的问题是如何管理源代码,以便:

  1. 我可以使用我已安装的工具(文本编辑器,IDE,git等)修改OS X上的代码.
  2. 这些修改反映在Docker容器中,因此如果我重新运行测试或刷新网页,我可以立即看到我的更改.

理论上,通过将我的源代码作为卷安装,这应该很容易做到:

docker run -it -v /path/to/my/source/code:/src some-docker-image
Run Code Online (Sandbox Code Playgroud)

不幸的是,这有两个主要问题使它在OS X上完全无法使用:

问题#1:Virtual Box上安装的卷(使用vboxsf)非常慢

例如,如果源代码是Docker镜像的一部分,这里是Jekyll编译我的主页需要多长时间:

> docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash

root@7aaea30d98a1:/src# time bundle exec jekyll build

[...]

real    0m7.879s
user    0m7.360s
sys     0m0.600s
Run Code Online (Sandbox Code Playgroud)

这是完全相同的Docker镜像,除了这次,我从OS X挂载源代码:

> docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash

root@1521b0b4ce6a:/src# time bundle exec jekyll build

[...]

real    1m14.701s
user    0m9.450s
sys     0m3.410s
Run Code Online (Sandbox Code Playgroud)

问题#2:文件观看被破坏了

SBT,Jekyll和grunt中的默认监视机制使用诸如inotify之类的技术,如果它们在Docker容器中运行并且在OS X中对安装的文件夹进行了更改,则它们不起作用.

我试过的解决方法

我搜索了解决方案(包括SO上的所有解决方案)并尝试了其中一些,但没有找到成功的解决方案:

  1. 将Boot2Docker切换为使用NFS,但速度一样慢.
  2. 我尝试过Vagrant + NFS,这也很慢.
  3. 我尝试了Samba安装,但该文件夹在Docker容器中始终显示为空.
  4. 我试图使用unison文件系统 …

macos development-environment docker boot2docker

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

docker错误:/var/run/docker.sock:没有这样的文件或目录

我是码头工人的新手.我有一个shell脚本将数据加载到impala中,我想要一个运行的docker文件构建一个映像并运行容器.我在mac上,安装了boot2docker并DOCKER_HOST设置了env.

bash-3.2$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]
Run Code Online (Sandbox Code Playgroud)

我试图使用以下方法安装预先构建的图像:

sudo docker pull busybox
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory

我的码头设置有问题吗?

当我这样做时docker pull busybox,它会拉动图像并完成下载.

bash-3.2$ docker pull busybox
Pulling repository busybox
a9eb17255234: …
Run Code Online (Sandbox Code Playgroud)

docker boot2docker

85
推荐指数
8
解决办法
11万
查看次数

Docker编写,在net:host中运行容器

我想使用docker-compose在"主机"网络中生成3个服务.这是我的docker-compose.yml文件:

version: '2'
services:
  mysql:
    image: mysql
    net: "host"
  nginx:
    image: nginx
    net: "host"
  app:
    image: tomcat
    net: "host"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

$ docker-compose up
[31mERROR[0m: Validation failed in file '.\docker-compose.yml', reason(s):
Unsupported config option for services.app: 'net'
Unsupported config option for services.mysql: 'net'
Unsupported config option for services.nginx: 'net'
Run Code Online (Sandbox Code Playgroud)

我在windows上使用boot2docker.

Docker和Docker-compose版本:

$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a
Run Code Online (Sandbox Code Playgroud)

如果我通过使用手动运行所有服务docker run --net = "host"工作正常.

在文档中,我读到了docker-compose支持net命令:

网络模式.使用与docker client …

docker boot2docker docker-compose

84
推荐指数
4
解决办法
15万
查看次数

Docker错误:客户端和服务器没有相同的版本

由于我刚刚将Docker更新为1.1.0,我得到:

来自守护程序的错误响应:客户端和服务器没有相同的版本(客户端:1.13,服务器:1.12)

你知道怎么解决这个问题吗?

我切换回1.0.1,一切都恢复正常.

docker boot2docker docker-machine

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

Docker - 如何将文件从图像复制到主机?

我的问题与将文件从容器复制到主机的问题有关; 我有一个Dockerfile,它可以获取依赖项,从源代码编译构建工件,并运行可执行文件.我也想复制构建工件(在我的情况下,它是.zipsbt dist'../ target /`生成的,但我认为这个问题也适用于jar,二进制文件等.

docker cp适用于容器,而不是图像; 我是否需要启动容器才能获取文件?在脚本中,我尝试/bin/bash在后台以交互模式运行,将文件复制出来,然后杀死容器,但这看起来很糟糕.有没有更好的办法?

另一方面,我想避免.tar在运行之后解压缩文件docker save $IMAGENAME以获取一个文件(但这似乎是最简单的,如果最慢的选项).

我会使用docker卷,例如:

docker run -v hostdir:out $IMAGENAME /bin/cp/../blah.zip /out
Run Code Online (Sandbox Code Playgroud)

但是我boot2docker在OSX中运行而且我不知道如何直接写入我的mac主机文件系统(读写卷正在我的boot2docker VM中安装,这意味着我无法轻松共享脚本以blah.zip从图像中提取其他人.想法?

docker boot2docker

77
推荐指数
8
解决办法
4万
查看次数

由于tcp超时,docker无法连接到boot2docker

我正在运行Mac OS 10.9.5,我已经按照https://docs.docker.com/installation/mac/来安装docker .即使boot2docker VM在后台运行,我运行docker时也会收到超时错误消息.

nikhil@macbook ~> boot2docker status
running
nikhil@macbook ~> boot2docker ip

The VM's Host only interface IP address is: 192.168.59.103

nikhil@macbook ~> docker run hello-world
2014/11/01 01:01:31 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: i/o timeout
nikhil@macbook ~> docker search ubuntu
2014/11/01 01:02:40 Get https://192.168.59.103:2376/v1.15/images/search?term=ubuntu: dial tcp 192.168.59.103:2376: i/o timeout
Run Code Online (Sandbox Code Playgroud)

我已经验证了docker在boot2docker vm中运行并且我的端口是正确的.

nikhil@macbook ~> boot2docker ssh
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / …
Run Code Online (Sandbox Code Playgroud)

docker osx-mavericks boot2docker

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

我们可以通过dockerfile构建docker镜像时通过cmd行传递ENV变量吗?

我正在开展一项任务,涉及使用Dockerfile构建一个以centOs为基础的docker镜像.dockerfile中的一个步骤需要设置http_proxyhttps_proxy ENV变量才能在代理后面工作.

由于这个Dockerfile将由具有不同代理的多个团队使用,我想避免为每个团队编辑Dockerfile.相反,我正在寻找一个允许我在构建时传递ENV变量的解决方案,例如,

sudo docker build -e http_proxy = somevalue.

我不确定是否已有提供此功能的选项.我错过了什么吗?

environment-variables docker boot2docker dockerfile

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