■概要
上記動画を学習しました。
■Dockerコマンド
image build
Dockerfileからイメージ作成。
タグ名をsample/webrick/latest
にする。
現在のディレクトリのDockerfileを参照。
docker image build -t sample/webrick:latest .
image ls
イメージの一覧が見れる。
docker image ls
container run
「sample/webrick:latest」イメージからコンテナ作成。
コンテナの8000番ポートとローカルマシンの8000番ポートを関連付ける。
コンテナ名を「webrick」とする。
docker container run -p 8000:8000 --name webrick sample/webrick:latest
container stop
起動中コンテナを停止する。
以下コマンドの場合、「webrick」コンテナを停止。
docker container stop webrick
container start
停止中のコンテナを起動。
docker container start webrick
container rm
「webrick」コンテナを削除。
docker container rm webrick
container logs
「webrick」コンテナのログを見れる。
docker container logs webrick
container exec
「webrick」コンテナでruby -v
を実行する。
対象コンテナに入らなくても実行できる。
docker container exec webrick ruby -v
起動中コンテナに移動し、シェル(bash)を起動。
docker container exec -it webrick /bin/bash
system prune
全てのイメージ、
停止中コンテナを削除。
docker system prune -a
■Docker起動
Cドライブ直下にディレクトリ「docker」を作成後
下記の2ファイルを作成しました。
require 'webrick'
server = WEBrick::HTTPServer.new(
DocumentRoot: './',
BindAddress: '0.0.0.0',
Port: 8000
)
server.mount_proc('/') do |req, res|
res.body = 'hello'
end
server.start
↑フレームワーク「webrick」を利用して、サーバーを起動する処理です。
FROM ruby:2.7
RUN mkdir /var/www
COPY main.rb /var/www
CMD ["ruby", "/var/www/main.rb"]
- DockerHubのrubyのver.2.7を元にします。
- ディレクトリ作成後、main.rbをコピーします。
- main.rb実行します。
■Dockerfileの書き方
FROM ruby:2.7
WORKDIR /var/www
COPY ./src /var/www
RUN bundle config --local set path "vendor/bundle" \
&& bundle install
CMD ["bundle", "exec", "ruby", "app.rb"]
FROM
元となるイメージ
WORKDIR
作業ディレクトリの指定
COPY
ディレクトリ、ファイルのコピー
RUN
イメージをビルドする際に一度だけ実行されるコマンド
CMD
コンテナが起動するたびに実行されるコマンド
■Docker Compose
以下のコードだと、
webとdbという2つのコンテナを定義しています。
version: '3'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./src/db/mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- ./src:/app
ports:
- "3000:3000"
environment:
RAILS_ENV: development
depends_on:
- db
run
上記のdocker-compose.ymlファイルで定義したコンテナのうち、webコンテナを作成・起動させ、
起動後にweb rails new . --force --database=mysql
を実行する。
docker-compose run web rails new . --force --database=mysql
build
docker-compose.yml
ファイルで、
build:
と指定がある場合、
指定されているパスにあるDockerfileからイメージを作成する。
docker-compose build
up
全コンテナ起動。
docker-compose up
イメージのビルドも行う。
docker-compose up --build
down
コンテナ停止&削除。
docker-compose down
コンテナ停止&削除&イメージ削除。
docker-compose down --rmi all
rm
コンテナ削除。
docker compose rm
ls
一覧が見れる。
docker compose ls
stop
コンテナ停止。
docker compose stop
start
コンテナ実行。
docker compose start
ps
起動中のコンテナが見れる。
docker-compose ps
logs
ログが見れる。
docker-compose logs
cp
webコンテナの/usr/local/apache2/htdocs/index.html
ファイルを
ローカルマシンのカレントディレクトリにコピーする。
docker compose cp web:/usr/local/apache2/htdocs/index.html .
ローカルの./index.htmlファイルを
webコンテナの/usr/local/apache2/htdocs/index.html
としてコピーする。
docker compose cp index.html web:/usr/local/apache2/htdocs/index.html
exec
コンテナ「web」で/bin/bash
コマンド実行。
docker-compose exec web /bin/bash
■コンテナ内のデータの永続化
下記の2種類がある。
ボリューム
volumes
と記述することで実装可能。
直接変更することがないデータに向いている。
バインドマウント
ホストOSのフォルダー、ファイルをマウントする仕組み。
変更の頻度が高いデータに向いている。