Add learning environment for customizing Docker on CentOS Atomic Host

Add Vagrantfile, YAML data file, and systemd unit files to customize Docker (listen on TCP socket) on CentOS Atomic Host

Signed-off-by: Scott Lowe <scott.lowe@scottlowe.org>
This commit is contained in:
Scott Lowe 2017-02-17 16:33:46 -07:00
parent d91ac8af96
commit 6eb8030990
No known key found for this signature in database
GPG key ID: 949F43F6E6C11780
6 changed files with 148 additions and 0 deletions

66
centos-atomic/docker-tcp/Vagrantfile vendored Normal file
View file

@ -0,0 +1,66 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Specify minimum Vagrant version and Vagrant API version
Vagrant.require_version '>= 1.6.0'
VAGRANTFILE_API_VERSION = '2'
# Require 'yaml' module
require 'yaml'
# Read YAML file with VM details (box, CPU, and RAM)
machines = YAML.load_file(File.join(File.dirname(__FILE__), 'machines.yml'))
# Create and configure the VMs
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Always use Vagrant's default insecure key
config.ssh.insert_key = false
# Iterate through entries in YAML file to create VMs
machines.each do |machine|
config.vm.define machine['name'] do |srv|
# Don't check for box updates
srv.vm.box_check_update = false
srv.vm.hostname = machine['name']
# Use VMware box by default
srv.vm.box = machine['box']['vmw']
# Configure default synced folder (disable by default)
if machine['sync_disabled'] != nil
srv.vm.synced_folder '.', '/vagrant', disabled: machine['sync_disabled']
else
srv.vm.synced_folder '.', '/vagrant', disabled: true
end #if machine['sync_disabled']
# Iterate through networks as per settings in machines.yml
machine['nics'].each do |net|
if net['ip_addr'] == 'dhcp'
srv.vm.network net['type'], type: net['ip_addr']
else
srv.vm.network net['type'], ip: net['ip_addr']
end # if net['ip_addr']
end # machine['nics'].each
# Configure CPU & RAM per settings in machines.yml (Fusion)
srv.vm.provider 'vmware_fusion' do |vmw|
vmw.vmx['memsize'] = machine['ram']
vmw.vmx['numvcpus'] = machine['vcpu']
if machine['nested'] == true
vmw.vmx['vhv.enable'] = 'TRUE'
end #if machine['nested']
end # srv.vm.provider 'vmware_fusion'
# Configure CPU & RAM per settings in machines.yml (VirtualBox)
srv.vm.provider 'virtualbox' do |vb, override|
vb.memory = machine['ram']
vb.cpus = machine['vcpu']
override.vm.box = machine['box']['vb']
vb.customize ['modifyvm', :id, '--nictype1', 'virtio']
vb.customize ['modifyvm', :id, '--nictype2', 'virtio']
end # srv.vm.provider 'virtualbox'
end # config.vm.define
end # machines.each
end # Vagrant.configure

View file

@ -0,0 +1,13 @@
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd-current -H fd:// \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY

View file

@ -0,0 +1,10 @@
[Unit]
Description=TCP Socket for the Docker API
[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service
[Install]
WantedBy=sockets.target

View file

@ -0,0 +1,12 @@
[Unit]
Description=UNIX Socket for the Docker API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target

View file

@ -0,0 +1,12 @@
---
- box:
vmw: "bento/centos-7.1"
vb: "centos/atomic-host"
name: "atomic-01"
nested: false
nics:
- type: "private_network"
ip_addr: "dhcp"
ram: "512"
sync_disabled: true
vcpu: "1"

View file

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Stop docker.service
sudo systemctl stop docker.service
# Make drop-in directory
if [ ! -d "/etc/systemd/system/docker.service.d" ]; then
sudo mkdir -p /etc/systemd/system/docker.service.d
fi
# Copy docker.socket into place
if [ -f "/home/vagrant/sync/docker.socket" ]; then
sudo cp /home/vagrant/sync/docker.socket /etc/systemd/system/
fi
# Copy docker-tcp.socket into place
if [ -f "/home/vagrant/sync/docker-tcp.socket" ]; then
sudo cp /home/vagrant/sync/docker-tcp.socket /etc/systemd/system/
fi
# Copy docker.service drop-in into place
if [ -f "/home/vagrant/sync/docker-socket.conf" ]; then
sudo cp /home/vagrant/sync/docker-socket.conf /etc/systemd/system/docker.service.d/
fi
# Add docker group
sudo groupadd docker
# Reload
sudo systemctl daemon-reload
# Restart services
sudo systemctl start docker.socket
sudo systemctl start docker-tcp.socket
sudo systemctl start docker.service