DockerのUbuntu18.04で遊ぶ

# はじめに

業務でAWSとか利用しているとCentOSやらUbuntuやらLinuxなEC2に触れることがあるかと思います。
Windowsを慣れ親しんでいた筆者は、正直言うと触るの怖いんです。
なぜ触るのが怖いのかを考えたところ、圧倒的にLinuxに触れている時間が少ないんです。
そこで、少しでも恐怖を克服しようと思いました。
しかし、LinuxOSを積んだPCなんて手元にありません。
AWSでEC2借りれば良くね？とも思いましたが個人用のAWSアカウント持っていませんし、
AWS良く分からないから変なことしまくって課金とかされたら怖いです。
手軽にやりたいです。。。

そこで思いついたのが、**Windows上のDockerでUbuntu18.04を触る**です。

※ Ubuntuの本格的な初期設定や使い方とかを紹介する記事ではありません。
※ ようはDockerを使いたかっただけです。

## 作業環境

```
OS: Windows 10 Pro
Docker: 19.03.2
```

## 紹介する技術
- Chocolatey
- Docker for Windows

# Dockerの準備
まずは、Dockerを入れます。
**※下記で紹介する導入例はWindows 10 Proのものになります。Windows 10 homeとは手順が異なります。**

Windows上でのDockerの導入は色々やり方があります。
ちゃんと[インスト―ラ](https://docs.docker.com/docker-for-windows/install/)をダウンロードして設定していくほうが安全かもしれませんが、
面倒くさがりな筆者は**Windows OS向けのパッケージマネージャツール**の`Chocolatey`を使いました。
`Chocolatey`があれば、Windowsで使用するようなソフトウェアを楽に管理出来ておすすめです。
`choco install xxx`みたいな感じで色々入れることが出来てしまいます。
`Node.js`でいうところの`npm`みたいなやつですね！
`Chocolatey`のインストールはコマンドプロンプトを管理者権限で開いて、下記のコマンドを実行したらいけました。

```cmd(管理者)
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
```

無事に`Chocolatey`のインストールが終わったら、再びコマンドプロンプトを管理者権限で開き直して、下記のコマンドでDockerをいれます。

```cmd(管理者)
choco install -y docker-for-windows docker-desktop
```

Dockerのインストールはこれで終わりです。
Docker fow Windowsを使うときは`Hyper-v`という仮想化システムを有効にする必要があります。
コントロールパネル→windowsの機能の有効化から`Hyper-V`を有効化にしましょう！

# Ubuntu 18.04をDockerで導入しよう

ではDockerを使ってUbuntu 18.04を導入したいと思います。

```
# Ubuntu18.04のイメージをPullする
PS C:\Users\user\Desktop> docker pull ubuntu:18.04
# PullしたUbuntu18.04から名前をつけてコンテナを作成して起動する
PS C:\Users\user\Desktop> docker run -d -it --name="sample-1" ubuntu:18.04
b1161cc5a712a5c5ec0a233125b2caa7aee6fd099d723d5ff31c1d19174bcb94
# 作成したコンテナにbashで入る
PS C:\Users\user\Desktop> docker exec -it sample-1 bash
root@b1161cc5a712:/# 
# コンテナから抜け出す時は上記の状態で「exit」と入力してEnterします。
```
これだけです。これでUbuntu18.04で気軽に遊ぶ事ができます。
遊び終わったコンテナは下記のように気軽に削除もできます。

```
# コンテナを止めて削除
PS C:\Users\user\Desktop> docker stop b1161cc5a712a5c5e
PS C:\Users\user\Desktop> docker rm b1161cc5a712a5c5e
```

dockerコマンドやコマンドオプションについての詳細等は[リファレンス](http://docs.docker.jp/engine/reference/commandline/index.html)を見ればすぐ分かります。

# 試しに遊んでみる

ではコンテナの中に入って遊んでみます。

## Userを追加してみる

```
# ディレクトリの確認してみる
root@b1161cc5a712:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# Userがいないのでhome直下にはディレクトリがない
root@b1161cc5a712:/# ls home  # まだ空
# Userを追加
root@b1161cc5a712:/# adduser ubuntu
Adding user `ubuntu' ...
Adding new group `ubuntu' (1000) ...
Adding new user `ubuntu' (1000) with group `ubuntu' ...
Creating home directory `/home/ubuntu' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:        # passwordを入力
Retype new UNIX password:       # passwordを再度入力
passwd: password updated successfully
Changing the user information for ubuntu
Enter the new value, or press ENTER for the default    # ネーム等の設定
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
# home直下にubuntuが出来上がっている
root@b1161cc5a712:/# ls home/
ubuntu
# Userを削除してみる(home直下のディレクトリごと)
root@b1161cc5a712:/# deluser ubuntu --remove-home
/usr/sbin/deluser: In order to use the --remove-home, --remove-all-files, and --backup features,
you need to install the `perl' package. To accomplish that, run
apt-get install perl.
# perlパッケージが無いと怒られてしまいました。
# パッケージのアップグレードをしてperlをインストールしてみる
root@b1161cc5a712:/# apt update && sudo apt upgrade -y # けっこう時間かかります
root@b1161cc5a712:/# apt-get install perl
# こんどこそユーザを削除
root@b1161cc5a712:/# deluser ubuntu --remove-home
root@be9946bbfde3:/# ls home # ubuntuディレクトリがなくなりました。

```

以上になります。
業務には役に立ちませんが、Ubuntu18.04を勉強するのにはちょうど良いかもしれませんね！