文件结构
.
|--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 |