実践記録9
前回までVagrnatとAnsibleを使ってIaCっぽい事をしてきましたが、
今回は少し路線を変えてDockerを使ってみたいと思います。
世の中的には今更って思われるのかもしれませんが、
AWS等のクラウドでコンテナをいじる前に仮想環境で経験を積んでみたいと思います。
Dockerインストール環境の準備
まずはDockerをインストールする為の仮想環境を用意します。
今回は以下の様なVagrantfileを使ってVirtualBoxに仮想マシンを1台たてることにします。
Boxの指定とサーバの作成の定義だけでも良いのですが、
ここまでの実践記録で培った経験を元にDNSやyumタイムアウト設定を入れています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Vagrant.configure("2") do |config| # boxの指定 config.vm.box = "centos/7" # DNS設定 config.vm.provision "shell", inline: <<-'SHELL' sed -i -e '/^\[main\]$/a dns=none' /etc/NetworkManager/NetworkManager.conf systemctl restart NetworkManager wait echo -e 'nameserver 8.8.8.8\nnameserver 8.8.4.4' >> /etc/resolv.conf SHELL # yumタイムアウト設定 config.vm.provision "shell", inline: <<-'SHELL' echo -e 'timeout=60' >> /etc/yum.conf SHELL # 共通パッケージインストール config.vm.provision "shell", inline: <<-'SHELL' yum -y install epel-release SHELL # 実験用サーバの作成 config.vm.define :pra do |server| server.vm.hostname = "pra" server.vm.network "private_network", ip: "192.168.33.20" server.vm.synced_folder "./sync", "/vagrant_data",type:"virtualbox" end end |
DNS設定はVagrantで構築したサーバのデフォルトのDNS設定だと名前解決ができず、
エラーとなることがあるのでGoogleの公開DNSの設定を追加しています。
yumタイムアウト設定については、
重めのファイルをインストールする時にyumコマンドがタイムアウトしないように時間を延ばす為の設定です。
vagrant upコマンドで仮想サーバをたてます。
Dockerのインストール
Dockerdocsというサービス上で使用する環境ごとにDockerのインストール方法を解説してくれています。
今回はcentOSを準備しましたので、
以下のサイトの手順に沿って実践してみたいと思います。
まずは以下の2つのコマンドでdockerをインストールする為の準備をします。
sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
その後以下のコマンドでdockerをインストールします。
ついでにサーバ起動時にdockerも起動されるようにします。
sudo systemctl enable docker
直接runコマンドを実行してコンテナイメージの取得と実行を同時に行うこともできます。
権限は反映されないようなので注意してください。(軽くはまりました)
今度はnginxのコンテナを起動してみたいと思います。
-dオプションはコンテナをバックグラウンドで実行、-pオプションはコンテナのポートとホストのポートをマッピングします。
以下の通りnginxが稼働していることが分かります。
vagrantfileを以下の様に修正しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | Vagrant.configure("2") do |config| # boxの指定 config.vm.box = "centos/7" # 仮想マシン間公開鍵認証設定 config.ssh.insert_key = false config.vm.provision "file", source: "~/.vagrant.d/insecure_private_key", destination: "/home/vagrant/.ssh/id_rsa" config.vm.provision "shell", privileged: false, inline: <<-SHELL chmod 600 $HOME/.ssh/id_rsa SHELL # DNS設定 config.vm.provision "shell", inline: <<-'SHELL' sed -i -e '/^\[main\]$/a dns=none' /etc/NetworkManager/NetworkManager.conf systemctl restart NetworkManager wait echo -e 'nameserver 8.8.8.8\nnameserver 8.8.4.4' >> /etc/resolv.conf SHELL # yumタイムアウト設定 config.vm.provision "shell", inline: <<-'SHELL' echo -e 'timeout=60' >> /etc/yum.conf SHELL # 共通パッケージインストール config.vm.provision "shell", inline: <<-'SHELL' yum -y install epel-release SHELL # 実験用サーバの作成 config.vm.define :pra do |server| server.vm.hostname = "pra" server.vm.network "private_network", ip: "192.168.33.20" server.vm.synced_folder "./sync", "/vagrant_data",type:"virtualbox" server.vm.provision "shell", inline: <<-'SHELL' yum -y install yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum -y install docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker usermod -aG docker vagrant SHELL end end |
続きは以下の記事になります!
実践記録10遂に実践記録も10記事目!二桁に到達しました!!最新技術にはまだまだ追いつけていませんが、順調に経験を積めていると自分では思っています。もうしばらくは広く浅く様々な技術に触れていきたいと思います。実践記録[…]
コメントを書く