前置き
「マンガで分かるDocker①」を実践したいと思います。
(ぼちぼち技術書典で手に入れた本たちを実践紹介していけたらいいなと思っています。)
では、始めます!
マンガで分かるDockerとは?
こちらの技術書は、知っている方も多いと思います。有名な「わかばちゃんシリーズ」の方の技術書です。
研修中にわかばちゃんシリーズを知り、gitやsourcetreeの使い方など、大変お世話になりました。
Dockerとは?
「コンテナ型の仮想環境を作ったり、配布したり、実行してくれるもの」
というざっくりとした理解をしました。
マンガでは「パソコン上でファミコンが動くみたいなもの」と説明があったのですが、
ファミコンしたことないのでちょっとイメージが付かなかった・・・。
コンテナ型の仮想環境なんだな、ということですね。
Dockerを使うことのメリット
- 自分の環境が汚れない
- いつでも同じ環境を立ち上げられる
開発に合わせてバージョンを揃えたり環境整えたりするの、すっごい大変だなと感じていたので、すごく便利だなと感じました。
また、Aさんの環境なら動くけど、私の環境だとなんか違う…みたいなことも起きないので便利だなと感じました。
同じ環境で開発してほしいから、このコンテナインストールしておいてーってことができるのかな、というイメージでした。
いざ実践
インストール
こちらのサイトからインストールをしてきました。
ちゃんとインストールができたのか確かめるために、
$ docker version
を叩くと、Client情報やServer情報のようなものが。インストールは成功したようです!
イメージをDocker Hubからpull
マンガではhello-worldというイメージを例に挙げていたので同じように
$ docker run hello-world
を叩きました。これでpullできるはず・・・!!
と思いきや、何かエラー!なんで!
Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password.
See ‘docker run --help’.
まず1行目のエラー。これはローカルにhello-worldっていう名前のイメージが見つからなかったよという意味。それはその通りなのでここはスルーです。
2行目以降のメッセージを検索したところ、どうやらDockerにログインしないといけないようです。
$ docker login
このコマンドを叩いてログインをします。
この時に聞かれるUsernameはメールではなくIDです。
なんとなくこれかな?と思われるIDとパスワードを入力したところ成功しました。
登録していたのかもしれませんし、もしかしたらここで適当につけてログインができるのかもしれません。ここはまた調べたいと思います。
再度runを実行したらpullに成功しました!!
$ docker run のしてくれたこと
- イメージの取得
- コンテナ生成
- コンテナ起動
つまり
$ docker pull
$ docker create
$ docker start
を一気に行ってくれたのです。
今回は勉強もかねて一つ一つ実行してみました。
マンガの例にあったalpine(アルパイン)をpullします。
$ docker pull alpine
$ docker create -it alpine
$ docker start 539
createコマンドについている -it オプションは、ターミナルでコンテナを実行できるようにしてくれるものらしいです。
start の後についている539という数字は、createしたときに割り振られたコンテナIDの頭3桁です。
コンテナIDすべてを入力せずとも、このように最初の文字を入力するだけで大丈夫なようです。
コンテナの中に入ろう
ここで少し問題です
① $ docker exec -it alpine bin/ash
② $ docker exec -it 539 bin/bash
③ $ docker exec -it 539 bin/ash
コンテナに入るためにはどのコマンドを入力したらよろしいでしょうか???
( ˊ̱˂˃ˋ̱ ) ・・・
( ˊ̱˂˃ˋ̱ ) ・・・
( ˊ̱˂˃ˋ̱ ) ・・・
( ˊ̱˂˃ˋ̱ ) ・・・答えは3です!
今回pullしてきたalpineはlinuxの軽量版らしいのですが、bashではなく、ashらしいです。
最初知らなくて、誤字では?なんて思ったりしてしまいました。
コンテナに入るためには、コンテナIDが必要なのですね。
ただし!!
$docker run -it alpine bin/sh
でも動きます。
ほかによく使うコマンド・ショートカット
$ docker images
今までにpullしてきたイメージ一覧を見れます。
$ docker ps
起動しているコンテナを確認できます。
-a オプションをつければ停止中のコンテナも表示してくれます。
$ docker rm 【コンテナID】
コンテナを削除するコマンドです。
$ docker stop 【コンテナID】
コンテナを停止するコマンドです。
コンテナから抜けるには、「 ctrl + P + Q 」です。
最後に
以上が私がマンガで分かるDocker①で学んだことです。
次回は②を実践したいと思います。
これからも頑張ります!