Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
(取っ掛かりとしての)Docker入門
Search
Satoshi Shinyashiki
June 01, 2019
Programming
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(取っ掛かりとしての)Docker入門
社内向け勉強会の資料となります
Satoshi Shinyashiki
June 01, 2019
Other Decks in Programming
See All in Programming
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
ChromeでローカルLLM
ryu1013
0
140
すこし踏み込む CancellationToken
htkym
2
1.7k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
180
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
AmebaブログはKMPから卒業します
kmars0605
0
180
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
残高管理から台帳サービスへの進化
artoy
1
200
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
sira's awesome portfolio website redesign presentation
elsirapls
0
450
How GitHub (no longer) Works
holman
316
150k
A designer walks into a library…
pauljervisheath
211
25k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
エンジニアに許された特別な時間の終わり
watany
109
250k
The Language of Interfaces
destraynor
162
27k
Design in an AI World
tapps
1
350
The agentic SEO stack - context over prompts
schlessera
0
970
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
(取っ掛かりとしての) Docker入門
当発表の目的・ゴール ・Dockerを使って最低限の事を出来るようにする ・Dockerについての概要をざっくり理解 ・簡単な環境を構築 ・作った環境を共有して使いまわす ・今後各自で学んでいく為の取っ掛かりになれば
1.Dockerとは 2.Dockerを使うメリット 3.実演 アジェンダ
1.Dockerとは Linux OS Docker (デーモンプロセス) コン テナ Dockerコンテナ型仮想化 ・アプリケーション実行環境を構築するツール ・Linux標準のコンテナ型仮想化技術を使用している
・「コンテナ」とよばれる仮想領域ごとにアプリケーションと実行環境をまとめる ・コンテナはDockerが導入されているサーバであれば配布が可能 カーネル CentOS Apache RedHat Tomcat Ubuntu MySQL Linux OS Docker カーネル Ubuntu MySQL Linux OS Docker カーネル RedHat Tomcat CentOS Apache
1.Dockerとは 名称 説明 Dockerイメージ アプリケーションのインストールや各種設定など、アプリケーションが動作する のに必要な情報が全てまとめられたもの。 Dockerコンテナ Dockerイメージによってまとめられたアプリケーションが実際に動いている状 態(プロセスとして動いている状態)のもの。 Dockerレジストリ
Dockerイメージをバージョン管理するシステム。 クラウドサービスとしての Docker Hubや個人用レジストリなどがある。 Dockerイメージ、コンテナ、レジストリとは
1.Dockerとは Dockerイメージ、コンテナ、レジストリの関係 openjdk8のイメージを 取得 Javaアプリを デプロイ コンテナ化 イメージ「java-app」とし て登録 登録したイメージを
別環境で取得 openjdk8 Javaアプリ openjdk8 openjdk8 Javaアプリ openjdk8 Javaアプリ コンテナ化 Dockerレジストリ openjdk8 java-app
2.Dockerを使うメリット ・手軽にミドルウェアを試せる ・最新のElasticsearchを試してみよう、とか ・環境構築の手順をコードで管理できる ・「Infrastructure as Code」の実現 ・環境差異が起こりづらい ・一度作ったアプリ環境はDockerイメージとして共有 ・環境に修正が入る場合はイメージを新たに作る
・「Immutable Infrastracture」の実現
3.実演 0)事前準備 1)もっとも簡単なやりかた 2)Dockerfileを使用したやりかた 3)Dockerイメージの共有 4)Docker Composeを使用したやりかた
3.実演 0)事前準備 ・Dockerインストール https://docs.docker.com/install/#supported-platforms ・Docker Hubアカウント作成 https://hub.docker.com/signup
3.実演 1)もっとも簡単なやりかた # Elastic社公式Dockerイメージを取得 $ docker image pull docker.elastic.co/elasticsearch/elasticsearch:7.0.1 # イメージを確認
$ docker image ls # コンテナ化 $ docker container run -d --name sample-es01 -p 19200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.0.1 # コンテナ確認 $ docker container ls # Elasticsearch確認 $ curl localhost:19200 # コンテナ内に疑似ログイン $ docker container exec -it sample-es01 bash 例えばElasticsearchなどのミドルウェアを手軽に試してみたい場合、 docker image pull と docker container run のたった2つのDockerコマンドで 簡単にコンテナを作成することができる
3.実演 2)Dockerfileを使用したやりかた 取得したイメージに対してインストールや初期設定といった作業を追加する場合は、その作 業自体を自動化したほうがよい。 その場合は、Dockerfileを使用し作業手順のコード化を行う。 CentOS7のイメージを 取得 Elasticsearch7の インストール& 初期設定 コンテナ化
この一連の作業をDockerfileに記載する CentOS7 CentOS7 Elasticsearch7 CentOS7 Elasticsearch7 CentOS7 Docker Hub
3.実演 2)Dockerfileを使用したやりかた #ベースはCentOS7 FROM centos:centos7 #必要なソフトウェアをインストール RUN yum install -y java
wget #ユーザ「elasticsearch」を追加 RUN groupadd -g 1000 elasticsearch && \ adduser -u 1000 -g 1000 -d /usr/share/elasticsearch elasticsearch USER elasticsearch WORKDIR /usr/share/elasticsearch #Elasticsearch7のダウンロード RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz \ && tar zxvf elasticsearch-7.0.1-linux-x86_64.tar.gz #Elasticsearchの初期設定 RUN echo -e $"\n\ network.host: 0.0.0.0\n\ discovery.type: single-node\n\ " >> /usr/share/elasticsearch/elasticsearch-7.0.1/config/elasticsearch.yml #コンテナ起動時にElasticsearchをフォアグラウンドで起動 CMD ["/usr/share/elasticsearch/elasticsearch-7.0.1/bin/elasticsearch"] EXPOSE 9200 Dockerfile
3.実演 2)Dockerfileを使用したやりかた $ ls Dockerfile # ビルド実行 $ docker image build
-t sample-es02 . # コンテナ化 $ docker container run -d --name sample-es02 -p 29200:9200 sample-es02 # Elasticsearch確認 $ curl localhost:29200 Dockerfile作成後は docker image build でイメージのビルドを行う
公式リポジトリ 3.実演 3)Dockerイメージの共有 作成したイメージはDokcer Hubに登録することで別環境との共有が可能。 なお、イメージは自分( Docker Hubアカウント)が所有するリポジトリにのみ登録することができる。 イメージ取得 イメージをカスタマイ ズしてビルド
イメージ名 sample-es02 イメージ名 shinyashikis/my-elasticsearch7:0.0.1 イメージにタグ付け shinyashikisが 所有するリポジトリ CentOS7 CentOS7 my-elasticsearch 7:0.0.1 CentOS7 Elasticsearch7 CentOS7 Elasticsearch7 イメージ登録 Docker Hub
3.実演 3)Dockerイメージの共有 # 3.実演 2)で作成したイメージ「sample-es02」に対しタグ付け $ docker image tag sample-es02 shinyashikis/my-elasticsearch7:0.0.1 #
イメージ確認 $ docker image ls Docker Hub上の自分のリポジトリに登録するには、まず登録するイメージに対し、 Docker HubアカウントID/イメージ名[:タグ名] の形式でタグ付けを行う必要がある。
3.実演 3)Dockerイメージの共有 # Docker Hubにログイン $ docker login -u shinyashikis -p
xxxxxxxxxxxxx # タグ付けしたイメージをDocker Hubに登録 $ docker push shinyashikis/my-elasticsearch7:0.0.1 ---------------------------------------- # 別環境でDocker HubよりイメージをPULL $ docker pull shinyashikis/my-elasticsearch7:0.0.1 タグ付け後は、Docker Hubへログインし、docker push コマンドにより登録処理を行う。
3.実演 4)Docker Composeを使用したやりかた 複数コンテナ構成の場合、コンテナ間の通信やコンテナの起動順などを考慮する必要が出てくる。 そのようなケースにおいては、マルチコンテナ管理ツールである Docker Composeを使用したほうが管 理しやすい。 イメージを取得 アプリの デプロイ
この一連の作業をDockerfileに記載する コンテナ化 連携 イメージを 取得 この一連の作業をDocker Composeで管理する CentOS7 Elasticsearch7 openjdk8 spring-boot アプリ openjdk8 openjdk8 shinyashikis/my -elasticsearch7: 0.0.1 openjdk8 spring-boot アプリ CentOS7 Elasticsearch7 コンテナ化 Docker Hub
3.実演 4)Docker Composeを使用したやりかた 今回は、ブラウザから spring-bootコンテナへアクセスすると、 Elasticsearchの情報を表示する簡単なア プリを構築する。 なお、spring-bootコンテナからElasticsearchコンテナへの接続はホスト名「 my-elasticsearch」で行えるよ うにする。 HOST:
my-elasticseach PORT: 9200 http://localhost:48080/myEsInfo openjdk8 spring-boot アプリ CentOS7 Elasticsearch7
3.実演 4)Docker Composeを使用したやりかた $ tree . ├── docker-compose.yml # コンテナの構成を管理するファイル └──
my-spring-boot ├── Dockerfile # spring-boot用Dockerfile └── sample-es-0.0.1-SNAPSHOT.jar # spring-bootアプリ 以下のディレクトリ構成で必要な資材を配置する。 なお、Elasticsearchのイメージについては、「3.実演 3)」で作成したイメージを使用する。
3.実演 4)Docker Composeを使用したやりかた #ベースはJDK8イメージ FROM openjdk:8-jdk-alpine #アプリをjava-app.jarとしてデプロイ COPY ./sample-es-0.0.1-SNAPSHOT.jar java-app.jar #アプリ実行
CMD ["java","-jar","/java-app.jar"] my-spring-boot/Dockerfile version: "3" services: my-spring-boot: build: my-spring-boot/ # spring-boot用Dockerfileの格納先を指定 image: sample-sb04 #イメージ名 container_name: sample-sb04 #コンテナ名 ports: - 48080:8080 links: - my-elasticsearch #Elasticserchコンテナへ通信する際のエイリアス my-elasticsearch: image: shinyashikis/my-elasticsearch7:0.0.1 #3)で作成したイメージを指定 container_name: sample-es04 #コンテナ名 ports: - 49200:9200 docker-compose.yml
3.実演 4)Docker Composeを使用したやりかた $ ls docker-compose.yml my-spring-boot #ビルド実行 $ docker-compose up
-d #コンテナ確認 $ docker-compose ps #ブラウザで確認 http://localhost:48080/myEsInfo docker-compose.ymlなど必要な資材配置後は docker-compose up コマンド一発でビルド&コンテナの 起動が行われる。
Appendix
・Dockerコマンド http://docs.docker.jp/engine/reference/commandline/ ・Dockerfileリファレンス http://docs.docker.jp/engine/reference/builder.html ・Dockerfileベストプラクティス http://docs.docker.jp/engine/userguide/eng-image/dockerfil e_best-practice.html ・Docker Compose http://docs.docker.jp/compose/toc.html
・実演 2)Dockerfileを使用したやりかた https://github.com/shinyashikis/docker-sample02 ・実演 4)Docker Composeを使用したやりかた https://github.com/shinyashikis/docker-sample04 ・Docker Hub https://hub.docker.com/u/shinyashikis ・サンプルspring-boot https://github.com/shinyashikis/sample-es