Dockerを学ぶ
Docker に触れる機会があったため、ある程度理解して使えるレベルになりたいと思い、学んだことを備忘録としてまとめました。(まとめたと言うよりも殴り書きした....?)
ざっくり理解して使えるようになることが目的な為、正確では無いと思います。
Docker とは何なのか
wikiには
「コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォームである」
とあります。
私はとりあえず、「仮想化の技術をより軽くして、環境構築が楽になり、環境の共有が簡単になる便利な物なんだな~」と思っておくことにします。
Dockerの種類
Dockerには無償版Docker CE (Docker Community Edition) と、有償版Docker EE (Docker Enterprise Edition)の2種類あるようです。
今後docker ce
が出てきたら「無償版のDocker」と理解すれば良いと思います。(こういった小さな理解の積み重ねを大事にしていきたい)
Dockerにまつわる用語
Dockerについて調べると必ず出てくる用語が「コンテナ」と「イメージ」です。 Dockerに関する記事の多くで、この2つの説明が初めに長く書かれており、「これ...全部読むの...」と心が折れかけ、読んだ後も、「読んだけど...分からん...結局何が違うんだ...??」と私はなりました。
結局私は、「イメージを用いてコンテナを作る。他人と環境を共有する際にはイメージを送受信して共有する。」というのが大事なのかなと思いました。
Docker Compose とは何なのか
Docker Compose とは、複数のコンテナで構成されたシステムの構築を簡単に行うツールみたいです。 「Docker Compose は無くてもDockerは使えるけど、使うと便利でよく使われているツール」という認識ができているだけでも、勉強する際に取っつきやすくなると思います。
Dockerを使えるようにするには、Dockerのインストールと、Docker Composeのインストールが必要になることが多いと思います。
Docker イメージの作成
Docker イメージを作成する方法は以下のように2種類あるようです。
- Dockerfileを使用してDocker イメージを作成する
- コンテナからDockerイメージを作成する
2つ目の方法でイメージを作成する際には、以下のコマンドを実行するだけです。
docker commit [コンテナ名] [イメージ名]
私は2つ目が楽で良いね!と思ってしまったのですが、作成したDockerイメージが何の操作をしてできたか分からなくなってしまう為、1つ目のDockerfileによってDockerイメージを作成する方が良いみたいです。
Dockerfile
Dockerfileとは、「Dockerのイメージ作成に関するコマンドをコード化してまとめたもの」らしいです。Dockerfileも、Docker Compose と同様に、「無くても使えるけどあると便利なもの」だと思います。
「Dockerfileを使うことで、同一のDocker イメージを簡単に作れて、便利」というのを覚えておけば良いと思います。
コマンド
以下、よく使うコマンドのメモです。
docker run //Docker イメージを使用して、コンテナを起動するコマンド docker run -d //デーモンを使用してバックグランドで起動させる docker run hello-world //「hello-world」というDocker イメージを使用して、コンテナを起動させる
docker run
コマンドではDocker Hub からDocker イメージのダウンロードと、コンテナの起動まで実行する。
docker pull [イメージ名]:[タグ名]//Dockerイメージのダウンロードだけを行うコマンド
ローカル環境のDocekrイメージの一覧
docker images
Docker コンテナの一覧を確認する
docker ps //実行中のコンテナの一覧表示 docker ps -a //全てのコンテナの一覧表示
停止中のコンテナ、イメージを放置すると、不要なデータが残り続けることになるため、不要になってコンテナ、イメージは削除する。
docker rm <コンテナ名orCONTAINER ID>// コンテナの削除 docker rmi <Dockerイメージ名orIMAGE ID> //イメージの削除 docker rm $(docker ps -aq)//停止中のコンテナを全て削除
実行中のコンテナにログイン、ログアウト
docker exec -it [コンテナ名もしくはコンテナID] [シェルのコマンド] //ログイン exit //ログアウト
コンテナとローカル・ファイルシステム間でファイルとフォルダをコピーする
docker cp <ホスト側のファイル> <コンテナ名>:<コンテナ内のコピー先ディレクトリ>//ホスト側からコンテナ内にファイルをコピー docker cp <コンテナ名>:<コンテナ内のコピー元ファイル> <ホスト側のコピー先ディレクトリ>//コンテナからホストへファイルをコピー
コンテナの起動、停止
docker start <コンテナ名orコンテナID> docker stop <コンテナ名orコンテナID> docker stop $(docker ps -q)//稼働中のコンテナを全て停止
参考
Docker入門(第一回)~Dockerとは何か、何が良いのか~ | さくらのナレッジ
Dockerのイメージとコンテナの違い | CodeCampus
【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その1:コンテナってなに? 〜 | SIOS Tech. Lab