文件结构
.
|--bootstrap.sh
|--Vagrantfile
该代码用于安装一个centos虚拟机,并安装Docker
#!/usr/bin/env bash | |
# install required package | |
sudo yum install -y yum-utils \ | |
device-mapper-persistent-data \ | |
lvm2 | |
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | |
yum makecache fast | |
# install docker | |
yum install -y docker-ce docker-ce-cli containerd.io | |
# install docker-compose https://docs.docker.com/compose/install/ | |
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > docker-compose | |
mv docker-compose /usr/local/bin/docker-compose | |
chmod +x /usr/local/bin/docker-compose | |
# add vagrant(user name) to docker group , get rights to vagrant | |
gpasswd -a vagrant docker | |
systemctl restart docker | |
# docker expose tcp socket | |
sudo tee /usr/lib/systemd/system/docker-tcp.socket <<-'EOF' | |
[Unit] | |
Description=Docker Socket for the API | |
[Socket] | |
ListenStream=2375 | |
BindIPv6Only=both | |
Service=docker.service | |
[Install] | |
WantedBy=sockets.target | |
EOF | |
# run docker as startup service | |
systemctl enable docker-tcp.socket | |
systemctl stop docker | |
systemctl start docker-tcp.socket | |
systemctl start docker | |
# other tools | |
yum install -y vim | |
yum install -y net-tools | |
# for timezone | |
timedatectl set-timezone Asia/Tokyo | |
yum install -y ntpdate | |
# Autocomplete of Docker Compose | |
# ref: https://docs.docker.com/compose/completion/ | |
yum install bash-completion bash-completion-extras | |
curl -L https://raw.githubusercontent.com/docker/compose/1.25.4/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose | |
Vagrant.configure("2") do |config| | |
config.vm.box = "centos/7" | |
# config.vm.network "public_network", ip: "192.168.0.180",bridge:"ens33" | |
config.vm.provision :shell, path: "bootstrap.sh" | |
config.vm.provision "shell",run: "always", inline: <<-SHELL | |
# hostname manager1 | |
systemctl start docker-tcp.socket | |
systemctl start docker | |
ntpdate asia.pool.ntp.org | |
SHELL | |
# synchronize folders (directories) | |
# before syn, you should install sshft by command "vagrant plugin install vagrant-sshfs" | |
# config.vm.synced_folder "Django", "/Django", type: "sshfs" | |
end |