Access to docker container running in coreos on vagrant vm through a browser in the host host of ubuntu

I have installed kernels that work in a virtual virtual machine. I want to set up a private docker registry. I pulled out the registry and I can start it. The following is the output about starting the registry

core@core-01 ~ $ docker run -p 5000:5000 registry 2014-12-22 01:40:32 [1] [INFO] Starting gunicorn 19.1.0 2014-12-22 01:40:32 [1] [INFO] Listening at: http://0.0.0.0:5000 (1) 2014-12-22 01:40:32 [1] [INFO] Using worker: gevent 2014-12-22 01:40:32 [20] [INFO] Booting worker with pid: 20 2014-12-22 01:40:32 [23] [INFO] Booting worker with pid: 23 2014-12-22 01:40:32 [24] [INFO] Booting worker with pid: 24 2014-12-22 01:40:32 [25] [INFO] Booting worker with pid: 25 2014-12-22 01:40:32 [1] [INFO] 4 workers 22/Dec/2014:01:40:32 +0000 WARNING: Cache storage disabled! 22/Dec/2014:01:40:32 +0000 WARNING: LRU cache disabled! 22/Dec/2014:01:40:32 +0000 DEBUG: Will return docker-registry.drivers.file.Storage 22/Dec/2014:01:40:32 +0000 WARNING: Cache storage disabled! 22/Dec/2014:01:40:32 +0000 WARNING: LRU cache disabled! 22/Dec/2014:01:40:32 +0000 WARNING: Cache storage disabled! 22/Dec/2014:01:40:32 +0000 DEBUG: Will return docker-registry.drivers.file.Storage 22/Dec/2014:01:40:32 +0000 WARNING: LRU cache disabled! 22/Dec/2014:01:40:32 +0000 DEBUG: Will return docker-registry.drivers.file.Storage 22/Dec/2014:01:40:32 +0000 WARNING: Cache storage disabled! 22/Dec/2014:01:40:32 +0000 WARNING: LRU cache disabled! 22/Dec/2014:01:40:32 +0000 DEBUG: Will return docker-registry.drivers.file.Storage 2014-12-22 02:40:32 [1] [INFO] 4 workers 2014-12-22 03:40:31 [1] [INFO] 4 workers 2014-12-22 03:53:42 [1] [INFO] 4 workers 2014-12-22 03:53:42 [1] [INFO] Handling signal: winch 2014-12-22 03:53:42 [1] [INFO] 4 workers 2014-12-22 03:53:43 [1] [INFO] 4 workers 2014-12-22 03:53:43 [1] [INFO] Handling signal: winch 2014-12-22 03:53:43 [1] [INFO] 4 workers 

On my ubuntu main machine, my ifconfig output shows the content below

 me@mydesktop-Machine-Node00 :~$ ifconfig docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99 inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth0 Link encap:Ethernet HWaddr d4:3d:7e:a1:25:1e inet addr:192.168.65.27 Bcast:192.168.65.255 Mask:255.255.255.0 inet6 addr: fe80::d63d:7eff:fea1:251e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:457483 errors:0 dropped:0 overruns:0 frame:0 TX packets:245109 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:492304997 (492.3 MB) TX bytes:20414914 (20.4 MB) 

lo Link encap: Local Loopback

When accessing 172.17.42.1►000 and 192.168.65.27►000 in a browser on ubuntu, host shows wait a long time, but finally it does not connect.

I referred to this post, but my tramp does not have the entries mentioned in the post.

