fleet
Vagrant | Docker |
---|---|
$ vagrant up | $ docker run |
$ vagrant halt | $ docker stop |
$ vagrant destroy | $ docker rm |
$ vagrant ssh | $ docker exec |
$ vagrant box add | $ docker pull |
$ vagrant box list | $ docker images |
$ vagrant push | $ docker push |
$ vagrant package | $ docker package |
$ vagrant global-status | $ docker ps -a |
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
end
FROM busybox
ENV foo /bar
WORKDIR ${foo} # WORKDIR /bar
ADD . $foo # ADD . /bar
COPY \$foo /quux # COPY $foo /quux
$ vagrant init ubuntu/trusty64
$ vagrant box list
$ vagrant up # power on
$ vagrant halt # power off
$ vagrant destory # delete image
$ vagrant ssh
$ # or
$ ssh -p 2222 vagrant@localhost # password: vagrant
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080
end
config.vm.box = "ubuntu/trusty64"
config.vm.network "public_network", ip: "192.168.1.2"
config.vm.provision "shell",
run: "always",
inline: "route add default gw 192.168.1.1"
config.vm.hostname = "docker-host"
config.vm.provision "docker"
# Step 1: clone vagrant file
$ git clone https://github.com/coreos/coreos-vagrant
$ cd coreos-vagrant
# Step 2: Edit user-data
$ cp user-data.template user-data
$ vim user-data
# Step 3: Edit config.rb
$ cp config.rb.template config.rb
$ vim config.rb
#cloud-config
coreos:
etcd2:
discovery: https://discovery.etcd.io/{token}
advertise-client-urls: http://$public_ipv4:2379
initial-advertise-peer-urls: http://$private_ipv4:2380
listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
listen-peer-urls: http://$private_ipv4:2380,http://$private_ipv4:7001
fleet:
public-ip: "$public_ipv4"
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
curl -w "\n" 'https://discovery.etcd.io/new?size=3'
# cluster instance
$num_instances=3
# tocken
$new_discovery_url="https://discovery.etcd.io/new?size=#{$num_instances}"
# docker expose port to localhost
$expose_docker_tcp=2375
# Customize VMs
$vm_gui = false
$vm_memory = 1024
$vm_cpus = 1
$ vagrant up
$ vagrant ssh core-01
$ vagrant ssh core-02
$ vagrant ssh core-03
[Unit]
Description=MyApp
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c \
"trap 'exit 0' INT TERM; while true; do echo Hello World; sleep 1; done"
ExecStop=/usr/bin/docker stop busybox1
[Unit]
Description=My Apache Frontend
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill apache1
ExecStartPre=-/usr/bin/docker rm apache1
ExecStartPre=/usr/bin/docker pull coreos/apache
ExecStart=/usr/bin/docker run --rm --name apache1 -p 80:80 \
coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
ExecStop=/usr/bin/docker stop apache1
[X-Fleet]
Conflicts=apache@*.service
$ fleetctl list-machines
$ fleetctl list-units
$ fleetctl start app.service
$ fleetctl list-units
$ fleetctl start apach@*.service
$ fleetctl list-units