Dockerのお勉強#1
はじめに
DockerのインタラクティブなチュートリアルDeploying Your First Docker Containerをやった。
Dockerを理解していく過程をメモしていく。
docker imageを検索する
docker search <name>の構文でコマンドでimageを検索するができる
$ docker search redis
dockerhubから探すこともできる。
docker containerを実行する
docker run <option> <image-name>でimageからcontainerを実行できる。
デフォルトではforegroundで実行されるが、-dオプションを付けるとbackground実行できる。
$ docker run -d redis #最新バージョンを使う
$ docker run -d redis:3.2 #3.2バージョンを使う
実行中のcontainer情報を見る
バックグランドで実行中のコンテナ一覧を取得する。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2df624854d8c redis "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 6379/tcp heuristic_yonath
コンテナの詳細情報取得する
$ docker inspect redis
コンテナの標準出力、エラー出力を取得する
$ docker logs redis
コンテナのポートをHostマシンに見えるようにする
コンテナはデフォルトでは、Hostマシンにポートを開いていない。
-p <host-port>:<container-port>で、ホスト側とコンテナ側のポート番号を指定してコンテナ実行する必要がある。
また、--nameで任意のコンテナ名を付与することもできる。
$ docker run -d --name redisHostPort -p 6379:6379 redis
832d7883e42e2b5fd187d133dd7934afd48b52523aa9a89e3cc69da23751d14f
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
832d7883e42e redis "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 0.0.0.0:6379->6379/tcp redisHostPort
d9f4bccfe765 redis "docker-entrypoint.s…" 35 minutes ago Up 35 minutes 6379/tcp silly_newton
0.0.0.0は全てのIPから接続を受け付けることを表している。
ローカルホストIPを指定したい場合は、 -p 127.0.0.1:6379:6379となる。
$ docker run -d --name redisDynamic -p 127.0.0.1:6379:6379 redis
上記はホストマシンのポート番号を固定しているため、複数コンテナを立ち上げるとホスト側のポートが重なってしまう。 ホスト側ポートを動的にするには下記となる。
$ docker run -d --name redisDynamic -p 6379 redis
データの永続化
コンテナ内のデータは、コンテナを再構築すると消えてしまう。 ホスト側のディレクトリをコンテナが覗きにいけるようにして、ホスト側にファイルを保存することで、コンテナ再構築してもデータを永続化することができる。
-v <host-directory>:<container-dirctirt>と指定する。
$ docker run -d --name redisMapped -v /opt/docker/data/redis:/data redis
フォアグラウンドでコンテナを実行
-dを指定しなければ、フォアグランドでコンテナを立ち上げることができ、コマンドを渡すと実行できる。
`
$ docker run ubuntu ps
`
-itを指定してbashを起動すると、フォアグランドで実行したコンテナ内のシェルにアクセスできる。
$ docker run -it ubuntu bash
参考リンク
Awesome-dockerに色々なdocker情報が集積されている。