This time again some topics in one tutorial. We touch Vagrant with Shell provision (external script), Docker Remote API and something CentOS 7 configuration.
Preconditions
- Vagrant installed
Preparation
If you already have a CentOS 7 with Docker, you can skip these steps. Create a folder with the following 2 files…
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.require_version ">= 1.8.1" VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.define "centos" do |centos| centos.vm.box = "centos/7" centos.vm.network "public_network" centos.vm.synced_folder ".", "/vagrant", disabled: true centos.vm.provider "virtualbox" do |vb| vb.name = "Docker-Jenkins" vb.cpus = "2" vb.memory = "2048" end centos.vm.provision "shell", path: "provision.sh" end end
#!/usr/bin/env bash yum update -y && yum install -y epel-release vim tee /etc /yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF yum install -y docker-engine jq systemctl enable docker systemctl start docker
Instructions
# start VM via Vagrant $ vagrant up # SSH into VM via Vagrant $ vagrant ssh # check if API is enabled (optional) $ docker -H=tcp://127.0.0.1:4243 images
Now we edit docker.service file. The path may be different!
# find docker.service file $ systemctl status docker # edit docker.service $ vim /usr/lib/systemd/system/docker.service ... [Service] ExecStart= ExecStart=/usr/bin/docker daemon -H fd:// -D -H tcp://127.0.0.1:4243 ... # reload and restart docker service $ systemctl daemon-reload && systemctl restart docker # test docker API again $ docker -H=tcp://127.0.0.1:4243 version
Note: Be careful if you use tcp://0.0.0.0:4243 !!!!
# some tests with curl and jq on Docker Remote API $ curl -X GET http://127.0.0.1:4243/version | jq . $ curl -X GET http://127.0.0.1:4243/info | jq .DriverStatus $ curl -X GET http://127.0.0.1:4243/networks | jq '.[0]'
Read the manual of jq, the power of curl and jq together is awesome.