mirror of
https://codeberg.org/scottslowe/learning-tools.git
synced 2026-03-11 09:04:37 +00:00
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:
parent
d91ac8af96
commit
6eb8030990
6 changed files with 148 additions and 0 deletions
66
centos-atomic/docker-tcp/Vagrantfile
vendored
Normal file
66
centos-atomic/docker-tcp/Vagrantfile
vendored
Normal 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
|
||||
13
centos-atomic/docker-tcp/docker-socket.conf
Normal file
13
centos-atomic/docker-tcp/docker-socket.conf
Normal 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
|
||||
10
centos-atomic/docker-tcp/docker-tcp.socket
Normal file
10
centos-atomic/docker-tcp/docker-tcp.socket
Normal 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
|
||||
12
centos-atomic/docker-tcp/docker.socket
Normal file
12
centos-atomic/docker-tcp/docker.socket
Normal 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
|
||||
12
centos-atomic/docker-tcp/machines.yml
Normal file
12
centos-atomic/docker-tcp/machines.yml
Normal 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"
|
||||
35
centos-atomic/docker-tcp/setup.sh
Executable file
35
centos-atomic/docker-tcp/setup.sh
Executable 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
|
||||
Loading…
Reference in a new issue