はじめに
さくらの VPS
で CoreOS(Container Linux)
を構築して遊んでいたのですが,私の環境が 22
番ポートすら閉じられていて,ブラウザ上の シリアルコンソール
で作業するのが面倒になってきたので,ローカル環境でテストした後に,VPS
に移すことにします.Windows 10
と銘打ってますが,vagrant
なら同じ手順で問題ないと思います.毎度のことながら,私の備忘録代わりのメモになります.
前準備
Docker for Windows
の方が手軽だと思うのですが,Hyper-V
を有効にすると,VirtualBox
が起動しないので,Vagrant + VirtualBox
で CoreOS
を利用します.
Vagrant のインストール
最新バージョンをインストールして,コマンドプロンプトから Plugin
をインストールします.Proxy
環境なので,プロキシの設定をしてから作業します.(xxx.xxx.xxx.xxx
と pppp
は. 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 アドレス
の変更が必要なら適宜変更します.
$vm_memory = 2048
$shared_folders = {'./share' => '/home/core/share'}
CoreOS の設定ファイル
CoreOS
の作成時(vagrant up
)に,Proxy
の設定を適用するために,config.ing
を作成します
{
"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
は使いずらいので,MSYS2
の SSH
から利用できるようにします.
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.conf
に Proxy
の設定を追加しています.
% toolbox
# vi /etc/dnf/dnf.conf
# exit
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
に追記しました.
export no_proxy="127.0.0.1,localhost,172.17.8.101"
172.17.8.101
は eth1
の IP アドレス
です.
ここまで