ttyオプションに関して
dockerでnodeを起動させるときに docker-compose up -d で通常起動させようとすると、立ち上がらず、nodeを含んだコンテナが使えません。
そこで下記の様にttyというオプションを入れると、無事に起動することができました。
1 2 3 4 5 6 7 8 9 10 11 12 |
node: container_name: "node" build: context: ./docker/node dockerfile: Dockerfile volumes: - .:/var/www/html tty: true ports: - "3000:3000" networks: - |
調べてみると、docker run時の-tオプションに相当し、これがないと基本コンテナが終了してしまうため、基本的にtrueで使う様です。
apacheやmysqlなどはこのオプションがなくてもコンテナが立ち上がっているんですけどね・・・要調査です。
docker execコマンドに関して
ログインしないパターン
docker exexを使う場合、 docker exec -it コンテナ名 /bin/bash の様にログインして使うケースが多かったのですが、ログインしないで使うこともできます。-itオプションやシェルを使っているので、ログインできていますが、例えば
docker exec コンテナ名 node -v の様にうてばコンテナ内でコマンドを打った時と同じ挙動をします。基本的な、インストールだけならこれでいいかもしれませんね・・・
shellに関して
起動しているコンテナにログインするとき、
docker exec -it コンテナ名 /bin/bash の様に打ちますが、 /bin/bash 部分はコンテナ内のshellになります。
使用するshellの一覧は cat /etc/shells などで確認できます。
docker execを使う場合、だいたい /bin/bash が多いかと思いますが、alpineなどの軽量コンテナの場合、 /bin/bash が入っていない様で /bin/sh などを使う様です。