楽しんで学習するITエンジニアの備忘録ブログ

~日常生活の中にも楽しみを見出したい~

【第2弾】Kubernetes学習【Dockerを使いこなす】

おれもITエンジニアだ(今日は強気)。

 

やっぱり、Kubernetesが面白そう。

 

この感情が湧くと意外に熱中しやすい気がする。

 

でも、まだKubernetesではなく、コンテナ学習の段階。

 

Udemy「米国AI開発者がゼロから教えるDocker講座」を再開。

 

「セクション6: Dockerfileについて知ろう」まで聴講した。

 

図とコマンドを関連付けて説明していただけるので、物凄く分かりやすい。

 

■1.Docker imageを作成する方法

 

 Docker imageを作成する方法は、以下の2種類がある。

 ・Dockerfileから作成する方法(docker build -t)

 ・コンテナから作成する方法(docker commit)

 

 基本的には、Dockerfileから作っていく方が良いとのこと。

 理由は、そのコンテナがどのような内容かが明確であるから。

 

■2.コンテナを稼働させる

 
 docker run -it <Docker imageID> <コマンド> コンテナの新規作成&実行

  ※「docker run」と「docker exec」の違いが分からなくなってきた。

 docker ps 動いているコンテナのみ表示

 docker ps -a 動いていないものも含めてコンテナの一覧表示

 

■3.dockerhubに、Docker imageをアップロード

 docker tag <ソース> <ターゲット> 

  ※名称変更のコマンドであり、自分のリポジトリへアップロードする準備

 docker push <ユーザ名>/<リポジトリ>

 

■4.dockerhubにアップロードをしたDocker Imageをダウンロード

 docker rmi <Docker imageID>

  ※imageを削除。同じDocker imageがあるとダウンロードできないため。
 docker images 

  ※Docker imageの一覧表示
 docker pull <Docker imageID> 

  ※ダウンロードの実行

 

■次回

 

「Dockerfileを制する者がコンテナを制す」という格言をいただいたので、

 

 Dockerfileの書き方を少しマスターしていきたい。

 

 コンテナ同士の独立性、layerを共有するためディスク容量の節約など

 

 の良い面を垣間見れた。

 

 ただ、ここまでの一番の疑問は、docker hubにおきまして、

 

 docker imageは差分のみ記録されるとのことであるが、

 

 仮に、大元のimageがなくなった時はどうなるのか?

 

 あと、混乱しがちな点としては、そのコマンドが、

 

 Docker imageに対して行っているのか?コンテナに対して行っているのか?

 

 をしっかりと意識してやっていくひつようがあるということ。

 

f:id:takanarukodou2:20210801095955p:plain

 

以上です。