我是 docker 新手,想要容器化我的应用程序的特定 git 分支。如果我运行 docker build 并给出 dockerfile 的位置,将构建一个图像,但默认情况下从本地 master 分支构建。我希望能够要构建另一个分支,请说“开发”。我做了一些研究,我发现的所有答案都建议从特定的远程分支而不是特定的本地分支进行构建。
我在windows上使用boot2docker Docker版本:客户端版本:0.12.0客户端API版本:1.12 Go版本(客户端):go1.2.1 Git commit(客户端):14680bf服务器版本:0.12.0服务器API版本:1.12 Go版本(服务器):go1.2.1 Git commit(server):14680bf
我基本上都是通过用户指南,一切都按预期工作,但在浏览培训烧瓶应用程序(http://docs.docker.com/userguide/usingdocker/)时,我的浏览器无法连接到Web服务器.
我已经尝试了我的每个版本的IP地址,主机名,......没有.总是"无法连接".
docker镜像正常运行:
8e9f917617ef training/webapp:latest python app.py 15秒前Up 14秒0.0.0.0:49153->5000/tcp kickass_carson
由于这是基本指南,我希望涵盖所有基础......但可能没有提到具体的windows(或boot2docker).只是找不到它.
我在Windows 7上运行boot2docker.在VM映像中,我试图阻止所有Docker映像,但是我收到错误:
docker@boot2docker:~$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
svendowideit/samba latest ce8e4e03282a 8 days ago 252 MB
hello-world latest e45a5af57b00 13 days ago 910 B
busybox latest 4986bf8c1536 13 days ago 2.433 MB
docker@boot2docker:~$ docker stop e45a5af57b00
Error response from daemon: No such container: e45a5af57b00
FATA[0000] Error: failed to stop one or more containers
docker@boot2docker:~$ docker kill e45a5af57b00
Error response from daemon: No such container: e45a5af57b00
FATA[0000] Error: failed to kill one or more containers
Run Code Online (Sandbox Code Playgroud) 我想创建Dockerfile,它将能够构建三个不同的图像(目前一个).这些图像仅在配置文件中有所不同.
我在努力:
我必须说我没有想法:/你如何处理这种情况.在我看来,这应该是一个共同的问题.
花了太长时间试图访问从boot2docker实例中的docker容器运行的节点服务器后,我意识到问题归结为公开和docker run -p之间的区别.
在我的Dockerfile中,我有EXPOSE 3001,我无法通过我的主机访问它.
运行"docker run -p 3001:3001 myappinst myapp"后,我能够访问该端口.
到目前为止,我认为"docker run -p 3001:3001"与dockerfile中的EXPOSE 3001基本相同.
然而,我注意到,当运行docker ps时
我得到以下"EXPOSE":
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16341e2b9968 housemation-crawler:latest "npm start" 2 minutes ago Up 2 minutes 3001/tcp housemation-crawler-inst
(注:3001/tcp)
与下面的对比 docker run -p 3001:3001
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b14f736033c housemation-crawler:latest "npm start" 8 seconds ago Up 2 seconds 0.0.0.0:3001->3001/tcp housemation-crawler-inst
(0.0.0.0:3001->3001/tcp)
看起来后者正在做某种端口转发,而前者只是打开端口?那是对的吗?
如果我想访问一个未转发的暴露端口,我该怎么办呢?另外,如果我想在dockerfile中进行端口转发,那么正确的语法是什么?
--log-driver="syslog"在OS X上使用时出现docker错误
我正在尝试学习如何docker在OS X上使用容器(10.10.3),我理解与标准Linux实现的差异(需要boot2docker VM),我想知道我是否可以使用syslog记录消息的方式有任何影响
当我使用该--log-driver="syslog"选项启动容器时,会创建容器但是在启动时出现错误
~$ docker run --log-driver="syslog" --name daemon_dwayne -d ubuntu /bin/sh -c "while true; do echo hello_world; sleep 2; done;"
1f623793049916d5c....
FATA[0000] Error response from daemon: Cannot start container 1f623793049916d5....: Unix syslog delivery error
Run Code Online (Sandbox Code Playgroud)
这在Linux机器上正常运行...感谢任何提示
我能够像redis和debian那样拉其他公共回购:
docker ps ?
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40416ad4c715 debian:latest "/bin/sh -c 'while t 6 minutes ago Up 6 minutes dal_server
Run Code Online (Sandbox Code Playgroud)
但是当我试图从我的仓库拉出来时我得到一个错误:
docker pull opmaster/basic_server ?
Pulling repository opmaster/basic_server
FATA[0009] Repository not found
docker push opmaster/basic_server ?
The push refers to a repository [opmaster/basic_server] (len: 0)
FATA[0000] Repository does not exist: opmaster/basic_server
Run Code Online (Sandbox Code Playgroud) 我正在使用boot2docker.我在守护进程模式下运行一个映像,它在端口3000启动grunt服务器.这是我用来启动它的命令.
该图像已经暴露了端口3000
docker run -d -P --name dummy image_name grunt server
docker ps
3af4ba19c539 image_name:latest "grunt server" 54 minutes ago Up 54 minutes 0.0.0.0:45000->3000/tcp dummy
Run Code Online (Sandbox Code Playgroud)
然后进入同一容器"卷曲"Web服务器.
docker exec -it 3af4ba19c539 /bin/bash
curl localhost:3000
Run Code Online (Sandbox Code Playgroud)
它得到了HTML.
但是,当我尝试在我的mac pc中连接它时.它说"连接被拒绝了."
curl $(boot2docker ip):45000
//curl: (7) Failed connect to 192.168.59.103:45000; Connection refused
Run Code Online (Sandbox Code Playgroud)
我尝试使用VBoxManage来解决这个问题,但它也没有用
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port45000,tcp,,45000,,45000"
Run Code Online (Sandbox Code Playgroud)
我可以知道如何解决这个问题.提前谢谢了
在这里,我使用docker机器创建一个测试机器(dev).
$ docker-machine create -d virtualbox dev
Creating CA: C:\Users\xxx\.docker\machine\certs\ca.pem
Creating client certificate: C:\Users\xxx\.docker\machine\certs\cert.pem
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
Run Code Online (Sandbox Code Playgroud)
vm被创建并运行时没有缺陷.以下是运行以下命令时的错误:
$ docker-machine env dev
open C:\Users\xxx\.docker\machine\machines\dev\ca.pem: The system cannot fin
d the file specified.
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理这个问题.尝试重新启动boot2docker.
我正在使用docker-machine来创建开发环境.我想更改docker-machine默认的ssh密钥.
我查看我的新机器的配置:
docker-machine config develop
--tlsverify --tlscacert="/Users/robe/.docker/machine/machines/develop/ca.pem" --tlscert="/Users/robe/.docker/machine/machines/develop/cert.pem" --tlskey="/Users/robe/.docker/machine/machines/develop/key.pem" -H=tcp://192.168.99.103:2376
Run Code Online (Sandbox Code Playgroud)
当我尝试使用密钥访问时:
--tlskey="/Users/robe/.docker/machine/machines/develop/key.pem"
使用此命令:
ssh -i /Users/robe/.docker/machine/machines/develop/key.pem docker@192.168.99.103
Run Code Online (Sandbox Code Playgroud)
然后我得到了写密码的提示.那么为什么我无法使用此访问密钥访问我的虚拟机.
有什么帮助吗?
boot2docker ×10
docker ×10
dockerfile ×1
git ×1
networking ×1
osx-yosemite ×1
ssh-keys ×1
ssl ×1
syslog ×1
virtualbox ×1