5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初学者向け】(改良版) Docker上でLinux環境を構築しよう!(Ubuntu)

Last updated at Posted at 2023-05-15

はじめに

この記事は、以前書いたこちらの記事 :【初学者向け】Docker上でLinux環境を構築しよう!(Ubuntu) の改良版となっています。
Ubuntu のインストールだけではなく、Vim のインストールと 日本語 の設定も1回でまとめてできるようになっています。
こちらを用いれば、Linuxの学習に必要な環境はほぼ揃うのではないかと思います。
Linuxの学習教材としては、LPI-Japanが無償で公開している『Linux標準教科書』がおすすめです。
では参りましょう!

1. Docker Desktopのインストールと実行

まず「Docker Desktop」をインストールする必要があります。
以下のリンクから最新版をダウンロードしてインストールしてください。

Download Docker Desktop | Docker

インストールが完了したら、Docker Desktopを起動してください。
起動すると画面上部のバーにDockerのアイコンが表示されます。

2. Ubuntu のイメージを取得

ターミナルを開いて、以下のコマンドを入力してUbuntuの最新バージョンのイメージを取得します。

docker pull ubuntu:latest

ちゃんとpullできているか、下記のコマンドで確認してみましょう。

docker images

REPOSITORYのところに ubuntu があればOKです!

3. Dockerfileの作成

以下は日本語ロケールの設定とVimのインストールを含む、UbuntuのDockerイメージをビルドするためのDockerfileです。

  • Dockerfile
# Ubuntuイメージをベースにする
FROM ubuntu:latest

# apt-getがインタラクティブなフロントエンドを使用しないように設定
ENV DEBIAN_FRONTEND=noninteractive

