Docker&DockerHubチュートリアル
参考
- (公式) https://www.docker.com/
- (日本語化) http://docs.docker.jp/
- (概要説明) http://paiza.hatenablog.com/entry/docker_intro#features
イメージ
重要な用語
コンテナ
Dockerイメージから作られ、実行される仮想環境。
Dockerイメージ
コンテナーのファイルシステム、設定をまとめて保存したファイル。 複数のコンテナーで利用可能
Dcoker Hub
Dockerイメージを保存するレジストリ。githubのようなもの? DockerHub的なものが、AwsにはECR(Amazon EC2 Container Registry)がある。
Dockerfile
Dockerイメージの構築方法をコードとして記述したファイル
FROM java:8 ADD spring-boot-sample.jar /opt/spring-boot-sample/ EXPOSE 8080 WORKDIR /opt/spring-boot-sample/ CMD ["java", "-Xms512m", "-Xmx1g", "-jar", "spring-boot-sample.jar"]
チュートリアル
前提:
- docker install
- java8
- maven
- git
処理イメージ
- DockerfileからDokcerイメージする作成する
$ echo "イメージ一覧" $ docker images $ echo "コンテナー一覧" $ docker ps -a $ echo "spring-bootのアプリをclone" $ git clone https://github.com/liguofeng29/sample.git $ cd sample $ mvn clean package $ echo "DockerfileからDokcerイメージ作成する" $ sudo docker build -t spring-boot-docker-demo:first . $ echo "イメージ一覧" $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE spring-boot-docker-demo first 9e6a5927b020 About a minute ago 656 MB java 8 d23bdf5b1b1b 6 months ago 643 MB
- Dockerイメージからコンテナーを起動する
$ echo "ホスト9090をコンテナー8080へ転送で起動" $ docker run -p 9090:8080 -t spring-boot-demo:first $ echo "curlアプリ起動確認" $ curl http://localhost:9090
- イメージをDockerHubへpushする
$ echo "DockerHubへログイン" $ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: liguofeng29 Password: Login Succeeded $ echo "tagging" $ docker tag 9e6a5927b020 liguofeng29/spring-boot-demo:first $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE liguofeng29/spring-boot-demo first 9e6a5927b020 16 minutes ago 656 MB spring-boot-demo first 9e6a5927b020 16 minutes ago 656 MB java 8 d23bdf5b1b1b 6 months ago 643 MB $ echo "push" $ docker push liguofeng29/spring-boot-demo:first first: digest: sha256:b7161bd07457c52efa7b92565482df73e3b8f9da52f24439498397eecca0f1a4 size: 2212
- コンテナーに新しいjarを配置する
vi src/main/java/org/lee/App.java
@RequestMapping(value = "/now") String now() { return Calendar.getInstance().getTime().toString(); }
$ echo "再ビルド" $ mvn clean package $ echo "コンテナー一覧" $ docker ps -a $ echo "コンテナーにjarをコピーする" $ docker cp spring-boot-sample.jar コンテナーID:/opt/spring-boot-sample/ $ echo "コンテナー再起動" $ docker restart コンテナーID $ echon "検証" $ curl http://localhost:9090 $ curl http://localhost:9090/now → 時刻が表示される
- コンテナーからイメージを作成&DockerHubへpush
$ echo "commit" docker commit コンテナーID イメージ名:タグ名 例:docker commit 8eb5bba4cf8e liguofeng29/spring-boot-demo:second $ echo "イメージ一覧" docder images $ echo "push" $ docker push イメージ名:タグ名 例:docker push liguofeng29/spring-boot-demo:second
Dockerkコマンド一覧
コンテナ操作
- attach コンテナにアタッチ
- cp コンテナ・ホスト間でのファイルコピー
- create コンテナ作成
- diff コンテナのファイルシステム差分表示
- exec 既存コンテナでコマンド実行
- export コンテナをtarファイルで保存
- history コンテナの履歴を表示
- import tarファイルからコンテナ作成
- inspect コンテナ・イメージの情報表示
- kill コンテナの終了
- logs コンテナのログ(出力)取得
- pause コンテナの一時停止
- port 公開ポートの表示
- ps コンテナ一覧表示
- rename コンテナ名の変更
- restart コンテナの再起動
- rm コンテナの削除
- run コンテナの実行
- start コンテナの実行
- stats コンテナのリソース利用状況表示
- stop コンテナの停止
- top コンテナの実行状況表示
- unpause コンテナの再開
- update コンテナの設定を動的に変更
- wait コンテナの終了を待つ
イメージ操作
- build イメージのビルド
- commit コンテナからイメージ作成
- images イメージ一覧表示
- inspect コンテナ・イメージの情報表示
- load tarファイルからイメージ作成
- rmi イメージの削除
- save イメージをtar保存
- tag イメージにタグ名を設定
Docker Hub(レジストリ)
- login Docker Hub(レジストリ)にログイン
- logout Docker Hub(レジストリ)からログアウト
- pull Docker Hub(レジストリ)からコンテナ取得
- push Docker Hub(レジストリ)にコンテナ保存
- search Docker Hub(レジストリ)の検索
ネットワーク
- network connect コンテナをネットワークに接続
- network create ネットワーク作成
- network disconnect コンテナのネットワークからの切断
- network inspect ネットワークの状態表示
- network ls ネットワーク一覧
- network rm ネットワークの削除
ボリューム操作
- volume create ボリュームの作成
- volume inspect ボリュームの内容表示
- volume ls ボリュームの一覧表示
- volume rm ボリュームの削除
Swarmクラスタ
- node accept Swarmノードをクラスタに追加
- node demote Swarmノードをマネージャからワーカーに降格
- node inspect Swarmノードの状態表示
- node ls Swarmノードの一覧表示
- node promote Swarmノードをワーカからマネージャに昇格
- node rm Swarmノードをクラスタから削除
- service create Swarmクラスタ上にサービス作成
- service inspect Swarmクラスタ上にサービス状態表示
- service ls Swarmクラスタ上のサービ一覧表示
- service rm Swarmクラスタ上のサービス削除
- service scale Swarmクラスタ上のサービスのコンテナ数(task)変更
- service task Swarmクラスタ上のサービスのコンテナ(task)一覧表示
- service update Swarmクラスタ上のサービスの設定変更
- swarm init Swarmクラスタの作成
- swarm join Swarmクラスタへのノード追加
- swarm leave Swarmクラスタからのノード削除
- swarm update Swarmクラスタの設定変更
プラグイン
- plugin disable プラグインの無効化
- plugin enable プラグインの有効化
- plugin inspect プラグインの状態表示
- plugin install プラグインのインストール
- plugin ls プラグインの一覧表示
- plugin rm プラグインの削除
その他
- daemon サーバ起動
- events イベントの監視
- info Dockerの情報表示
- system df ディスク利用状況の表示
- system prune 不要なファイルの削除
- version バージョン表示