※この記事の方法は古いため、新しい方法で書き直しました。
--
Dockerについて前々から気になっていたのでWindows10にDockerをいれてどんなものなのか体感するまでの
手順を書きたいと思います。Window10でやってますが、別にVirtualBoxが入ればWindows10でなくても問題ないです。
はじめに書いておきますが、わりと簡単に体感できます。
Linuxとかに慣れているひとであれば1hourくらいで体感できるのではないでしょうか。
- Dockerとは?
- Oracle VirtualBoxをインストール
- CentOSをダウンロード
- 仮想マシンを作成
- 仮想マシンを起動してCentOSをインストール
- RLoginをダウンロード
- RLoginでCentOSに接続
- Dockerをインストール
- Dockerを起動
- DockerでWEBサーバを構築
- WEBサーバの起動を確認
- DockerをGUIで操作
- 最後に
まず、基本的にDockerはLinux上で動作するものということなのでLinuxをVMにいれます。
Windows版もあるみたいですがHyper-Vとか必要っぽいので。
Dockerとは?
Dockerに興味があるひとがこの記事にたどり着いていると思うので説明不要だと思いますが、簡単に言えば仮想サーバ構築ツールです。
VMと異なるのはサーバごとにOSのインストールは不要で、1つのサーバ上に複数のサーバの構築ができます。
構築したサーバはイメージ化して配布できるので誰がやっても同じ環境が構築できます。
また、各種サーバアプリのイメージが公開されており、コマンド1つで構築可能です。
僕はインフラ周りはあまりやらないのですが、テスト環境構築とかで使えるのではないでしょうか。
Oracle VirtualBoxをインストール
VMはなんでもいいんですが、使い慣れているVirtualBoxをインストールします。
特に何も注意すべきところはないのでインストーラを次へ次へでOKです。
CentOSをダウンロード
Linuxもなんでもいいんですが、RedHat系で人気のあるCentOS 7をダウンロードします。
以下のサイトからMininal ISOをダウンロードしてください。
仮想マシンを作成
VirtualBoxを起動して、新規を選択し、名前にCentOSと入れるとOSが選択されます。
あとはそのまま次へ次へで仮想マシンを作成します。
作成した仮想マシンの設定でネットワークを"NAT"から"ブリッジアダプター"に変更します。
NATでもできなくないですが、ポートフォワードを設定するのがめんどいので。
ブリッジにし忘れると以下のように運が悪いとドハマリします。
仮想マシンを起動してCentOSをインストール
起動したらダウンロードしたISOを指定して、Install CentOS 7を選択します。
あとはGUIなので次へ次へですが、ネットワークはONにしといたほうがよいかもです。
インストール中にrootのパスワードを設定します。
環境にもよりますが、インストールは10minくらいで終わると思います。
再起動してログインできればOKです。
ログインしたら以下のコマンドをたたいてipアドレスを確認します。
以下の例でいうと2:のinetの右横のがipアドレス(10.154.54.86)です。
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:48:1e:42 brd ff:ff:ff:ff:ff:ff inet 10.154.54.86/24 brd 10.154.54.255 scope global noprefixroute dynamic enp0s3 valid_lft 5420sec preferred_lft 5420sec inet6 fe80::b4fc:2848:14de:b0ca/64 scope link noprefixroute valid_lft forever preferred_lft forever
RLoginをダウンロード
VirtualBoxだとカーソルが持ってかれて使いにくいのでWindowsからCentOSを操作できるように
ターミナルソフトをいれます。なんでもいいですが、インストール不要で使いやすいRLoginを使います。
以下のサイトからダウンロードして任意の場所に解凍します。
rlogin/telnet/ssh(クライアント)ターミナルソフト
RLoginでCentOSに接続
RLogin.exeを起動します。
新規接続でsshを選択して、さきほど確認したipアドレスをいれます。
あとはユーザをroot、パスワードを決めたやつをいれてOKします。
初回接続の際にいろいろ聞かれますが、はいでOK。
Dockerをインストール
いよいよDockerです。RLoginの画面で以下のコマンドを流すだけでインストールされます。
[root@localhost ~]# yum install -y docker
Dockerを起動
起動は以下のコマンドを実行するだけです。
[root@localhost ~]# systemctl start docker
起動しているか確認。active(running)になっていればOK。
[root@localhost ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since 月 2018-09-17 01:48:28 JST; 7s ago Docs: http://docs.docker.com Main PID: 10950 (dockerd-current) CGroup: /system.slice/docker.service ├─10950 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-pat... └─10954 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/... 9月 17 01:48:26 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:26.886529003+09:00" level=info msg="libcontainerd: new containerd process, pid: 10954" 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.049257313+09:00" level=info msg="Graph migration to content-addressability took 0.00 seconds" 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.050844195+09:00" level=info msg="Loading containers: start." 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.070560827+09:00" level=info msg="Firewalld running: true" 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.282047259+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0....IP address" 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.479554825+09:00" level=info msg="Loading containers: done." 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.523279502+09:00" level=info msg="Daemon has completed initialization" 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.523307835+09:00" level=info msg="Docker daemon" commit="6e3bb8e/1.13.1" graphdriver=overlay2 version=1.13.1 9月 17 01:48:28 localhost.localdomain systemd[1]: Started Docker Application Container Engine. 9月 17 01:48:28 localhost.localdomain dockerd-current[10950]: time="2018-09-17T01:48:28.538125695+09:00" level=info msg="API listen on /var/run/docker.sock" Hint: Some lines were ellipsized, use -l to show in full.
DockerでWEBサーバを構築
上記までの手順ではDockerのエンジンだけインストールされているのでこっから本領発揮のとこです。
apache webサーバを構築してみます。
Dockerは各種アプリのイメージが公式的に公開されており、そのイメージをダウンロードしてローカルサーバで動かす仕組みとなってます。
どんなイメージがあるかは以下のサイトで確認できると思いますが、RedmineやPostgreSQL、Jenkinsなどわりとなんでもあります。
https://hub.docker.com/explore/
なので以下のコマンドを流すだけで、構築ができてしまいます。
[root@localhost ~]# docker run -d -p 80:80 --name httpd httpd
起動したかは以下のコマンドで、httpdがいればOKです。
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3fc96caa505a httpd "httpd-foreground" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp httpd
WEBサーバの起動を確認
Windowsからブラウザを起動して、ipアドレスをアドレスバーにいれてたたくと さみしいapacheのサンプル画面がでれば起動しているということです。
DockerをGUIで操作
dockerですが、CUIで操作するのは結構たいへんです。
GUIで操作するツールも用意されています。
これもDockerでいれちゃいます。
[root@localhost ~]# docker run -d -p 8080:8080 --name rancher-server rancher/server
途中でファイアウォールが有効になっているうまくうごかないところがあるので切っておきます。
[root@localhost ~]# systemctl stop firewalld
起動後、Windowsの画面のブラウザからipアドレス:8080でアクセスすると以下の画面が表示されればOKです。
スペックによりますが、起動は1~2minくらいかかります。
デフォルトは英語ですが、右下のところで日本語に変更できます。
まず管理者メニューのアクセスコントロールでLOCALを選択し、管理者を登録します。
その次にインフラストラクチャでホストを選択します。
ホストを追加して保存します。
以下のコマンドをコピー&ペーストし実行しホストを登録します Rancher:と書いてあるのでコマンドをターミナルで流します。
こうすることでサーバとの紐づけ自動で行ってくれます。
# 内容は環境によって異なります。以下は私の環境での例です。 sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://10.154.54.86:8080/v1/scripts/06051ED6561D2F86C07A:1514678400000:UCPy9qbQ1dQ2KCue0CLu076A
あとはホストの画面で見れば、Dockerで動いているもの(コンテナ)が確認できます。
最後に
まだまだ奥が深いDockerですが、ここまでなんとなくDockerについて手軽な感じが伝わったかと思います。
僕もまだまだ勉強中ですが、素敵なDockerライフを。