docker




[apache httpd](https://hub.docker.com/_/httpd)

`index.html`ファイル作成

```:docker実行フォルダ
$ vi index.html
```
```:index.html
<html>
<head></head>
<body>Hello Docker</body>
</html>
```

docker Desktopを起動

コンテナの起動
※`docker run`コマンドで、`pull`,`create`,`start`をまとめて実行する

```:docker実行フォルダ
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

$ docker run [バックグラウンドで動かすオプション] --name [コンテナ名] -p [自分のpcポート]:[コンテナのポート] -v "$PWD":/usr/local/apache2/htdocs/ [docker　image名]
```


```
$ docker ps

CONTAINER ID   IMAGE       COMMAND              CREATED         STATUS         PORTS                  NAMES
0ff5aeded41f   httpd:2.4   "httpd-foreground"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->80/tcp   my-apache-app
``` 

docker実行フォルダの`index.html`表示
[http://localhost:8080/](http://localhost:8080/)

dockerコンテナの停止

```:docker実行フォルダ
$ docker stop my-apache-app
または
$ docker stop 0ff5aeded41f
```
dockerコンテナの確認

```:docker実行フォルダ
$ docker ps -a

CONTAINER ID   IMAGE       COMMAND              CREATED         STATUS                     PORTS     NAMES
0ff5aeded41f   httpd:2.4   "httpd-foreground"   8 minutes ago   Exited (0) 7 seconds ago             my-apache-app
```

dockerコンテナの削除
※コンテナを停止後、削除する

```:docker実行フォルダ
$ docker rm my-apache-app
または
$ docker rm 0ff5aeded41f
```

docker　imageの確認

```
$ docker image ls

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
httpd        2.4       b03352b171b7   4 days ago   136MB
```

docker imageの削除

```
$ docker image rm httpd:2.4

Untagged: httpd:2.4
Untagged: httpd@sha256:5cc947a200524a822883dc6ce6456d852d7c5629ab177dfbf7e38c1b4a647705
Deleted: sha256:b03352b171b7bb0f8d2691bc28ab9a18f4285c870832deb5e1242d11e166385d
Deleted: sha256:5298d2d8e3ca2178dbc2f724f7231d7b6c56c7ac767bcaa1f42b0db4cbca5236
Deleted: sha256:e470d2a89b052322c841dc6e2393c6146a7f4d93da8e8b9aa0b31517f747d6b3
Deleted: sha256:e090aebcb396be2afdfa4153a6dd5e56b42ee30167af97861657ed02da7e8ee0
Deleted: sha256:ae47976aa0cd819a24183910c7774554d4e23a99d0e76053db688b38859344a2
Deleted: sha256:f9b44a5812beb5294f1cf3b76cf9c29f1e53bf8eec7cece1b002fc5b5fbae8f2
```



#コンテナの独立性
-v オプションを付けず、マウントしない。

```
$ docker run -dit --name web1 -p 8080:80 httpd:2.4
```

```
$ docker cp /Users/ryo/Desktop/app/docker/my-apache/index.html web1:/usr/local/apache2/htdocs

$ docker cp [localファイルのpath] [コンテナ名]:/usr/local/apache2/htdocs
```

docker実行フォルダの`index.html`表示
[http://localhost:8080/](http://localhost:8080/)

dockerコンテナ内へ入る

```
$ docker exec -it web1 /bin/bash
```

dockerコンテナ内から出る

```
$ exit
```


#データのマウント
・バインドマウント
・ボリュームマウント


```:docker実行フォルダ
$ docker run -dit --name web1 -p 8080:80 -v /Users/name/Desktop/app/docker/my-apache:/usr/local/apache2/htdocs/ httpd:2.4

$ docker run [バックグラウンドで動かすオプション] --name [コンテナ名] -p [自分のpcポート]:[コンテナのポート] -v [マウントするディレクトリpath]:/usr/local/apache2/htdocs/ [docker　image名]
```


#dockerネットワーク構築
コンテナから別のコンテナへアクセス

コンテナ作成

```
　$ docker run -dit --name web1 -p 8080:80 httpd:2.4
```

コンテナのIP確認

```
$ docker container inspect [コンテナ名]
```

`"IPAddress"`のIP

```
"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "fa5f56c33a3a9d4bc42204d2af9e653dbd7f6eeb44c8d112d5023944669fb5a3",
                    "EndpointID": "0b91de581dd31e9daa1a2696ec7bf25d4648f8fd69221c9a3ea3243e0ba8bcbc",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
```



dockerネットワークを作成

```
$ docker network create [ネットワーク名]

$ docker network ls
```

dockerネットワークに属するコンテナを作成

```
$ docker run -dit --name web1 -p 8080:80 --net [ネットワーク名] httpd:2.4
```

dockerネットワークに属するコンテナを確認

```
$ docker network inspect [ネットワーク名]
```


```
"Containers": {
            "73438bcb291351a4116117f3a0082d4e278999d4f2d5d8079c43037dc05128df": {
                "Name": "web1",
                "EndpointID": "42c2fb1ab542527ce3aca4759d8ae2e5af5b6790f02431696bb7e454072f051d",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
```

ubuntuのコンテナを作成

```
$ docker run --rm -it ubuntu /bin/bash
```
ubuntuのコンテナに`ping`,`curl`をインストール

```
$ apt update
$ apt -y upgrade
$ apt install -y iproute2 iputils-ping curl
```

ubuntuからweb1へアクセス

```
$ ping [コンテナ名]

$ curl http://[コンテナ名]/
```

dockerネットワークの削除

```
$ docker network rm [ネットワーク名]
```