2014-12-22 20 views
6

Ho installato coreos in esecuzione in VM vagabondo. Voglio configurare il registro docker privato. Ho tirato il registro e posso eseguirlo. Quello che segue è l'uscita a correre registroAccess docker container in esecuzione in coreos su vm vagabondo tramite browser nell'host ubuntu host

[email protected] ~ $ 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 

Nella mia macchina host Ubuntu la mia uscita ifconfig mostra il contenuto sotto

[email protected]:~$ 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: loopback locale

Accedendo 172.17.42.1: 5000 e 192.168.65.27:5000 nel browser su host ubuntu mostra in attesa per molto tempo ma alla fine non si connette.

Mi riferivo al post this, ma il mio vagabondo non ha voci menzionate come per il post.

Il mio file vagabondo è come sotto

# -*- 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 

come eseguire finestra mobile-Registro di sistema sul CoreOS-vagabonda e connettersi ad esso utilizzando il browser in esecuzione sulla macchina host?

risposta

1

Posso vedere due problemi con quello che stai cercando di fare.

  1. Si riscontrano problemi durante l'accesso ai contenitori di finestre mobili in esecuzione su una VM di Vagrant dal sistema operativo host.
  2. Si sta cercando un'interfaccia utente Web per l'amministrazione del registro docker privato, ma l'immagine docker che penso si stia eseguendo (libreria/registro) non fornisce questo.

Articolo 1: Si prega di notare che il Registro di finestra mobile privata si esegue non fornisce un'interfaccia utente Web Admin. Il servizio che fornisce sulla porta 5000 non è un sito Web; è per l'uso da docker da riga di comando per spingere e tirare le immagini nel registro privato. Se hai bisogno di un'interfaccia utente web di amministrazione, potresti prendere in considerazione l'esecuzione di un servizio aggiuntivo come https://github.com/atc-/docker-registry-web (che non ho ancora provato ma sembra promettente).

Articolo 2: Se si desidera accedere alle porte di un contenitore di finestra mobile Vagrant-VM-hosted dal vostro sistema operativo host di Vagrant VM (presumibilmente Windows o OSX, dal momento che se il vostro sistema operativo host erano Linux probabilmente non c'è bisogno Vagrant) allora vi consiglio di apre un tunnel SSH al CoreOS Vagrant VM, di inoltrare il porto di immatricolazione finestra mobile al vostro host locale:

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

e lasciare la sessione ssh aperto fino a quando è necessario l'accesso alla rete a quelli porti dei docker container.

Mentre questi tunnel di port forwarding sono aperti, le porte inoltrate saranno disponibili su localhost (ad esempio 127.0.0.1). Non è necessario accedervi tramite qualche altro indirizzo IP come si è tentato prima. Ciò consentirebbe di accedere, ad esempio, a un server Web in esecuzione in un contenitore finestra mobile visitando http://localhost/ o un server applicazioni in esecuzione sulla porta 8080 visitando http://localhost:8080/ con un browser o altro client HTTP come arricciatura. La porta 5000 è probabilmente inutile in questo contesto, poiché le utilità della riga di comando della finestra mobile che possono accedere al registro non vengono attualmente eseguite in modo nativo su Windows o OSX.Per utilizzare il tuo registro docker privato, esegui qualcosa come questo sulla tua VM VOS di CoreOS:

docker tag eb62f9df0657 localhost:5000/myimage 
docker push localhost:5000/myimage