我现在尝试在启动Docker容器时分配静态IP 172.17.0.1.
我使用端口2122作为此容器的ssh端口,以便我让这个容器监听端口2122.
sudo docker run -i -t -p 2122:2122 ubuntu
Run Code Online (Sandbox Code Playgroud)
此命令将运行具有随机IP(如172.17.0.5)的Docker容器,但我需要为容器分配特定的IP.
以下shell脚本是我在高级网络设置中引用Docker文档的内容.
pid=$(sudo docker inspect -f '{{.State.Pid}}' <container_name> 2>/dev/null)
sudo rm -rf /var/run/netns/*
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid
sudo ip link add A type veth peer name B
sudo brctl addif docker0 A
sudo ip link set A up
sudo ip link set B netns $pid
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link delete eth0
sudo ip netns exec …Run Code Online (Sandbox Code Playgroud) 我非常满意Docker默认给我的IP范围176.17.x.x,所以我不需要创建一个新桥,我只想给我的容器一个静态地址在这个范围内,所以我可以指向客户端浏览器直.我试过用
RUN echo "auto eth0" >> /etc/network/interfaces
RUN echo "iface eth0 inet static" >> /etc/network/interfaces
RUN echo "address 176.17.0.250" >> /etc/network/interfaces
RUN echo "netmask 255.255.0.0" >> /etc/network/interfaces
RUN ifdown eth0
RUN ifup eth0
Run Code Online (Sandbox Code Playgroud)
从Dockerfile,它正确填充interfaces文件,但接口本身没有改变.实际上,在容器中运行ifup eth0会出现此错误:
RTNETLINK答案:不允许操作无法启动eth0
重新启动Windows后,我无法连接到在Oracle Virtual Box中运行的docker机器.当我启动Docker QuickStart终端时,每件事看起来都很好,它就会出现,它会给我这样的信息:
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Run Code Online (Sandbox Code Playgroud)
但当我这样做时:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Timeout
Run Code Online (Sandbox Code Playgroud)
和:
? docker images
An error occurred trying to connect: Get http://localhost:2375/v1.21/images/json: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it.
Run Code Online (Sandbox Code Playgroud)
当我尝试重新初始化我的环境时,我得到:
? docker-machine env default
Error checking TLS connection: Error …Run Code Online (Sandbox Code Playgroud) 我可以使用VirtualBox驱动程序创建一个Docker实例,但我无法弄清楚如何指定URL.
创建命令:
docker-machine create --driver virtualbox myBox
Run Code Online (Sandbox Code Playgroud)
docker-machine ls:
NAME ACTIVE DRIVER STATE URL SWARM
myBox * virtualbox Running tcp://192.168.99.100:2376
Run Code Online (Sandbox Code Playgroud)
我希望URL成为特定的URL.如何强制Docker实例使用特定的URL(例如:192.168.99.113)?
详细信息: Mac 10.10.5使用Docker Toolbox
我尝试使用该--virtualbox-hostonly-cidr命令设置docker机器的IP范围; 我指定了一个IP地址范围("192.168.99.113/32"),但创建的机器的IP为192.168.99.100,超出了我提供的范围.
是否可以设置具有特定IP地址的泊坞机?
我试图在Windows上设置docker机器,这个问题让我烦恼了好几天.
我在Windows上下载并安装了DockerToolbox-1.9.1a,因此它附带了Virtual Box版本5.0.10.之后我运行此命令来创建我的虚拟机:
docker-machine create --driver virtualbox --engine-insecure-registry docker.pre-prod.ss.local:5000 --virtualbox-hostonly-cidr 192.168.99.100/24 mymachine
这是我得到的:
等待机器运行,这可能需要几分钟......机器正在运行,正在等待SSH可用...检测已创建实例的操作系统...检测供应商...供应创建的实例...将证书复制到本地计算机目录...将证书复制到远程计算机...在远程守护程序上设置Docker配置...警告>>>已为此计算机分配了IP地址,但Docker Machine无法成功访问它.
该机器的SSH应该仍然有效,但是连接到暴露的端口(例如Docker守护程序端口(通常为:2376))可能无法正常工作.
您可能需要手动添加路由,或使用其他相关的解决方法
这可能是由于VPN,代理或主机文件配置问题.
您还可能希望清除所有未使用的VirtualBox主机接口
机器创建成功.所以我运行了docker-machine env命令:
docker-machine env --shell = powershell mymachine | 调用,表达
我得到了:
运行连接样板时出错:错误检查和/或重新生成证书:主机"192.168.99.100:2376"有icates:拨打tcp 192.168.99.100:2376:connectex:没有连接目标机器主动拒绝它.您可以尝试使用"docker-machine regenerate-certs name"重新生成它们.请注意,这将触发Docker守护程序重启,这将停止运行容器.
运行docker版本返回
客户端:版本:1.9.1 API版本:1.21 Go版本:
go1.4.3 Git commit:a34a1d5内置:星期五11月20日17:56:04 UTC OS/Arch:windows/amd64尝试连接时出错:获取http: //localhost:2375/v1.21/version:可以拨打tcp连接,因为目标机器主动拒绝它.
有人可以帮助指出解决这个问题的方向吗?在Windows上设置docker真的很麻烦.非常感谢你.