インフラエンジニア

【初心者向け】DockerでUbuntuを環境構築する方法

こんちには、インフラエンジニアのれおです。

この記事分かること
  • Dockerとは何かわかる
  • Dockerのインストール方法がわかる
  • DockerでUbuntuを環境構築する方法がわかる

このような悩みを解決していきます。

Dockerの概念を理解することは、プログラマやインフラエンジニアに関わらずエンジニアとして必要な知識になっています。

初心者向けにDockerでUbuntu環境を構築したいという方は、ぜひ参考にして下さい。

Dockerとは?

Dockerとは、仮想コンテナ技術を用いたアプリケーション実行環境のことです。

Dockerを利用することで軽量かつ高速に開発環境を構築することができます。

Dockerとよく比較されるのが、仮想マシンでDockerのようなコンテナ技術を用いたものとは異なります。

両者の違いについては、『【図解】仮想マシンとコンテナ技術!!両者の違いについても解説します。』が参考になります。

【図解】仮想マシンとコンテナ技術!!両者の違いについても解説します。今回は、仮想マシンとコンテナ技術について説明した後両者の違いについて解説していきます。図を用いて解説しているので初心者の方でも分かりやすくなっています。 私自身は、まだまだ勉強中ですが仮想マシンの構築などに携わったりしています。そんな私が今回は解説していきます。...

Dockerのインストール方法

Dockerを利用するには、Docker Desktopをインストールする必要があります。

windowsOSの方はwindows版を、macOSの方はMac版でダウンロードを行います。

インストーラを起動することでDcokerのアプリケーションがインストールされます。

最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックします。

DockerでUbuntuを構築

準備が整ったので実際に仮想環境を構築していきましょう。

Dockerの構築方法としては、下記の2Stepです。

構築手順
  1. Dockerイメージの取得
  2. コンテナの作成と起動

Dockerイメージの取得

コンテナの元となるデータをDockerイメージといいます。

Dockerイメージは。コンテナが動作するためのファイル群です。

Dockerイメージは、生成することもできますがDocker HUBからイメージを取得できます。

イメージを取得するためには、docker pullコマンドを使用します。

【書式】docker pull イメージ名[:タグ名]

docker pull ubuntu:21.10
21.10: Pulling from library/ubuntu
166e0294b8df: Pull complete 
Digest: sha256:ff46b78279f207db3b8e57e20dee7cecef3567d09489369d80591f150f9c8154
Status: Downloaded newer image for ubuntu:21.10
docker.io/library/ubuntu:21.10

docker imagesでイメージが取得されているか確認しましょう。

docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       21.10     bedf4ab662ae   6 months ago   69.9MB
centos       7         c9a1fdca3387   9 months ago   301MB

ubuntuと表示されているのでイメージ取得完了です。

コンテナの作成・起動

Dockerイメージを取得したところで、コンテナを作成していきます。

コンテナの作成には、dokcer runコマンドを使用します。

ちなみに、作成すると自動で起動します。

【書式】docker run -it –name コンテナ名 イメージ名[:タグ名] シェル

オプションの意味を説明します。

  • it: ターミナルでコンテナを実行できる
  • name: コンテナに名前をつける

それでは、実行していきます。

docker run -it --name ubuntuTest ubuntu:21.10 /bin/bash
root@054b8db3ad9f:/# 

するとこのように、Ubuntuのbashを実行することができました。

念のためcatコマンドでOSのバージョンを確認しておきます。

[root@054b8db3ad9f:/# cat /etc/os-release
PRETTY_NAME="Ubuntu 21.10"
NAME="Ubuntu"
VERSION_ID="21.10"
VERSION="21.10 (Impish Indri)"
VERSION_CODENAME=impish
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=impish

基本操作

最低限知っておきたい操作を紹介します。

起動中のコンテナの確認

起動中のコンテナを確認するコマンドとして、docker psコマンドがあります。

Ubuntuのシェルとは、別のシェルを起動させて確認してみましょう。

docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS             PORTS     NAMES
054b8db3ad9f   ubuntu:21.10   "/bin/bash"   About an hour ago   Up About an hour             ubuntuTest

終了したコンテナも含めてコンテナを表示するには、-aをオプションとして指定します。

docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS                    PORTS     NAMES
054b8db3ad9f   ubuntu:21.10   "/bin/bash"   About an hour ago   Up About an hour                    ubuntuTest
083718ed848e   centos:7       "/bin/bash"   4 months ago        Exited (0) 3 months ago             centosTest

コンテナの停止・再開

起動しているコンテナを停止するには、docker stopコマンドを実行します。

【書式】docker stop コンテナ名またはコンテナID

docker stop ubuntuTest

確認してみます。

docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

何も起動していないようです。

先ほどは、docker runコマンドで作成と起動を同時に行いましたが、一度作成したコンテナはdocker startコマンドで起動させます。

【書式】docker start コンテナ名またはコンテナID

docker start ubuntuTest

起動されているか確認します。

docker ps   
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS          PORTS     NAMES
054b8db3ad9f   ubuntu:21.10   "/bin/bash"   About an hour ago   Up 59 seconds             ubuntuTest

きちんと起動されていることが確認できました。

コンテナへの接続

起動中のコンテナに接続するには、docker attachコマンドを使用します。

【書式】docker attach コンテナ名またはコンテナID

docker attach ubuntuTest
[root@054b8db3ad9f:/# 

これでコンテナへの接続ができました。

コンテナから抜けてコンテナを終了するには、コンテナ内でexitコマンドを使用します。

[root@054b8db3ad9f:/# exit
exit

まとめ

今回は、DockerでUbuntuを構築する方法を解説しました。

流行の技術であるDockerを理解してしっかりと使えるようになっておくと良いと思います。