Help us understand the problem. What is going on with this article?

Docker超入門

業務でも使わないし、ちょっと興味あるけど何かよく分からないけど触ってみたい人向けです。
私自身それなので備忘録として記載します。

1.Dockerをインストールしよう

下記サイトからダウンロードするのですが意味わからないですね。。。
https://docs.docker.com/toolbox/toolbox_install_windows/

直リンはこちら(DLverはお任せします)
https://github.com/docker/toolbox/releases

Windows10 homeの場合は上記でOKですがWindows10 proであれば下記からDLになります。
https://docs.docker.com/docker-for-windows/install/

2.Dockerを起動しよう

コマンドプロンプトで下記コマンドを叩きます。

実行コマンド
docker vesion
実行結果
Microsoft Windows [Version 10.0.18362.592]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\01>docker version
Client:
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.7
 Git commit:        74b1e89e8a
 Built:             Wed Jul 31 15:18:18 2019
 OS/Arch:           windows/amd64
 Experimental:      false
error during connect: ・・・(略)

最終行にエラーが出る場合があります。
直訳するとタイムアウトだったり権限どうのと言ってきます。
その場合は、Dockerを起動してみる。無事クジラが出てくればOK。
キャプチャ1.PNG
キャプチャ2.PNG

それでもダメなら、
コマンドプロンプトを右クリックし管理者権限で起動してみましょう。
キャプチャ.PNG

3.Dockerを操作してみよう

3-1.Dockerイメージの取得と確認

実行コマンド
docker pull httpd

pullの後に、イメージ名を指定するとインターネット経由でDockerHubから取得しにいきます。

実行結果
Using default tag: latest
latest: Pulling from library/httpd
bc51dd8edc1b: Already exists
dca5bc65e18f: Already exists
ccac3445152a: Already exists
8515f2015fbc: Already exists
e35494488b8c: Already exists
Digest: sha256:b783a610e75380aa152dd855a18368ea2f3becb5129d0541e2ec8b662cbd8afb
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest
実行コマンド
docker images
実行結果
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              c562eeace183        5 days ago          165MB

イメージが格納されたことがわかります。

3-2.Dockerイメージからコンテナを作成しよう

実行コマンド
docker run -d -p 8080:80 --name test_httpd httpd
実行結果
472e1006396556aec8a2bd9d1c8377fff139ec97b1504d4ea2bfc6c412717ace

run;コンテナを起動状態で作成(create;停止状態で作成)
-d;バックグラウンドで起動
-p;ポートフォワーディング。コンテナ外からアクセスする場合は必須(外部8080で受けてコンテナの80に転送)
--name;指定しないとDockerが勝手に決めてしまうので自身の分かりやすい名前を
httpd;取得したイメージ名を指定(centosとか)

実行コマンド
docker ps
実行結果
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
472e10063965        httpd               "httpd-foreground"   8 seconds ago       Up 8 seconds        0.0.0.0:8080->80/tcp   test_httpd

STATUSに「Up」が表示されていればOKです。

3-3.インターネットブラウザからコンテナにアクセスしてみよう

ここではhttpdが起動しているコンテナ。確認で使うブラウザはchromeを推奨します。

実行URL
http://localhost:8080

解説サイトや本にはlocalhostを指定しているのですがWindows proだといけるんでしょうか?
私(home)はアクセスができなっかったので下記コマンドでDockerのIPを調べました。

起動したてのクジラのプロンプトにも表示されてますね。
管理者権限のコマンドプロンプトでは「Error getting IP address: Host is not running」と帰ってきたので通常のプロンプトかクジラのプロンプトで試してみてください。

実行コマンド
docker-machine ip
実行結果
192.168.99.100
実行URL
http://192.168.99.100:8080/

実行結果
キャプチャ3.PNG

3-3-1.コンテナ内に入ってみる

実行コマンド
docker exec -it test_httpd /bin/bash

「root@472e10063965:/usr/local/apache2#」な感じになっていればOKです。
-it;標準入力と接続を維持する?みたいな
bash;bash使って入る

適当なコマンドを実行してみましょう。

実行コマンド
ls -l
実行結果
total 40
drwxr-xr-x 2 root root 4096 Feb  2 00:15 bin
drwxr-xr-x 2 root root 4096 Feb  2 00:15 build
drwxr-xr-x 2 root root 4096 Feb  2 00:15 cgi-bin
drwxr-xr-x 4 root root 4096 Feb  2 00:15 conf
drwxr-xr-x 3 root root 4096 Feb  2 00:15 error
drwxr-xr-x 2 root root 4096 Feb  2 00:15 htdocs
drwxr-xr-x 3 root root 4096 Feb  2 00:15 icons
drwxr-xr-x 2 root root 4096 Feb  2 00:15 include
drwxr-xr-x 1 root root 4096 Feb  7 01:59 logs
drwxr-xr-x 2 root root 4096 Feb  2 00:15 modules

3-3-2.コンテナ内のファイルをいじってみる。

ディレクトリを移動してindexファイルを編集してみましょう。

実行コマンド
cd /usr/local/apache2/htdocs/
実行コマンド
vim index.html
実行結果
bash: vim: command not found

おそらく上記のようになり実行できないと思います。その場合は下記コマンドを実行しvim自体を入れてあげましょう。

実行コマンド
apt-get update
apt-get install vim
実行コマンド
vim index.html

今度は編集画面にいけると思います。
i;インサートモード
:wq;編集を保存し終了

再度、ブラウザよりアクセスしてみましょう。
表示が変わらないようであれば「Ctrl+F5」で更新してみて下さい。

実行URL
http://192.168.99.100:8080/

3-3-3.コンテナから出る

exit

3-4.コンテナを停止する

実行コマンド
docker stop test_httpd

名前を指定していますがコンテナIDでも大丈夫です。

実行結果
test_httpd
停止確認
docker ps -a
実行結果
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                     PORTS               NAMES
472e10063965        httpd               "httpd-foreground"   28 minutes ago      Exited (0) 4 seconds ago                       test_httpd

STATUSに「Exited」(終了しました)と表示されていればOKです。

3-5.コンテナを削除する

実行コマンド
docker rm test_httpd
実行結果
test_httpd

削除ができない旨エラーが出た場合は下記コマンドを実行してみましょう

Error response from daemon: You cannot remove a running container 472e10063965・・・(略). Stop the container before attempting removal or force remove

docker rm -f test_httpd
実行結果
472e10063965
削除確認
docker ps -a
実行結果
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                     PORTS               NAMES

何も表示されなければOKです。

3-6.イメージを削除する

実行コマンド
docker rmi httpd
実行結果
Untagged: httpd:latest
Untagged: httpd@sha256:b783a610e75380aa152dd855a18368ea2f3becb5129d0541e2ec8b662cbd8afb
Deleted: sha256:c562eeace183d5be6dddf120b115290f4d803e5cfc023b31e76992678b5426c4
Deleted: sha256:4c1e1a8ae779e04b096b6ec82fd052b82b56d9a93fa1105b9eb316c5bf07849e
Deleted: sha256:977c52f43c25c20b67b50873c74f00cdf76215cf2b1a37e58348740df75e2a66
Deleted: sha256:7fddd9b19d8b29b7aaee5ebef26176dce7464a6b85e517401f365d693157e505
Deleted: sha256:1620bdc7bd85ab5e753b58a7e648f46a883108e9bc410560d4558c780cf13ffd
Deleted: sha256:488dfecc21b1bc607e09368d2791cb784cf8c4ec5c05d2952b045b3e0f8cc01e
削除確認
docker images
実行結果
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

何も表示されなければOKです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした