LoginSignup
3

More than 5 years have passed since last update.

CoreOS(Windows 10 + vagrant + VirtualBox) のインストール(プロキシ環境)

Last updated at Posted at 2017-09-20

はじめに

さくらの VPSCoreOS(Container Linux) を構築して遊んでいたのですが,私の環境が 22 番ポートすら閉じられていて,ブラウザ上の シリアルコンソール で作業するのが面倒になってきたので,ローカル環境でテストした後に,VPS に移すことにします.Windows 10 と銘打ってますが,vagrant なら同じ手順で問題ないと思います.毎度のことながら,私の備忘録代わりのメモになります.

前準備

Docker for Windows の方が手軽だと思うのですが,Hyper-V を有効にすると,VirtualBox が起動しないので,Vagrant + VirtualBoxCoreOS を利用します.

Vagrant のインストール

最新バージョンをインストールして,コマンドプロンプトから Plugin をインストールします.Proxy 環境なので,プロキシの設定をしてから作業します.(xxx.xxx.xxx.xxxpppp は. Proxy サーバの IP アドレスポート番号)

> set HTTP_PROXY=http://xxx.xxx.xxx.xxx:pppp
> set HTTPS_PROXY=http://xxx.xxx.xxx.xxx:pppp
> vagrant plugin install vagrant-winnfsd
> vagrant plugin install vagrant-ignition
> vagrant plugin list

VirtualBOX のインストール

最新バージョンをインストールします.

CoreOS

ひな型の取得

Git から Vagrantfile を取得します.

> cd ~/VMS
> git clone https://github.com/coreos/coreos-vagrant/ coreos
> cd coreos

Vagrantfile のファイルの編集

Vagrantfile を編集します.ここではメモリの変更と共有フォルダの設定をしています.IP アドレス の変更が必要なら適宜変更します.

Vagrantfile
$vm_memory = 2048
$shared_folders = {'./share' => '/home/core/share'}

CoreOS の設定ファイル

CoreOS の作成時(vagrant up)に,Proxy の設定を適用するために,config.ing を作成します

config,ign
{
  "ignition": {
    "version": "2.0.0",
    "config": {}
  },
  "storage": {
    "files": [
      {
        "filesystem": "root",
        "path": "/etc/profile.d/proxy.sh",
        "contents": {
          "source": "data:,export%20http_proxy%3Dhttp%3A%2F%2Fxxx.xxx.xxx.xxx%3Apppp%0Aexport%20https_proxy%3Dhttp%3A%2F%2Fxxx.xxx.xxx.xxx%3Apppp%0Aexport%20ALL_PROXY%3Dhttp%3A%2F%2Fxxxx.xxxx.xxxx.xxxx%3Apppp",
        "verification": {}
         },
        "mode": 420,
        "user": {},
        "group": {}
      }
    ]
  },
  "systemd": {
    "units": [
      {
        "name": "docker.service",
        "enable": true,
        "dropins": [
          {
            "name": "http-proxy.conf",
            "contents": "[Service]\nEnvironment=\"HTTP_PROXY=http://xxxx.xxxx.xxxx.xxx:pppp\""
          }
        ]
      }
    ]
  },
  "networkd": {},
  "passwd": {}
}

CoreOS の起動

コマンドプロンプトから CoreOS を作成する.(~/VMS/coreos で作業)
(初回は,CoreOS のダウンロードなどするのでしばらく時間がかかります.)

> vagrant up

起動がおわったら,vagrant ssh で接続できるか確認します.無事接続できたら,vagrant ssh は使いずらいので,MSYS2SSH から利用できるようにします.

Msys2 のターミナルを立ち上げる.

$ alias vagrant='/Pathto/vagrant/bin/vagrant' (vagrant.exe の場所)
$ cd ~/VMS/coreos
$ vagrant ssh-config >> ~/.ssh/config
$ ssh core-01 (設定を変えていない場合)

おそらく,接続できるようになります.

docker-compose のインストール

取り敢えず,入れておきます.

$ sudo mkdir -p /opt/bin
$ sudo -E curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /opt/bin/docker-compose
$ sudo chmod +x /opt/bin/docker-compose

bash の入力補完の設定

docker container / image コマンド新旧比較 にまとめられてますが,コマンド体系が変更されたので補完できるようにします.

toolbox を使用して設定すのですが,dnf が環境変数を見てくれないようなので,toolbox/etc/dnf/dnf.confProxy の設定を追加しています.

% toolbox
# vi /etc/dnf/dnf.conf
# exit
dnf.conf
proxy=http://xxx.xxx.xxx.xxx:pppp
$ cd ~
$ toolbox dnf -y install bash-completion
$ toolbox cp /usr/share/bash-completion /media/root/var/ -R
$ sudo -E curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker -o /var/bash-completion/completions/docker
$ sudo -E curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /var/bash-completion/completions/docker-compose
$ source /var/bash-completion/bash_completion
$ cp $(readlink .bashrc) .bashrc.new && mv .bashrc.new .bashrc
$ echo "source /var/bash-completion/bash_completion" >> ~/.bashrc

その他

コンテナには,Proxy の設定はされないので,docker run --env=HTTP_PROXY=${HTTP_PROXY} ... とか.docker build --build-arg HTTP_PROXY=${HTTP_PROXY} . とするといいかもしれません(Dockerfile reference).

2017/09/22 追記
NO_PROXY も追加しておく方がいいかもしれません.私は,bash の補完設定で,.bashrc をホームディレクト(/home/core) に持ってきたので,/~/.bashrc に追記しました.

~/.bashrc
export no_proxy="127.0.0.1,localhost,172.17.8.101"

172.17.8.101 は eth1IP アドレス です.
ここまで

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3