前回:ubuntuにdockerをインストール - brand new note
先日半分までやってみて後半をやっていなかったのでやりながらメモ。
Ubuntu 20.04へのDockerのインストールおよび使用方法 | DigitalOcean
参考はこれ。まず前回作ったubuntuのコンテナイメージにログイン。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker run -it ubuntu root@b2421f52ba91:/#
アプリケーションのインストール
ここでは例としてnodejsをインストールしてる。
何に使うんですかと言われると困る。
root@b2421f52ba91:/# apt install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nodejs
root@b2421f52ba91:/# sudo apt update
bash: sudo: command not found
root@b2421f52ba91:/#
あれ?コンテナはsudoないんだね。いらないねよく考えたら
root@b2421f52ba91:/# apt update Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB] Get:3 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [297 kB]
root@b2421f52ba91:/# apt install nodejs
これで入った。途中でタイムゾーンを聞かれたのでtokyoとした。
バージョンを確認する。
root@b2421f52ba91:/# node -v v10.19.0
コンテナの管理
ログアウト。docker ps
で実行中のコンテナイメージが確認できる。
root@b2421f52ba91:/# exit exit ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
普通にexitするとコンテナはシャットダウンするようになってるのでここではなにも出力されてない。-a
を追加すると未実行のコンテナイメージも含めてイメージの状態を確認できる。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 83ef15493b01 ubuntu "/bin/bash" 10 seconds ago Exited (0) 4 seconds ago exciting_einstein b2421f52ba91 ubuntu "/bin/bash" 22 minutes ago Exited (0) 8 minutes ago nifty_wright e09ccc2414db ubuntu "/bin/bash" 29 minutes ago Exited (0) 29 minutes ago admiring_sanderson 6d9d8508a9ca ubuntu "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago charming_swartz 5f9574e596e0 ubuntu "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago admiring_chaplygin ca738446dafa ubuntu "/bin/bash" 6 days ago Exited (127) 6 days ago epic_feynman 63ab6e895499 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago recursing_ramanujan 937c1efdf209 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago confident_wu ab2f5e6adf0e hello-world "/hello" 6 days ago Exited (0) 6 days ago flamboyant_mclaren
今気がついたんだけどrun
はイメージを新規作成するコマンドなのでubuntu
が大量生成されていた。同じものを指定して再利用するには二回目以降で別のコマンドを使わなきゃいけない。凡ミス。
さっきnodejsを入れたコンテナイメージを指定して立ち上げる。docker start
。確認するとログインはできていないが立ち上がりはしている。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker start b2421f52ba91 b2421f52ba91 ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2421f52ba91 ubuntu "/bin/bash" 27 minutes ago Up 28 seconds nifty_wright
ログインにはdocker exec
を使うようだ。さっきnodejsを入れたイメージを指定して本当に当該イメージに入れているか確認する。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker exec -it b2421f52ba91 /bin/bash root@b2421f52ba91:/# node -v v10.19.0
よさそうなので今度は立ち上がっているイメージを落とすdocker stop
を試す。のだが、このままexit
するとそのタイミングで落ちてしまうのでデタッチをする。
Dockerのコンテナにログインする際は例えば以下のように実行します。 このあと、 ctrl + d で抜けるとコンテナは終了してしまいます。 コンテナを終了せずにログアウト(デタッチ)するには ctrl + p + ctrl + q を実行します。
root@b2421f52ba91:/# read escape sequence ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ [1]>
これでいいはず。落ちていないことを確認。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b2421f52ba91 ubuntu "/bin/bash" 41 minutes ago Up 14 minutes nifty_wright
ここからdocker stop
。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker stop b2421f52ba91 b2421f52ba91 ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
大丈夫そうだね。
作ったイメージを削除するにはdocker rm
。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker rm b2421f52ba91 b2421f52ba91 ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 83ef15493b01 ubuntu "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago exciting_einstein e09ccc2414db ubuntu "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago admiring_sanderson 6d9d8508a9ca ubuntu "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago charming_swartz 5f9574e596e0 ubuntu "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago admiring_chaplygin ca738446dafa ubuntu "/bin/bash" 6 days ago Exited (127) 6 days ago epic_feynman 63ab6e895499 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago recursing_ramanujan 937c1efdf209 ubuntu "/bin/bash" 6 days ago Exited (0) 6 days ago confident_wu ab2f5e6adf0e hello-world "/hello" 6 days ago Exited (0) 6 days ago flamboyant_mclaren
これでnodejsを入れたb2421f52ba91
が削除された。
コンテナ内の変更をセーブして新しいイメージを作る
前回いろんなイメージの中から選択して好きなイメージをダウンロードしたけど、逆も可能で、自分が変更を加えたイメージを新たなイメージとして新規生成してdockerhubにアップロードすることもできる。まずdocker commit
コマンドを使う。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker commit -m "ekp commit" -a "ekp" 83ef15493b01 spsyk103/new_ubuntu sha256:1551dcbc8d23045ea00b00d33c5e109ea85f538f5691fbaaaaccbe9950a4560b
-m
はメッセージで-a
はauthor、作者。ここは任意だと思う。イメージのidと新しい名前を書いて、docker images
で新しいイメージが手元に作成できたか確認する。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker images REPOSITORY TAG IMAGE ID CREATED SIZE spsyk103/new_ubuntu latest 1551dcbc8d23 2 minutes ago 72.7MB ubuntu latest 7e0aa2d69a15 5 weeks ago 72.7MB hello-world latest d1165f221234 3 months ago 13.3kB
dockerhubに作ったイメージをアップロード
これをアップロードしてみる。dockerhubはgithubみたいなもので、個人アカウントを作って自分で作ったイメージをインターネット上に保存して管理できる。ログインをした後docker push
を使う。その後、少し待つ。
ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker login -u spsyk103 Password: WARNING! Your password will be stored unencrypted in /home/ekp/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded ekp@ekp-ThinkPad-X1-Carbon-3rd ~/デスクトップ> docker push spsyk103/new_ubuntu Using default tag: latest The push refers to repository [docker.io/spsyk103/new_ubuntu] 0ea9b9f8f036: Pushed 2f140462f3bc: Mounted from library/ubuntu 63c99163f472: Mounted from library/ubuntu ccdbb80308cc: Mounted from library/ubuntu latest: digest: sha256:1f9dfa9100dba94515b4c030beb98cee2b78a552647cee1fc230f57e4b604f6e size: 1150
※dockerhubアカウントの開設は割愛します。簡単なのでこの辺を見てください。
Docker Hub アカウントとリポジトリの作成 — Docker-docs-ja 1.13.RC ドキュメント
自分のdockerhubにアップロードできたことを確認。
以上
今回はここまでです。おつかれさまでした!