index.html
ファイル作成
$ vi index.html
<html>
<head></head>
<body>Hello Docker</body>
</html>
docker Desktopを起動
コンテナの起動
※docker run
コマンドで、pull
,create
,start
をまとめて実行する
$ 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/
dockerコンテナの停止
$ docker stop my-apache-app
または
$ docker stop 0ff5aeded41f
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 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/
dockerコンテナ内へ入る
$ docker exec -it web1 /bin/bash
dockerコンテナ内から出る
$ exit
#データのマウント
・バインドマウント
・ボリュームマウント
$ 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 [ネットワーク名]