Virtual Box & Vagrant

今回はVirtual BoxのインストールとVargrantの導入を実施。

 

Vritual BoxはOracleのサイトよりダウンロード

 

VargrantについてもVargrantよりダウンロード

Vagrant by HashiCorp

 

使う機会が多いので、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:3000redmineの画面が出てくることを確認

 

こんな感じです。