PR

dockerのhello-worldが動かないときの対処法

Androidアプリ

自分用の忘備録です。環境はubuntu。

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

無料で学べる組み込み開発オンラインスクールはじめました!
https://kumicla.tatepro.com

姫野秀徳をフォローする

dockerインストール

こちらのサイトを参考にさせていただきました

【簡単な4つの方法】UbuntuにDockerをインストールするには
DockerとLinuxディストリビューションのUbuntuは、コンテナ型のウェブ開発環境に適した組み合わせ。この記事では、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 <コンテナ名>

この内容が良いと思ったら、いいね💖を押して教えてください!

組みクラ – 組み込み開発を学び、未来を創るエンジニアへ
無料で学べる!組み込み開発の基礎から応用までをマスターできるオンラインスクール「組みクラ」

組み込みエンジニアは、あらゆる産業の基盤を支える重要な職業です。
私たちタテプロは、次世代の組み込みエンジニアを育成し、業界の競争力を高めるために活動しています。
あなたも、無料で学べる「組みクラ」で、組み込み開発のスキルをしっかり身につけ、キャリアを加速させましょう!
今すぐ学び始めて、将来の自分をステップアップさせる第一歩を踏み出しませんか?

\立プロとLINEで友だちになりませんか/
立プロと友だちになる
Androidアプリpythonフロントエンド組み込み機器
シェアしていただけると嬉しいです!

コメント

タイトルとURLをコピーしました