我有一个Vagrant设置,提供两个Docker容器.Docker容器启动没有问题.在Vagrant VM中,我可以运行docker ps并看到两个容器都连接到正确的端口.如果我运行,docker logs XXX我会看到我的Redis和Mongo守护进程都在运行.但是从Vagrant盒子本身我无法telnet或访问任何正在运行的服务.我总是拒绝连接.如何让Vagrant VM看到Docker中运行的正在运行的服务?
我Vagrantfile看起来像:
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.host_name = "trusty"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.box = "trusty64"
config.vm.network :private_network, ip: "192.168.10.12"
config.vm.network :forwarded_port, guest: 6379, host: 6379
config.vm.network :forwarded_port, guest: 27017, host: 27017
config.vm.provision "docker" do |d|
d.pull_images 'dockerfile/redis'
d.pull_images 'dockerfile/mongodb'
d.run 'dockerfile/redis', ports: ['6379:6379'], name: 'redis', expose: [6379]
d.run 'dockerfile/mongodb', ports: ['27017:27017'], name: 'mongodb'
end
end
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用谷歌的debian图像(google/debian:wheezy)首次构建一个docker镜像,在其上设置OpenJDK7并尝试设置Tomcat7.
docker pull google/debian:wheezy
docker run -i -t google/debian:wheezy bash
Run Code Online (Sandbox Code Playgroud)
一旦我在bash,我安装openjdk
apt-get update
apt-get install openjdk-7-jre
Run Code Online (Sandbox Code Playgroud)
过了一会儿,我收到一个错误,我必须跑
apt-get update --fix-missing
apt-get install openjdk-7-jre
apt-get install tomcat7
Run Code Online (Sandbox Code Playgroud)
安装Tomcat7后,我尝试启动它
/etc/init.d/tomcat7 start
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
[FAIL] Starting Tomcat servlet engine: tomcat7 failed!
Run Code Online (Sandbox Code Playgroud)
我显然做错了什么,我在我的Debian Docker安装和我的OSX Docker安装上都得到了完全相同的行为(至少它是一致的,这有点令人印象深刻!)
查看/var/log/catalina.out不会显示任何错误,localhost也不会记录.
我使用普通的debian跟踪了相同的过程:wheezy图像并且没有任何错误地获得完全相同的故障.知道我搞砸了吗?
在我可以使用我的docker容器之前(在OSX上使用Boot2Docker)我总是要记得输入
export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375
Run Code Online (Sandbox Code Playgroud)
在我的终端,自然我经常忘记这一点.
所以我想我只是将该行添加到我的~/.bashrc文件中,但是当我完成此操作并检查DOCKER_HOST它的值tcp://192.168.42.43:4243而不是tcp://192.168.42.43:2375.
打破它:
boot2docker ip >"VM的主机唯一接口IP地址是:192.168.59.103"boot2docker ip 2 >"VM的主机唯一接口IP地址是:192.168.59.103"boot2docker ip 2>/dev/null=>"192.168.59.103"(好吧我有点理解,但我不知道它是如何工作的,我不知道:4243它来自哪里."实际上这里发生了什么,为什么端口不同?
我无法在构建后启动我的容器,我得到了:
Error response from daemon: Cannot start container ogc-mysql: no such file or directory
Error: failed to start one or more containers
Run Code Online (Sandbox Code Playgroud)
这是我的Docker文件:
FROM ubuntu:latest
MAINTAINER Davin Kevin
# Install latest updates
RUN apt-get update
RUN apt-get upgrade -y
# Install mysql client and server
RUN apt-get -y install mysql-client mysql-server curl
# Enable remote access (default is localhost only, we change this
# otherwise our database would not be reachable from outside the container)
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = …Run Code Online (Sandbox Code Playgroud) 好吧,我已经筋疲力尽了所有的线程和文章,但仍然无法让我的apache webserver在Centos Docker Container上以独立模式运行.
这是我简化的Dockerfile
# install apache
RUN yum -y install httpd
# start the webserver
ADD startservice /startservice
RUN chmod 775 /startservice
EXPOSE 80
CMD ["/startservice"]
Run Code Online (Sandbox Code Playgroud)
我的星际服务脚本就是这样
#!/usr/bin/sh
service httpd start
Run Code Online (Sandbox Code Playgroud)
我可以构建好,但是,似乎无法在守护进程/独立模式下运行容器.我怎么做?
我使用它来以独立模式运行容器
docker run -p 80:80 -d -t webserver
Run Code Online (Sandbox Code Playgroud)
我必须登录容器并启动服务以运行Web服务器.
docker run -p 80:80 -i -t webserver bash
service httpd start
Run Code Online (Sandbox Code Playgroud) 从Docker 文档中,restart policy可以设置一个参数.
当容器退出时,如何验证容器确实重新启动.如何手动触发容器的退出,并观察容器是否重新启动?
我的环境是Mac和boot2docker.
谢谢
我有docker图像Dockerfile,用docker build .命令成功构建.的Dockerfile内容是:
FROM ubuntu
RUN apt-get update && apt-get install -y nginx php5 php5-fpm
ADD . /code
Run Code Online (Sandbox Code Playgroud)
如何运行我的docker容器以查看它Nginx是否有效?
更新:当我尝试使用下一个Dockerfile时:
FROM ubuntu
RUN apt-get update && apt-get install -y nginx php5 php5-fpm
RUN sudo echo "daemon off;" >> /etc/nginx/nginx.conf
CMD service php5-fpm start && nginx
Run Code Online (Sandbox Code Playgroud)
它成功构建docker build -t my/nginx .,但当我输入docker run --rm -ti my/nginx命令时,我的终端没有响应:

我在dockerhub上有一个回购.我成功地推了几次.现在,突然间我无法推动.我无法想象导致问题的小XML文件编辑,但我不知道它可能是什么.
命令和错误如下:
在{ https://cdn-registry-1.docker.io/v1/repositories/lulumialu/titandb/tags/latest } 上推动rev [6c4dcead2bef]的标签2015/06/22 13:17:10放入 https:// index.docker.io/v1/repositories/lulumialu/titandb/images:在[10.0.2.3]上拨打tcp:lookup index.docker.io:53:重定向太多
我正在尝试重新安装boot2docker
https://github.com/boot2docker/osx-installer/releases/tag/v1.7.0
安装失败,并报告以下错误:
安装程序检测到VirtualBox仍在运行.请关闭所有正在运行的VirtualBox计算机并退出VirtualBox,然后重新启动安装.
我该如何退出VirtualBox?
我对Docker比较陌生.我使用docker-machine create -d启动了一个boot2docker主机.
管理连接到它,并运行一些命令.都好.
但是,在尝试创建一个基本的http服务器映像时,基于centos .."yum install"只是失败了.无论什么是包装.
这是我的Docker文件:
FROM centos
MAINTAINER Amir
#Install Apache
RUN yum install httpd
Run Code Online (Sandbox Code Playgroud)
运行时:docker build.
它开始构建图像,一切看起来都不错......但随后失败了:
您的事务已保存,请使用以下命令重新运行:yum load-transaction /tmp/yum_save_tx.2015-09-18.15-10.q5ss8m.yumtx安全警告:您正在从Windows构建针对非Windows Docker主机的Docker镜像.添加到构建上下文的所有文件和目录都具有"-rwxr-xr-x"权限.建议仔细检查并重置敏感文件和目录的权限.命令'/ bin/sh -c yum install httpd'返回非零代码:1
知道我做错了什么吗?
提前致谢.
boot2docker ×10
docker ×9
dockerfile ×2
bash ×1
debian ×1
linux ×1
macos ×1
mysql ×1
nginx ×1
php ×1
tomcat7 ×1
ubuntu ×1
vagrant ×1
vagrantfile ×1
virtualbox ×1