やってみた ← 「VagrantとDockerについて名前しか知らなかったので試した」

# こちらの記事をやってみて、躓いたところを記載します (**2019.8.31**)
[VagrantとDockerについて名前しか知らなかったので試した](https://qiita.com/hidekuro/items/fc12344d36d996198e96)

環境：Windows 10 Home
筆者：Linux詳しくありません。Vagrant, Dockerについて名前しか知りませんでした。

---

Vagrant
#[3.1.4. VMの起動とSSHログイン](https://qiita.com/hidekuro/items/fc12344d36d996198e96#4-vm%E3%81%AE%E8%B5%B7%E5%8B%95%E3%81%A8ssh%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3)

>それではVMを起動してみましょう。

>```
>vagrant up
>```

→エラーが出る。

```
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.
```

####⇒解決法：よくエラーが出るみたいなので何回かリトライする
⇒あとは、別PCでやってみた時にVirtualBoxのインストールを忘れていたくらいでした。


---

Docker
# [3.2.4. Dockerイメージのビルド](https://qiita.com/hidekuro/items/fc12344d36d996198e96#4-docker%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89)

>それでは、作成したコンテナを起動してみます。
>
>```
vagrant@vagrant-ubuntu-trusty-64:/vagrant$ docker run -i -t -v /vagrant:/tmp/shared --name="hogehoge" hidekuro/my-bash
root@246dc5e41ffd:/#
```

→エラーが出る。

```
vagrant@vagrant-ubuntu-trusty-64:~$ docker run -i -t -v /vagrant:/tmp/shared --name="hogehoge4" cs8/my-bash
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process 
caused "process_linux.go:297: copying bootstrap data to pipe caused \"write init-p: broken pipe\"": unknown.
```

⇒**検索したところ、別のカーネルをインストールすると直るとのこと**

## 解決法１　別のカーネルをインストールする

https://github.com/docker/for-linux/issues/591#issuecomment-463337254

>install 4.4 lts kernel:
>>sudo apt-get install --install-recommends linux-generic-lts-xenial
>
>reboot into the newly installed kernel.


（１．現在のカーネル確認）

```
vagrant@vagrant-ubuntu-trusty-64:~$ uname -a
Linux vagrant-ubuntu-trusty-64 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
```

２．インストール

```
sudo apt-get install --install-recommends linux-generic-lts-xenial
```

３．再起動

```
vagrant@vagrant-ubuntu-trusty-64:~$ exit
PS ~\vm\hello-infra> vagrant reload
```

（４．操作後のカーネル確認）

```
vagrant@vagrant-ubuntu-trusty-64:~$ uname -a
Linux vagrant-ubuntu-trusty-64 4.4.0-148-generic #174~14.04.1-Ubuntu SMP Thu May 9 08:17:37 UTC 2019 x86_64 x86_64 
x86_64 GNU/Linux
```


## 解決法２　別バージョンのubuntuにする

Vagrantfileを書き換え、trustyからxenialにする

（Ubuntu 16.04 LTS (Xenial Xerus)）

```diff:Vagrantfile
 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
-  config.vm.box = "ubuntu/trusty64"
+  config.vm.box = "ubuntu/xenial64"
   config.vm.provider "virtualbox" do |v|
     v.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
   end
   config.vm.provision "docker"
end
```

この時行った方法は、別ディレクトリにコピーして最初から始めました。（`vagrant up`から）
`vagrant reload --provision`でできるのかは不明です。



---

# 躓いていないが、書き方を変えてみたところ

### １．MAINTAINERからLABELへ

VSCodeで`Dockerfile`を見てみると、警告が出ていました
![Dockerfile](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319886/25d0a8b6-4bbd-78b6-87ce-7cbccaacd8a5.png)

調査結果です
・Docker 1.13からMAINTAINERの使用が非推奨（deprecated）
・MAINTAINERの代わりにLABELを使う

https://qiita.com/okisanjp/items/a43068f956d273703ea8
http://docs.docker.jp/engine/userguide/labels-custom-metadata.html

書き換えました

```diff:Dockerfile
FROM ubuntu:trusty
+ LABEL maintainer="cs8"
- MAINTAINER cs8
CMD ["/bin/bash"]
```

# さいごに

コード
https://github.com/cscs8/hello-infra
https://github.com/cscs8/hello-infra2

こちらの記事書いてくださった方、ありがとうございます。
・[VagrantとDockerについて名前しか知らなかったので試した](https://qiita.com/hidekuro/items/fc12344d36d996198e96)

初投稿でQiitaもよくわからないため、ご意見・ご指摘どしどしお願いいたします。