Virtual Box & Vagrant
今回はVirtual BoxのインストールとVargrantの導入を実施。
Vritual BoxはOracleのサイトよりダウンロード
VargrantについてもVargrantよりダウンロード
使う機会が多いので、CentOSの仮想マシンを構築することにしました。
利用するイメージは下記から
Discover Vagrant Boxes - Vagrant Cloud
Vagrantは初めての利用ですが、Virtual boxをHyper Visorにしたコントローラという感触ですね。
仮想マシンの構築については、上記のDiscover Vargrant Boxes からVirtual box向けのCentOS8を取得。大まかな流れを事前に下記のブログで確認。
VagrantのBOXについて解説 | とあるSEのテックブログ
実施するオペレーションはvargrant cloud -> Centos/8のNewにあるオペレーションを実施。具体的には下記。
vagrant init centos/8
vagrant up
Vagrant box centos/8 - Vagrant Cloud
initをするとvargrantfileが出来上がりました。できたタイミングで上記リンクの記載と同じになっています。
Vagrant.configure("2") do |config|
config.vm.box = "centos/8"
end
最低限の設定と思われるため、そのままvargrant upを実施。
初回起動時、および2回目以降の起動時にrsyncのエラーが出ている。
初回起動時にcygwinのドライブパスでなんかしようとしている。
cygwinは導入していないのでそのせい?
%途中省略%
default: in which case you may ignore this message.
==> default: Rsyncing folder: /cygdrive/c/Users/UserName/ => /vagrant
There was an error when attempting to rsync a synced folder.
Please inspect the error message below for more info.
Host path: /cygdrive/c/Users/UserName/
Guest path: /vagrant
Command: "rsync" "--verbose" "--archive" "--delete" "-z" "--copy-links" "--chmod=ugo=rwX" "--no-perms" "--no-owner" "--no-group" "--rsync-path" "sudo rsync" "-e" "ssh -p 2222 -o LogLevel=FATAL -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i 'C:/Users/UserName/.vagrant/machines/default/virtualbox/private_key'" "--exclude" ".vagrant/" "/cygdrive/c/Users/UserName/" "vagrant@127.0.0.1:/vagrant"
Error: rsync: [sender] send_files failed to open "/cygdrive/c/Users/UserName/NTUSER.DAT": Device or resource busy (16)
rsync: [sender] send_files failed to open "/cygdrive/c/Users/UserName/ntuser.dat.LOG1": Device or resource busy (16)
とりあえず、仮想マシンの起動までは完了。
以下のCLIのDocとキツネblogさんの記事を参照しながら、接続、停止、起動をおこなってみました。
【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説! | キツネの惑星
Command-Line Interface | Vagrant by HashiCorp
vagrantfileを更新すればホスト名やネットワーク設定を変更できると思いますが、その辺はもう少し情報を集めて実施してみます。
Dockerセットアップ
やったこと
1. Windows10 Home EditionへのDockerインストール
2. Tutorialの実施
3. Redmineコンテナの追加
1. Windows10 Home EditionへのDockerインストール
必要な作業
DockerのページからWindows用のインストーラーをゲット
インストーラー(2021/4/18時点)
Windows に Docker Desktop をインストール — Docker-docs-ja 19.03 ドキュメント
システム要件が記載されており、Homeエディションが対象に入っていないが実行しても特にエラーはなし。Homeエディションに過去仮想化(Hyper-Vなど)が実装されていなかったことに起因している模様。
Dockerのインストーラーを実行し、特に問題なくインストール完了。
自分の環境がWSL2をすでにインストール済みだったので、その辺の制約もなかった可能性がある。
参照:
Windows 10 HomeへのDocker Desktop (ver 3.0.0) インストールが何事もなく簡単にできるようになっていた (2020.12時点) - Qiita
2. Tutorialの実施
必要な作業
インストールが終了し、Dockerが立ち上がるとTutorialをするか出てくる。
その通りに実行すると開始される。
Tutorialのステップは4つ(記憶しているレベル)
docker イメージの入手
docker pullでgitからイメージor Repositoryをとる
docker copy でコピーする。
docker のイメージをビルド
docker build でイメージor Repositoryをビルド
docker runでコンテナ作成とスタート
docker run でコンテナ名の設定、コンテナのportマッピングを行う。
コンテナ内の待ち受けポートとlocalhostのポートのマッピングを-pで指定。
これをしないとlocalhost:80とかのアクセスができない。
redmineのjust start に従ってやると、ここの指定がないからアクセスできずに苦しんだ。
docker hubへのイメージアップロード
アカウント作成をする
docker pushでTutorialのイメージをdocker hubにアップロード
docker --helpでコマンドのヘルプ見ながらの操作が良い。
docker runしたら、docker ps -aでコンテナ一覧を参照
起動失敗してたら、exitコードが0以外になってる。
docker psで見るとstartされてるコンテナが見える。startしてないと見えない。
docker stopでコンテナ停止。docker rmでコンテナ自体を削除という流れのよう。
参照:だいたいここに書いてる内容をやる。この内容のほうが難しい。
イメージの構築と実行 — Docker-docs-ja 19.03 ドキュメント
3. Redmineコンテナの追加
docker hubの検索窓で"redmine"で検索
https://hub.docker.com/_/redmine
コマンド:docker pull redmineが出てるので、それをコピって実行。
上記サイトのHow to use this imageを参照してそのまま実行。
動作確認とoperation練習のため、sqlight3版でやる。
コンテナ内のファイルにのみ記録されるから、永続的な利用の場合はDBを使うほうにするのが望ましいと思う。あくまでお試し。
docker runで開始するとき、自端末からアクセスするために-pの設定を忘れずに。
上記サイトにも後半でport mappingに記載はされているが、なかなか気づかず。
docker run -d --name some-redmaine -p 3000:3000 redmine
ヘルプにも記載あるけど、オプション指定はイメージ名(redmine)の前に入れる。
エラーなく実行出来たら、docker ps で確認。表示されればOK。
portsカラムに0.0.0.0:3000 -> 3000/tcpって出てればマッピングもOK
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d018f816103c redmine "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:3000->3000/tcp some-redmine
ブラウザでhttp://localhost:3000でredmineの画面が出てくることを確認
こんな感じです。