いいものをつくろう

CTOの日記

container

最低限のDockerfileでOSを立ち上げてみよう!

投稿日:

 

適当にDockerfileに以下のように書いてみる。centos:8.1バージョンでコンテナを作ってみたいという意思だ

Dockerfileはイメージをつくるためのレシピみたいなもので

FROM centos:8.1
RUN echo "Hello, This is minimum Dockerfile just to launch an base OS of your choice"

としてイメージをつくってみよう

> docker build -t hello/centos:8.1 .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos:8.1
manifest for centos:8.1 not found: manifest unknown: manifest unknown

するとmanifest for centos:8.1 なんて、ないですよ、と言われています。

https://hub.docker.com/_/centos

のように、docker hubでちゃんとした名前、Supported tagsと言っていますね、で引っ張ってくる必要があるようです。

そんなわけで centos8.1.1911としてみましょう

これで通るはず!

と思いきや

> docker build -t hello/centos:8.1 .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos8.1.1911
pull access denied for centos8.1.1911, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

アクセス拒否!

pull access denied for centos8.1.1911, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

ということで、

repositoryが見つからないというエラーが有力で、実際にそうで、centosと指定する必要があり

FROM centos8.1.1911
ではrepository自体が`centos8.1.1911`という意味になってしまっており、うまく指定できておらず、見つからないというエラーがでます。
正しい書き方は、repositoryに:でtagをつける
FROM centos:8.1.1911
になります。

あらためまして
# Check manifest in https://hub.docker.com/_/centos
#FROM centos:8.1  # Will not available as supported tags
#FROM centos8.1.1911
# 書き方は、repositoryに:でtagをつける。上おやり方だと:がないので、
# うまく指定できておらず、見つからないというエラーがでます。
FROM centos:8.1.1911
RUN echo "Hello, This is minimum Dockerfile just to launch an base OS of your choice"

とすると


> docker build -t hello/centos:8.1 .

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos:8.1.1911
8.1.1911: Pulling from library/centos
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:8.1.1911
 ---> 470671670cac
Step 2/2 : RUN echo "Hello, This is minimum Dockerfile just to launch an base OS of your choice"
 ---> Running in e839d0442a1a
Hello, This is minimum Dockerfile just to launch an base OS of your choice
Removing intermediate container e839d0442a1a
 ---> aef73414e2fe
Successfully built aef73414e2fe
Successfully tagged hello/centos:8.1

見事にイメージが作成されました

docker imagesで確認してみましょう

> docker images | grep centos
hello/centos                                    8.1                 aef73414e2fe        4 minutes ago       237MB

 

まだ、この状態ではイメージを作っただけでコンテナーは起動されていません。

コンテナーはイメージをもとにきどうする為の箱みたいなものです。

ためしにdocker ps というコマンドを叩いてみてください 

先ほどのイメージは見当たらないはずです。

 

それでは実際にコンテナを起動します.

起動するためのコマンドはdocker runです。 

docker run -i hello/centos:8.1

すると、画面はポーズしたように何も表示されず動きません

しかし他のターミナルから

 Docker PS とコマンドを叩くと実際にコンテナーが稼働していることが確認できるはずです

 

停止するにはコントロール D で止めることができます。

 

参考参照

本家のdocs.docker.comのget-startedを読むのもやはり、間違いないです。

ただし、私の場合は英語でガンガン読み込むよりも日本語で概要とかある程度の知識を掴んでから本家で読むような順番でやることが

おおいです。

Dockerfileを書いてみる

 

 

 

以上です

-container

Copyright© CTOの日記 , 2020 All Rights Reserved.