我正在尝试将主机目录挂载到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) 我一直在阅读并了解Docker,我正在尝试正确选择要使用的Django设置.到目前为止,要么:
我明白这Dockerfiles是用过的Docker Compose,但我不确定将所有内容放在一个大型Dockerfile中,并FROM为不同的图像添加多个命令是不是很好?
我想使用几个不同的图像,包括:
uwsgi
nginx
postgres
redis
rabbitmq
celery with cron
Run Code Online (Sandbox Code Playgroud)
请告知使用Docker设置此类环境的最佳做法.
如果它有帮助,我在Mac上,所以使用boot2docker.
我遇到的一些问题:
development-environment docker boot2docker dockerfile docker-compose
我docker logs [container-name]用来查看特定容器的日志.
是否有一种优雅的方式来清除这些日志?
我无法找到使用Docker和Boot2Docker在OS X上设置开发环境的好方法.我遇到的问题是如何管理源代码,以便:
理论上,通过将我的源代码作为卷安装,这应该很容易做到:
docker run -it -v /path/to/my/source/code:/src some-docker-image
Run Code Online (Sandbox Code Playgroud)
不幸的是,这有两个主要问题使它在OS X上完全无法使用:
例如,如果源代码是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)
SBT,Jekyll和grunt中的默认监视机制使用诸如inotify之类的技术,如果它们在Docker容器中运行并且在OS X中对安装的文件夹进行了更改,则它们不起作用.
我搜索了解决方案(包括SO上的所有解决方案)并尝试了其中一些,但没有找到成功的解决方案:
我是码头工人的新手.我有一个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-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更新为1.1.0,我得到:
来自守护程序的错误响应:客户端和服务器没有相同的版本(客户端:1.13,服务器:1.12)
你知道怎么解决这个问题吗?
我切换回1.0.1,一切都恢复正常.
我的问题与将文件从容器复制到主机的问题有关; 我有一个Dockerfile,它可以获取依赖项,从源代码编译构建工件,并运行可执行文件.我也想复制构建工件(在我的情况下,它是.zip由sbt 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从图像中提取其他人.想法?
我正在运行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) 我正在开展一项任务,涉及使用Dockerfile构建一个以centOs为基础的docker镜像.dockerfile中的一个步骤需要设置http_proxy和https_proxy ENV变量才能在代理后面工作.
由于这个Dockerfile将由具有不同代理的多个团队使用,我想避免为每个团队编辑Dockerfile.相反,我正在寻找一个允许我在构建时传递ENV变量的解决方案,例如,
sudo docker build -e http_proxy = somevalue.
我不确定是否已有提供此功能的选项.我错过了什么吗?