仕事の関連でDockerを、と言われたのだけど、名前だけ聞いたけど、
docker-compose up -d
くらいしか実行したことないのでちゃんと最初から勉強していく。
当座のゴールは出されてきたDockerfileやらdocker-compose.ymlを
ちゃんと言われたとおりに動かせること。
Dockerfile作ってイメージ構築とかまだ遠すぎて先の目標
今日知ったこと
その1: Docker pull
Docker用のイメージを取得するときに
docker pull 【イメージ名】
と実行すると、どこかから勝手にダウンロードされてくるのだけど、
これはDocker Desktop(今はMacOS使ってる)がもつ初期設定の取得元が
Docker公式のDockerHubと呼ばれるDockerリポジトリだかららしい。
疑問:そうすると他のDockerリポジトリ?レポジトリから設定オプションで
取得する方法が有るってコトだろうか?
その2 Docker run
何はともあれ、ダウンロードしたイメージというものを実体化?して動かさないと行けない。
最初に
```
docker pull ubuntu:latest
```
してるのでubuntuイメージの最新番が入っている。
早速実行してみる。
docker container run -it --name "test1" ubuntu:latest /bin/cal
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/bin/cal": stat /bin/cal: no such file or directory: unknown.
いきなりエラーが出た。
OS系のイメージの場合、中にログインして確認が出来るので試してみる。
docker container run -it --name "test1" ubuntu:latest /bin/bash
docker: Error response from daemon: Conflict. The container name "/test1" is already in use by containe
今度はコンテナの名前が重複しているよ、というエラー。一度終了したものでも
バックに残ったままのようだ。
コンテナに付ける名前変更して再挑戦、
docker container run -it --name "test2" ubuntu:latest /bin/bash
root@b152b16ad478:/# ユーザとしてはrootで動かすらしい。
ls /binをしてわかった、centosには/bin/calがあるがubuntuには入ってない。
イメージによって中のコマンド群も変えているようだ。
ひとまずはここまでで使ったコンテナを片付けようと思う。
docker container help
を実行すると大量にサブコマンドが出力されるが、今回は「rm」コマンドでよさそう。
「prune」コマンドも「all stopped container」とあるので同じようなつかえ方できそうだけど。
問題は実行したコンテナが何かすぐ分からない。マニュアルを調べたら
docker container ps -a
で全部の終了済み含むコンテナを表示できる。
今日は順番に
docker container rm 名前で消してみる。
docker container rm test2
同じように作ったコンテナも削除。
最後に
docker container ps -a
を実行して、ヘッダ部分しかない事を確認。
頭回らないので一日この辺が限界。
次の目標
①runで「-it」付けないときはどうなるのか、どういう挙動返るのか
②docker container pruneしたときの挙動、止まってるコンテナが全部消えるのか?