LoginSignup
1
2

ゼロから始めるDocker体験記

Last updated at Posted at 2023-07-27

image.png

はじめに

以下のような条件をみたしておくと楽だけど、経験なくても問題なし

  • 前提条件
    • Linuxを触ったことがある
    • WSL2を導入済み

Dockerを使えるようになると、仮想マシンと違い軽く実行環境を構築することが可能になる

Dockerの導入

Dockerとはなんぞや

かるーく仮想技術について説明

  • 仮想技術には3種類存在する
    • ホスト型
    • ハイパーバイザー型
    • コンテナ型

Dockerはコンテナ型を利用していることだけは覚えておく

  • コンテナ型を使うメリット
    • 素早く仮想環境を作成、配布、実行できる
    • ほかのプラットフォームと同じ環境を構築しやすい
    • 動作が軽い

Linuxコマンドをがっつり使うため、コマンドを覚えていこう!

Dockerのインストール

Dockerの公式サイトからダウンロードできる
公式サイト

公式サイト

また、Windowsの場合、以下条件を満たせばDocker for Windowsをインストールするだけ!

  • 64bit
  • Windows 7以降
  • IntelならVT-x, AMDならAMD-vがCPUでサポートされている
  • Virtualizationを有効にしている

Docker toolboxが使えるようになるはずなので、確認しておこう

なお、dockerコマンドはDockerが起動していないと使えないため要注意!!

重要!一部企業ではDocker Desktopは使用できないため、自分でインストールすること! > 詳しくはこちら


事前準備

  • まずはDockerとWSLを用意
    • Docker DesktopがインストールされているならばDocker自体は大丈夫
    • dockerを操作するために、WSLを入れておくこと
      • Dcockerインストール方法はこちら
    • また、Windows11であればコマンド一つでWSL2導入できるよ
      • Windows11でのインストール方法はこちら
# dockerのバージョン確認
$ docker --version
$ docker version

また、以下コマンドにて動作状況を確認できる

# dockerの動作状況の確認
$ docker info

Dockerを動かしてみよう

Docker公式のイメージの取得

searchコマンドでDockerの公式が提供しているイメージを取得できる

ためしにnginxイメージを検索する

# nginxの検索
$ docker search nginx

検索したらpullコマンドでイメージを取得する

# イメージの取得
$ docker pull nginx

イメージを取得出来たら表示してみよう

imagesコマンドで表示できる

# 取得したイメージの表示
$ docker images

コンテナを生成して起動してみよう

nginxのログを出力するためのファイルをmkdirコマンドでホスト側に作成する

# ファイルの作成
$ mkdir -p nginx/log

作成したら、コンテナの生成と起動を同時に行うrunコマンドを使う

$ docker run -d -p 80:80 -v $(pwd)/nginx/log:/var/log/nginx --name webserver nginx

起動が出来たら(http://localhost:80) にアクセスして確認してみよう

コンテナ起動の確認

>オプション解説

  • -dはバックグラウンド実行を指定

  • -p 80:80はホスト側の80番ポートをコンテナ側の80番ポートに転送するように指定

  • -v$(pwd)/nginx/logをコンテナのディレクトリ/var/log/nginxとしてマウント

    • なお(pwd)はUnixのシェル機能でカレントディレクトリに置き換えられる
  • --name webserverは生成するコンテナに名前を付ける

  • nginxは生成に利用するイメージの名前

  • 本当は最後(イメージ名の後)に実行するコマンドを指定する点に注意!

    • nginxだけ特殊だということを知っておこう

起動して、確認できたならcatコマンドでログを確認してみよう

cat nginx/log/access.log
  • なお、コンテナを削除した時にコンテナ内のファイルも消されてしまう点に注意
    • -vで保存場所を避難しておけばなんとかなるかも・・・?

コンテナ内で作業してみる

execコマンドでコンテナ内でコマンド実行できる

# コンテナのコマンドラインに移動
$ docker exec -it webserver /bin/bash

>オプション解説

  • exec は指定したコンテナで指定したコマンドを実行

    • このコマンドで接続した場合、eixtしてもコンテナは起動したままであることに注意!
  • -itはコンテナ側のコマンドの入出力を手元のターミナルに接続

  • webserverはコンテナ名

  • /bin/bashが実行するコマンド

一度exitし、コマンドラインから抜ける

コマンドラインから抜ける


psコマンドで実行中のコンテナを確認できる

# 実行中のコンテナ確認
$ docker ps

コンテナを停止する

stopコマンドを使って停止させる

# コンテナを停止させる
$ docker stop webserver

停止したらpsコマンドで確認してみよう

またps -aで停止中のコンテナ含めてすべて表示可能

コンテナをイメージ化

commitコマンドを使ってイメージ化することが可能

※ただし、イメージ化には命名規約が存在するため注意!

<Docker Hubのユーザ名>/イメージ名:[タグ名]
  • なおpushするとDocker hubに行きます
    • 今回はしない
# Docker imageの作成
$ docker commit webserver webserver:0.0

作成されたイメージはimagesコマンドで確認可能

# イメージの確認
$ docker images

ただし-vで作成したボリュームはcommitでのイメージ化対象外である点に注意!

コンテナを起動する

runコマンドでは生成と起動を同時に行うため、新しく作られてしまう

startコマンドで既存のコンテナを起動させる

# コンテナの起動
$ docker start webserver

起動できたかどうかはpsコマンドで確認する

コンテナの削除

削除する前にコンテナを停止してあげよう(いきなり削除も可能)

stopコマンドで停止可能

# コンテナの停止
$ docker stop webserver

rmコマンドでコンテナを削除できる

# コンテナの削除
$ docker rm webserver

ps -aコマンドで削除されたか確認する

イメージの削除

rmiコマンドでイメージの削除が可能

削除の際にタグを指定しなければならないが、省略した場合latestと同じになる

$ docker rmi webserver:0.0
$ docker rmi nginx

削除されたらimagesコマンドで確認

参考サイト

1
2
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
1
2