My roaming file below

 # -*- mode: ruby -*- # # vi: set ft=ruby : require 'fileutils' Vagrant.require_version ">= 1.6.0" CLOUD_CONFIG_PATH = File.join(File.dirname(__FILE__), "user-data") CONFIG = File.join(File.dirname(__FILE__), "config.rb") # Defaults for config options defined in CONFIG $num_instances = 1 $update_channel = "alpha" $enable_serial_logging = false $vb_gui = false $vb_memory = 1024 $vb_cpus = 1 # Attempt to apply the deprecated environment variable NUM_INSTANCES to # $num_instances while allowing config.rb to override it if ENV["NUM_INSTANCES"].to_i > 0 && ENV["NUM_INSTANCES"] $num_instances = ENV["NUM_INSTANCES"].to_i end if File.exist?(CONFIG) require CONFIG end Vagrant.configure("2") do |config| # always use Vagrants insecure key config.ssh.insert_key = false config.vm.box = "coreos-%s" % $update_channel config.vm.box_version = ">= 308.0.1" config.vm.box_url = "http://%s.release.core-os.net/amd64- usr/current/coreos_production_vagrant.json" % $update_channel config.vm.provider :vmware_fusion do |vb, override| override.vm.box_url = "http://%s.release.core-os.net/amd64- usr/current/coreos_production_vagrant_vmware_fusion.json" % $update_channel end config.vm.provider :virtualbox do |v| # On VirtualBox, we don't have guest additions or a functional vboxsf # in CoreOS, so tell Vagrant that so it can be smarter. v.check_guest_additions = false v.functional_vboxsf = false end # plugin conflict if Vagrant.has_plugin?("vagrant-vbguest") then config.vbguest.auto_update = false end (1..$num_instances).each do |i| config.vm.define vm_name = "core-%02d" % i do |config| config.vm.hostname = vm_name if $enable_serial_logging logdir = File.join(File.dirname(__FILE__), "log") FileUtils.mkdir_p(logdir) serialFile = File.join(logdir, "%s-serial.txt" % vm_name) FileUtils.touch(serialFile) config.vm.provider :vmware_fusion do |v, override| v.vmx["serial0.present"] = "TRUE" v.vmx["serial0.fileType"] = "file" v.vmx["serial0.fileName"] = serialFile v.vmx["serial0.tryNoRxLoss"] = "FALSE" end config.vm.provider :virtualbox do |vb, override| vb.customize ["modifyvm", :id, "--uart1", "0x3F8", "4"] vb.customize ["modifyvm", :id, "--uartmode1", serialFile] end end if $expose_docker_tcp config.vm.network "forwarded_port", guest: 2375, host: ($expose_docker_tcp + i - 1), auto_correct: true end config.vm.provider :vmware_fusion do |vb| vb.gui = $vb_gui end config.vm.provider :virtualbox do |vb| vb.gui = $vb_gui vb.memory = $vb_memory vb.cpus = $vb_cpus end ip = "172.17.8.#{i+100}" config.vm.network :private_network, ip: ip # Uncomment below to enable NFS for sharing the host machine into the coreos-vagrant VM. #config.vm.synced_folder ".", "/home/core/share", id: "core", :nfs => true, :mount_options => ['nolock,vers=3,udp'] if File.exist?(CLOUD_CONFIG_PATH) config.vm.provision :file, :source => "#{CLOUD_CONFIG_PATH}", :destination => "/tmp/vagrantfile-user-data" config.vm.provision :shell, :inline => "mv /tmp/vagrantfile-user-data /var/lib/coreos-vagrant/", :privileged => true end end end end 

How to run docker-registry on coreos-vagrant and connect to it using a browser running on the host machine?

+6
source share
1 answer

I see two problems with what you are trying to do.

  • You are having trouble accessing docker containers running in Vagrant VM from your operating system.
  • You are looking for a web interface to administer your private docker registry, but the docker image that I think you are using (library / registry) does not provide this.

Point 1: Please note that there is no administrator user interface in the private registry of private dockers. The service provided on port 5000 is not a website; It is designed to use the command-line docker to click and pull images in your private registry. If you need a web-based admin user interface, you might consider running an additional service like https://github.com/atc-/docker-registry-web (which I haven't tried yet, but looked promising).

Point 2: If you want to access the docker container ports hosted on Vagrant-VM from your Vagrant VM virtual host system (presumably Windows or OSX, because if your host OS was Linux, you probably don't need Vagrant ), then I recommend you open the ssh tunnel for your CoreOS virtual machine by redirecting the docker registry port to the local host:

 vagrant ssh -L5000:localhost:5000 -L8080:localhost:8080 -L80:localhost:80 

And leave this ssh session open until you need network access to the ports of these docker ports.

As long as these port forwarding tunnels are open, the ports you redirected will be available on the local host (i.e. 127.0.0.1). You do not need to access them through any other IP address as you tried before. This will allow you to access, for example, a web server running in the docker container by visiting http: // localhost / or an application server running on port 8080 by visiting http: // localhost: 8080 / using a browser or other HTTP client such as curl. Port 5000 is probably useless in this context, since docker command-line utilities that can access the registry do not currently run natively on Windows or OSX. To use your private docker registry, run something like this on your virtuoso CoreOS virtual machine:

 docker tag eb62f9df0657 localhost:5000/myimage docker push localhost:5000/myimage 
+1
source

Source: https://habr.com/ru/post/980029/


All Articles