LoginSignup
0
0

【備忘録 #4】Dockerの基本

Last updated at Posted at 2023-11-07

■概要

上記動画を学習しました。

■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ファイルを作成しました。

main.rb
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」を利用して、サーバーを起動する処理です。

Dockerfile
FROM ruby:2.7

RUN mkdir /var/www
COPY main.rb /var/www

CMD ["ruby", "/var/www/main.rb"]
  1. DockerHubのrubyのver.2.7を元にします。
  2. ディレクトリ作成後、main.rbをコピーします。
  3. 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つのコンテナを定義しています。

docker-compose.yml
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
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