Linux OSについての基礎知識を、実践を通して身につけたい。
でも、
・UTM(仮想化ソフト)は、重すぎて使えなかった
・新しいPCを用意するのは、ハードルが高い
どうにか手元にあるMac PCでLinux環境を簡単に作れないものか...
という悩みを、Dockerを使用してUbuntu(Linuxの一種)の仮想環境を構築することで解決しました。
この記事では、その方法についてシェアします。
はじめに
この記事の想定読者
- インフラ(特にOS)の初学者
- Linuxの環境を簡単に作って触りたい人
この記事で書くこと
Ubuntuの仮想環境の構築手順
この記事で書かないこと
- Dockerそのものについての詳細な説明
- Dockerのインストール方法(こちらを参照)
環境条件
- MacBook Air
- チップ: M1
- OS: Ventura 13.5.1
- Dockerバージョン: 23.0.5
MacでLinux環境を構築する方法
以下の3ステップで作れます
- Dockerファイルを作成する
- ビルドする
- 起動する
1. Dockerファイルを作成する
今回はLinuxの環境を作るのがゴールなので、以下のようにOSとコマンドを1つ設定したファイルを使用します。
# 最新のUbuntuイメージを使用
FROM ubuntu:latest
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
クリックしてDockerファイルの説明を見る
要素 | 説明 |
---|---|
FROM | どのOSを動かしたいか |
CMD | 「CMD ["bash"]」 で、コンテナ起動直後にubuntu内で操作できる |
2. ビルドする
以下のコマンドを実行します。
docker build -t my_ubuntu .
クリックしてビルドコマンドについて説明を見る
要素 | 説明 |
---|---|
-t | イメージ名を指定する
※「ubuntu」以外の名前に指定すること |
. | Dockerfileを作成したディレクトリ
※上記コマンドの場合は、現在のディレクトリ |
以下のように表示されれば、正常にビルド完了です。
[+] Building 112.2s (9/9) FINISHED
3. 起動する
以下のコマンドを実行します。
docker run -it --name my_container my_ubuntu bash
クリックして起動マンドについて説明を見る
要素 | 説明 |
---|---|
-it | コンテナ内に入り、コマンドラインで操作したい時に指定する |
--name | 任意のコンテナ名を指定する |
bash | どのシェルを使用してコマンドライン操作するかを指定する
※今回はbashを使用 |
以下のようにプロンプトが表示されれば、Ubuntuの環境を起動完了です。
root@0c01adbb637f:/myapp#
使用後はdocker stop コンテナ名
でコンテナを停止します(起動したまま放置するとリソース食うので)。
最後に1点補足です。
以下のように、Dockerファイルを作成しなくても、コマンドでもっと簡単にUbuntuの環境を構築する方法はあります。
docker run -it ubuntu:latest
ただ、Dockerfileを作成する方法も自分でカスタマイズできて便利なので、こちらの方法を紹介しました。
「カスタマイズできる」というのは、たとえば、上記コマンドで構築したUbuntu環境では、sudo
やpython
が使えません。
$ docker run -it ubuntu:latest
(中略)
Status: Downloaded newer image for ubuntu:latest
root@e03a5cdbd2f9:/# sudo ls
bash: sudo: command not found //sudoコマンドがない
root@e03a5cdbd2f9:/# python --version
bash: python: command not found //pythonがない
これらを使用したいとなった場合、起動後に、逐一apt-get install -y パッケージ名
を実行してインストールする必要があります。
一方で、Dockerfileに以下のように記述・起動することで、上記操作の手間を省けます。
# 最新のUbuntuイメージを使用
FROM ubuntu:latest
# 以下のように記述することで、起動時に各パッケージが利用できる状態になる
RUN apt-get update && apt-get install -y \
python3 \
sudo
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
最後までお読みいただき、ありがとうございました。