ドッカー。何回か使ったことはあるんですが、なんだかイマイチ使いこなせてる気がしなくて、記事にまとめながら勉強したいと思います。ちなみに、Windows10にインストールする前提で進めていきますね。
Dockerってなに?
ユーザー目線でざっくりいうと、Dockerを起動していれば、その上に環境構築済のOS入りディスクイメージを沢山展開できるというものです。
VirtualBox等の仮想サーバーと似てますが、Dockerの方が起動が早く、使い捨てにできるイメージですね。
起動するディスクイメージのことを、コンテナと呼びます。
下のdockerロゴみたいに、コンテナを沢山積んだクジラ、これを想像してもらえば、dockerの印象がなんとなくわかるのでは、と思います。
- Dockerってなに?
- インストール・起動
- Dockerイメージを入手する
- docker imageの起動・ログイン
- Dockerから抜ける・停止する
- 停止したDockerを起動する
- とりあえず最低限の動きはできるようになった
インストール・起動
まずは、Dockerのインストールから。以下のリンクからインストーラーがダウンロードできます。ユーザー登録が必要なのが玉にキズですね。
Get Started with Docker | Docker
インストール後、スタートアップに自動で登録されます。結構リソースを食うので、必要な時だけ起動したいので、「タスクマネージャー>スタートアップ」で状態を「無効」にしました。
ちなみに、無効にした場合は、今後Dockerを使う時は当たり前ながら、起動が必要になります。WIndowsでdocker等と打てば、カンタンに見つかるはずなので、これを起動しましょう。
起動すると、デスクトップ右下にポップアップウインドウがでてきました。なんだかコマンドを解説してくれたりします。
さて、コマンドプロンプトで「docker」と打って、何か反応があれば無事起動しています。
Dockerイメージを入手する
さて、Dockerを起動できたら、イメージを入手しましょう。
事前に色んなアプリが使えるようにセッティングされたイメージがあって便利です。
以下のDocker Hubのページからイメージをダウンロードできます。
https://hub.docker.com/explore/
こんな感じで色んなイメージを選択できます。
今回はcentosにしてみます。
ダウンロードはdocker pullコマンドで行います。
各イメージのページの右側に、ダウンロードコマンドが書いてありますので、この通りやればOKです。
そうすると、ダウンロードが無事進むと思います。
完了したら、「docker images」コマンドで、ちゃんと追加されたか確認できます。
docker imageの起動・ログイン
さて、ダウンロードしたイメージを起動しましょう。
「docker run -itd centos」で起動できます。
「-it」オプションは、dockerを操作するために必要なオプションです。
「-d」オプションは、バックグラウンドで実行って意味です。
「docker ps」コマンドで、起動しているか確認しましょう。
変な名前がついています。今回は「hopeful_meninsky」。希望的なmeninsky?なんじゃそれ。
これをメモっておいて、、「docker attach hopeful_meninsky」でcentosのコンソールに入れます。パチパチ^^
Dockerから抜ける・停止する
Dockerから抜けるときは、ctrl+P、ctrl+Qで抜けてください。
一方、exitすると、そのDockerコンテナは停止します。
停止したDockerコンテナは、「ps -a」コマンドで確認できます。
停止したDockerを起動する
停止したDockerを起動するには「dcocker start コンテナID」で可能です。
先程、「ps -a」では、一番左に「CONTAINER ID」が載っていましたので、これを入れます。ちなみに、全桁入れる必要はなく、一意になれば3文字くらいでも大丈夫。
「docker attach」でまたコンテナに入れます。
ちなみに、exitでコンテナを停止しても、中身のデータは消えません。
実は、先程、centosのホームディレクトリに、「test.txt」というファイルを作っておいたのですが、ちゃんとあります。(下から4番目)
とりあえず最低限の動きはできるようになった
とりあえず、Dockerのインストール、イメージのダウンロード、コンテナの起動、停止といった、最低限の動きはこれまでの手順で出来るようになったと思います。
ただ、コンテナ起動しただけだと意味ないので、本格的に使えるように、今後も色々と調べていきたいと思います。
それはまた別の記事にて。