# ロケールの設定とVimのインストール
RUN apt-get update && apt-get install -y locales vim && rm -rf /var/lib/apt/lists/* \
    && localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.UTF-8  

# コンテナ起動時の作業ディレクトリを設定
WORKDIR /root

# コンテナが起動する際にbashを実行(コンテナが停止しないように)
CMD ["bash"]

このDockerfileは以下のステップを実行します。

  1. Ubuntuの最新版をベースイメージとして使用します。
  2. apt-getがインタラクティブなフロントエンドを使用しないように設定します。これにより、Dockerイメージのビルドプロセスがインタラクティブなプロンプトで中断されることを防ぎます。
  3. localesパッケージをインストールし、日本語ロケールを設定します。
  4. Vimをインストールします。
  5. コンテナが起動したときの作業ディレクトリを/rootに設定します。
  6. (コンテナがすぐに停止しないように、)コンテナ起動の際にbashを実行する。
各コードの解説
  • FROM ubuntu:latest
    この行は今回作成するDockerイメージのベースとなるイメージを指定します。ここでは最新のUbuntuイメージを指定しています。

  • ENV DEBIAN_FRONTEND=noninteractive
    ENVは環境変数を設定するための命令です。ここではDEBIAN_FRONTENDnoninteractiveに設定しています。これは、Dockerイメージのビルド時にapt-getコマンドがインタラクティブモードを使用しないようにするための設定です。これにより、Dockerイメージのビルドプロセスがインタラクティブなプロンプトで中断されることを防ぎます。

  • RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* && localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
    RUNはシェルコマンドを実行するための命令です。ここでは一連のコマンドを実行して、日本語のロケールを設定しています。まず、apt-get updateでパッケージリストを更新し、次にapt-get install -y localesでlocalesパッケージをインストールします。そして、/var/lib/apt/lists/*を削除してディスクスペースを節約し、最後にlocaledefコマンドで日本語のUTF-8ロケールを定義します。

  • ENV LANG ja_JP.UTF-8
    ここではLANG環境変数をja_JP.UTF-8に設定して、デフォルトのシステムロケールとして日本語を使用するように指定しています。

  • RUN apt-get update && apt-get install -y vim
    ここでもRUN命令を使用していますが、今回はvimエディタをインストールしています。

  • WORKDIR /root
    WORKDIRはコンテナが起動したときの作業ディレクトリを設定するための命令です。ここでは作業ディレクトリを/rootに設定しています。これにより、コンテナが起動したときに自動的に/rootディレクトリに移動します。また、後続のRUN, CMD, ENTRYPOINT, COPYおよびADD命令の実行ディレクトリもこのWORKDIRで指定したディレクトリとなります。


「/var/lib/apt/lists/*」を削除する理由

/var/lib/apt/lists/* を削除することは必須ではありませんが、推奨されます。なぜなら、この操作により不要なファイルを削除して Docker イメージのサイズを小さく保つことができるからです。

具体的には、apt-get update を実行すると、/var/lib/apt/lists/ ディレクトリにパッケージリストのファイルがダウンロードされます。このパッケージリストは、次に apt-get install を実行する際にどのパッケージをダウンロードするかを決定するために使用されます。

しかし、Docker イメージがビルドされると、これらのパッケージリストはもはや必要ではありません。したがって、これらを削除することでイメージのサイズを削減することができます。

イメージのサイズを小さく保つことは、ストレージスペースの節約だけでなく、イメージの配布やデプロイも高速化します。したがって、イメージを作成する際には通常、不要なファイルを削除してイメージのサイズを最小限に抑えることが推奨されます。


4. Dockerイメージのビルド

このDockerfileを使用してDockerイメージをビルドするには、Dockerfileが存在するディレクトリで 以下のコマンドを実行します。

docker build -t my-ubuntu-image .

これで、日本語ロケールの設定とVimがインストールされたUbuntuのDockerイメージがビルドされます。

コードの解説

docker build -t my-ubuntu-image . というコマンドは Docker イメージをビルドするためのものです。具体的には以下のような機能があります。

  • docker build
    これは Docker イメージをビルドするためのコマンドです。Dockerfileと呼ばれるテキストファイルに従って新しい Docker イメージが作成されます。Dockerfile は、ベースとなるイメージから始めて、さまざまな命令(パッケージのインストール、環境変数の設定、ファイルのコピーなど)を実行して新しいイメージを作成します。

  • -t my-ubuntu-image
    この -t オプションは "tag" を意味し、ビルドした Docker イメージに名前(タグ)を付けるために使用されます。ここでは作成される Docker イメージに my-ubuntu-image という名前(タグ)を付けています。

  • .
    最後の . は Dockerfile が存在するディレクトリを指しています。つまり、現在のディレクトリに Dockerfile があるという意味です。Docker はこのディレクトリを "ビルドコンテキスト" として使用します。ビルドコンテキストは Docker イメージをビルドするために Docker デーモンに送信されるファイル群です。

以上のコマンドを実行すると、現在のディレクトリにある Dockerfile に従って新しい Docker イメージがビルドされ、そのイメージに my-ubuntu-image という名前が付けられます。


ちゃんとDockerイメージが作成できているか、下記のコマンドで確認してみましょう。

docker images

REPOSITORYのところに my-ubuntu-image があればOKです!

5. イメージをもとにコンテナを実行する

先ほどビルドしたDockerイメージをもとに、以下のコマンドを使用して新しいコンテナを作成・起動します。

docker run -it --name myubuntu my-ubuntu-image

このコマンドではmy-ubuntu-imageイメージから新しいコンテナを作成し、新しいコンテナにmyubuntuという名前を付けます。
以上で既にコンテナの中に入っている状態です。コンテナから抜けるにはexitコマンドを実行します。

《補足》コンテナ実行時のコマンド(オプション)について

コンテナ実行時のコマンド(オプション)はいくつかあります。以下にそれぞれのコマンドの説明をします。

  1. docker run -it --name myubuntu my-ubuntu-image
    このコマンドは、新しいコンテナをインタラクティブモードで起動し、そのシェルに直接アクセスします。-itオプションは、コンテナの標準入力を開き続け(-i)、TTY(端末)を割り当てる(-t)ことを意味します。このコマンドは、コンテナ内で直接作業を行いたい場合 に適しています。

  2. docker run -d --name myubuntu my-ubuntu-image
    このコマンドは、新しいコンテナをバックグラウンドモード(デタッチモード)で起動します。-dオプションは、デタッチモードを意味します。このコマンドは、長期間稼働させるサービスやアプリケーションをコンテナ内で実行する場合に適しています。

どちらのコマンドを使用するべきかは、あなたがどのようにコンテナを使用したいかによります。直接コンテナ内で作業を行いたい場合は、インタラクティブモードでコンテナを起動するコマンドを使用します。一方、バックグラウンドでサービスを実行する場合は、デタッチモードでコンテナを起動するコマンドを使用します。


この時点で コンテナの中に入っている 状態です。
現在のワーキングディレクトリは /root なので、例えばここで lsコマンドを実行しても何も出力されませんので注意してください。ディレクトリ構造を確認したい場合などは、cd /でルードディレクトリまで移動してからlsコマンドを実行しましょう。

操作が完了したらexitコマンドで コンテナから抜ける ことができます。
最後に、docker psコマンドを用いてコンテナの状態を確認しましょう。コンテナが実行中だった場合は、docker stop myubuntuコマンドでコンテナを停止しましょう(たぶん初回起動時はコンテナから抜けた時点で停止すると思いますが)。

またコンテナを起動してLinuxを触りたい時

まずは停止したコンテナを起動します

docker start myubuntu

コンテナの中に入ります

docker exec -it myubuntu bash

これでOKです!
終わりにしたいときの手順は前と一緒です。
exitコマンドでコンテナから抜けて、docker stop myubuntuコマンドでコンテナを停止しましょう。

最後に

以上で、Docker Desktopを使ってLinux(Ubuntu)の環境を構築する手順が完了となります。
Linuxの学習教材としては、LPI-Japanが無償で公開している『Linux標準教科書』がおすすめです。
初学者にとっては簡単な内容じゃないと思いますが、とても基礎的な知識がコンパクトにまとまっていますので、ぜひこの記事を参考に環境構築をしてコマンドなどを練習してみてください。
それではまた!(^_^)ノシ

5
9
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
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?