0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerの入門書を読んでのアウトプット

Posted at

初めに

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

上記参考書を拝読し、勉強した内容をアウトプットのため投稿する

Dockerとは

MySQLやNginx等のプログラムをコンテナ化(独立した環境)して動かすことができる
また、Dockerを使用するには、Docker Engineが必要である
Dockerをコンテナ化するにはimage(isoファイルのような物)が必要になる

Dockerを使用するメリット

複数のシステムから連携されているシステムのバージョン管理

複数のシステムで同じシステムを参照している場合に、どちらのシステムも同じバージョンを使用かどうかは限らない
その場合に、参照しているシステムをコンテナ化してバージョンを複数用意できる
例:Webアプリが複数あり、同じRDBを参照している
しかし、WebアプリごとにRDBのバージョンを変更したい
その際に、RDBをDockerを使用してコンテナ化をすることで、異なるバージョンのRDBを参照できる

開発環境の差異を埋めることができる

Dockerはコンテナを配布することができる(配布される人もDockerを使用できるようになっていないといけない)
そのため、異なるOSで開発をしていても同じ環境で開発を行うことができる
また、同じようにコンテナを配布することで開発環境と本番環境の差異を埋めることもできる

Dockerの仕組み

構造

DockerはLinux上にDocker Engineを載せてその上でコンテナを動かす
また、コンテナの中には、Lixun OS(カーネルを除く)の一部機能を取り入れたものが入っている
これは、コンテナが独立した環境であるため、コンテナ内に何もなければLixunとのやりとりができないからである
カーネルを除いたOSの一部機能を導入しているためコンテナは動作が軽くなる

冒頭に記述した参考書ではコンテナに入っているOSのことを

OSっぽいもの

と記述している
これは、カーネルがないためそのような呼び方になっており、厳密なOS(カーネルが入っているもの)ではない

Dockerの全体像
スクリーンショット 2022-03-23 124617.png

image

1つのimageから複数のコンテナを作成可能であり、コンテナからimageを作成することもできる

コンテナを使用する際の考え方

Dockerは、基本的に独立したコンテナをアップデートすることはなく、既存のコンテナを捨てて新しいコンテナを作成する
これは、コンテナの作成は容易であるDockerの特徴を生かした考え方である
コンテナを削除する際に、必要なデータが一緒に消えてしまうと困るので、その際には、物理マシンにマウントしてデータを保存して使う

Dockerの導入

導入方法

以下サイトを参照に導入できる
※ 2022年3月20日時点 MacOSでの導入
https://docs.docker.com/desktop/mac/install/

サイトにアクセスしてチップを選択
スクリーンショット 2022-03-19 13.48.41.png

以下のようなデスクトップアプリケーションを起動できれば成功
スクリーンショット 2022-03-19 14.13.23.png

簡単な使用方法

Docker Engineは、コンテナ全体の管理に関わる操作(起動や停止)を行うもので、インストールと同時に起動している
コンテナはDocker Engineが停止していると一緒に停止するので、必要に応じて設定を変更する必要がある
macの場合は、ターミナルを開いてDockerの操作を行う

※DockerコマンドはWindowsでもMacでも共通である

Docker Engineは、Dockerコマンドを使用する
基本的なコマンドは以下

docker 「何を」「どうする」 (オプション) 「対象」 (引数)

「何を」の部分には以下が入る

container
image
volume
network	Docker
checkpoint
node
plugin
secret
service	
stack	
swarm	
system	

普段使いしそうなコマンド

Dockerのバージョン確認

docker version

コンテナ系

イメージのダウンロード、コンテナの作成、起動を一括で行う

docker run --name (コンテナ名)

実際に走るコマンド

docker pull
docker create
docker start

コンテナ一覧

docker ps

コンテナ一覧(停止状態含む)

docker ps -a

コンテナ停止

docker stop (コンテナ名)

コンテナ削除
コンテナの削除を行う場合は、コンテナが停止していないといけない
また、コンテナの削除をしてもイメージは残る

docker rm (コンテナID)

イメージ系

イメージ一覧

docker image ls

イメージ削除
イメージ削除の際は、コンテナが削除されていないとエラーになる

docker image rm (イメージID)

ネットワーク系

ネットワークの作成

docker network create (ネットワーク名)

ネットワークの削除

docker network rm (ネットワーク名)

ファイルのコピー

ホストからコンテナへコピー

docker cp ホストのパス  コンテナ名:コンテナ側パス

コンテナからホストへコピー

docker cp コンテナ名:コンテナ側パス ホストのパス 

ボリュームのマウント

用語に関して

ボリューム・・・ストーレージの一部を切り取ったもの
マウント・・・記憶領域をフォルダ等に取り付ける

マウントする理由

Dockerでは、コンテナをアップデートすることはなく、削除して新たに作成することが多い
コンテナを削除するとデータも一緒に消えてしまうので、データを残しておけるようにマウントする

ボリュームマウント

Docker Engine管理下の領域にボリュームを作成し、コンテナにマウントする
特徴は以下
・誤って削除することなどが少ない(コンテナを経由しないと確認できない)
・使用しているパソコンのOSに依存しない(パスなど)
・Dockerが推奨している

バインドマウント

Docker Engine管理外の、DockerをインストールしたOS等に対して、フォルダやファイルをマウントする
コンテナを経由しなくとも確認できることが特徴

tmpfsマウント

デイスクではなく、メモリをマウントする
アクセスが高速になることが特徴

マウント系の普段使いしそうなコマンド

ボリュームの作成

docker volume create (ボリューム名)

ボリュームの削除

docker volume rm (ボリューム名)

ボリュームの一覧

docker volume ls         

ボリュームの詳細

docker volume inspact (ボリューム名)

バインドマウントの例

docker run -v 実際のパス:コンテナのパス

ボリュームマウントの例

docker run -v ボリューム名:コンテナのパス

コンテナのイメージ化

コンテナをイメージ化することによって、コンテナを複製したり、他のパソコン等に移動できる
comiitでイメージを書き出すか、Dockerfileでイメージを作成する方法がある

commit利用時のコマンド

docker commit コンテナ名(任意) イメージ名(任意)

Dockerfile利用時のコマンド
Dockerfile自体には、元にするイメージ、イメージに追加したファイルなどの情報を記載する

docker build -t イメージ名(任意) フォルダのパス(任意)

作成したイメージは、saveコマンドでtarファイルにする

docker save -o ファイル名.tar 作成したイメージ名

Docker・コンテナへの命令

Docker Engineに対しての命令では、今までのようにdockerコマンドを使用していたが、コンテナに対してはshellを利用する

bashを起動させるコマンド

docker exec -it コンテナ名 /bin/bash

bashを起動させた後はdockerコマンドを使用できないため以下のコマンドで一旦bashから抜ける必要がある

exit
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?