自分用の忘備録です。環境はubuntu。
dockerインストール
こちらのサイトを参考にさせていただきました
$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
バージョン情報を聞いてみる
$ docker -v
//戻り値の例:Docker version 24.0.7, build *******
dockerが問題なくインストールされていれば、バージョン情報が返ってきます
hello-worldで動作確認
とりあえず、hello-worldでdockerが動くか確かめる
docker run hello-world
Hello from Docker!が返ってくれば正常動作している。
Dockerって何?使い方は?
ここでいったんdockerの取り扱いイメージをはっきりさせておきたい。
dockerはコンテナと呼ばれる単位で仮想環境を作ることができる大枠です。
今までは仮想環境のメモリを確保して、そのなかにOS入れて、アプリ入れて、とやっていましたが、DockerだとホストマシンOSを使って処理できるため動作が軽いです。
使い方としては、まずdockerfileをビルドして、dockerイメージを作ります。
作ったイメージをrunで実行して処理します。
dockerfile.txtはC言語でいうところのcmakelists
コンテナの構成内容を記述している
dockerfileのビルド
ビルドするときは、dockerfileがあるディレクトリにして実行する。
最後のピリオドも忘れないように!
$ docker build -t <イメージ名>:<タグ名> .
たとえば、docker build -t tatepro:new .
のようにして、tateproというイメージを作り、そのタグはnewとしています。
タグは識別子で、イメージの特定に使えます、たぶん。
イメージファイルの確認
$ docker images
ビルドでイメージができているか、確認できる
イメージファイルの実行
$ docker run <イメージ名>
イメージ名を入れてrunで実行。
OCI runtime create failedでエラーになる
コンテナ起動に失敗しているときに起こるエラーとのこと。
とりあえずdockerイメージの削除&コンテナの削除して再起動してみる。
まずコンテナ削除。
$ docker rm <コンテナID>
hello-worldを入れて、imagesで見ると下記の通り
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 9c7a54a9a43c 6 months ago 13.3kB
間違えました、コンテナIDを見るには下記コマンドでした。
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7600cadc5b8 hello-world “/hello” 11 minutes ago Created youthful_pasteur
3fa77211e6cf hello-world “/hello” 2 hours ago Created interesting_chatterjee
b0fff3eee32e hello-world “/hello” 2 hours ago Created gallant_hofstadter
ce8230a89d74 hello-world “/hello” 2 hours ago Created xenodochial_ptolemy
15fc0328973d hello-world “/hello” 2 hours ago Created determined_hamilton
b72286d96def hello-world “/hello” 3 days ago Exited (0) 3 days ago sleepy_mendel
たとえば、docker rm e7600cadc5b8のようにコンテナIDを入力して実行していく。
つづいてイメージファイルの削除。
$ docker rmi <イメージ名>
docker rmi hello-world
これでイメージもコンテナも消えた、runしてみる。
$ docker run hello-world
だめだ、エラーが出る。
よく分からないので再起動。runしてみる。ちゃんと動いた…どういうことだ、とりあえず無視して先に進める。
runって何
どうもrunが自分の考えている動きと違う。
runを実行するたびに、コンテナが追加されていっている。
どうやらrunはコンテナを生成して、実行するコマンドのようだ。
既存コンテナの実行はstartとのこと。
$ docker start <コンテナ名>
コメント