プログラミング

DockerでUbuntu最新版環境を最速で構築する方法

この記事ではDockerを使ってUbuntu環境を構築する方法に関して書きます。

前提(実行環境)

既にDockerがinstallされている前提で進めていきます。
Dockerがinstallされているか?の確認方法は下記コマンドを実行してください。

$ docker -v

Dockerがinstallされている場合は下記のように表示されます。

Docker version 20.10.5, build 55c4c88

DockerでUbuntuの最新の環境を構築する

それでは実際にUbuntu環境をつくっていきましょう!
コマンドの詳細は記事の後半にて解説をします。

Ubuntuのイメージを取得する

イメージはDocker Hubで共有されているので、そちらを利用します。

ターミナルで下記コマンドを実行しましょう。

$ docker pull ubuntu

このように記述することによって、自動的に最新版を取得してくれます。
下記のようにターミナルに出力がされます。

Using default tag: latest
latest: Pulling from library/ubuntu
a70d879fa598: Pull complete 
c4394a92d1f8: Pull complete 
10e6159c56c0: Pull complete 
Digest: sha256:3c9c713e0979e9bd6061ed52ac1e9e1f246c9495aa063619d9d695fb8039aa1f
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

これでイメージをinstallできたので確認をしてみましょう。
下記コマンドを入力すると確認することができます。

$ docker images
REPOSITORY                                 TAG        IMAGE ID       CREATED         SIZE
ubuntu                                     latest     26b77e58432b   6 days ago      72.9MB

DockerイメージからDockerコンテナを作成する

イメージのinstallが完了したので、イメージからコンテナを起動させます。
下記コマンドをターミナルで実行してください。

$ docker run -it -d --name myubuntu ubuntu

コマンドを実行するとコンテナが起動します。
コンテナの起動は下記コマンドで確認することができます。

$  docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
d7987eca366d   ubuntu    "/bin/bash"   3 seconds ago   Up 2 seconds             muybuntu

DockerでUbuntuに入る

コンテナが起動したためUbuntuに入り、作業を開始しましょう!
下記コマンドをターミナルで実行してください。

$ docker exec -it d7987eca366d bin/bash

実行が上手くいくと下記のような表示になるはずです。

root@d7987eca366d:/# 

これで自由に使えるUbuntu環境を構築することができました!

Dockerコマンドに関して学ぶ

実行してきた各コマンドに関して解説をします。

Docker Hub

Docker Hubはユーザーが作成したコンテナをアップロードして公開・共有できるサービスです。
概念として、Githubがイメージしやすいのではないでしょうか?

ここで公開されているコンテナは自由にダウンロードができます。また、公開されているコンテナは「リポジトリ」という単位で管理され、タグを使ったバージョン管理も可能です。

こちらからDocker Hubにアクセスすることができます。
Docker Hub

docker pull

docker pull コマンドは、イメージを Docker Hub から取得(pull)するコマンドです。

$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]

pullをする際、バージョンを指定してpullすることもできます。
下記の場合は、Ubuntu18.04のバージョンを指定してpullしています。

$ docker pull ubuntu:18.04

//下記はコマンド実行後のログ
18.04: Pulling from library/ubuntu
5a132a7e7af1: Pull complete
fd2731e4c50c: Pull complete
28a2f68d1120: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
Status: Downloaded newer image for ubuntu:18.04


バージョンを指定しない場合は自動で(最新)のものがインストールされます。

参考
docker pull | Docker Documentation

docker images

docker imagesコマンドは、docker imageの一覧を表示してくれます。

$  docker images [OPTIONS] [REPOSITORY[:TAG]]

そのため、docker pullでDocker Hubからインストールしたimageの一覧を確認することができます。

$ docker images

//以下実行結果
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
<none>                    <none>              77af4d6b9913        19 hours ago        1.089 GB
committ                   latest              b6fa739cedf5        19 hours ago        1.089 GB
<none>                    <none>              78a85c484f71        19 hours ago        1.089 GB
docker                    latest              30557a29d5ab        20 hours ago        1.089 GB
<none>                    <none>              5ed6274db6ce        24 hours ago        1.089 GB
postgres                  9                   746b819f315e        4 days ago          213.4 MB
postgres                  9.3                 746b819f315e        4 days ago          213.4 MB
postgres                  9.3.5               746b819f315e        4 days ago          213.4 MB
postgres                  latest              746b819f315e        4 days ago          213.4 MB

参考
docker images | Docker Documentation

docker run

docker runコマンドは、docker imageからコンテナを起動させるコマンドです。

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

今回実行したコマンドを元に[OPTIONS]の説明をしていきます。

$ docker run -it -d --name myubuntu ubuntu

-it

-itは、 -i と -t に分けることができます。

-i

「interactive」の略で、「双方向のやりとりができるようになること」、「ホストのターミナルからの入力がコンテナの標準入力につなげる役割」とのことです。

-t

「tty」の略で、「コンテナの標準出力をホストの標準出力につなげること」とのことです。

-d

-dは「デタッチド」のことです。このオプションを使うことによって、コンテナをデタッチド・モードで起動することができます。

デタッチド・モードで起動することによって、バックグラウンドでコンテナを立ち上げることができるため、コンソールを使うことができます。

バックグラウンドで立ち上げない場合、コンソールがコンテナのログに専有されて、他のコマンドを打つことができなくなります。

わかりずらいと思うので「-d」をなしで実際に実行してみます。

 $ docker run -it --name myubuntu ubuntu   
root@bc72f6742001:/# 

コンソールの入力画面が開かれました。
こちらは実際にオプションありなしで実行してみると、違いがわかりやすいと思います。

–name コンテナ名

「–name」オプションで、コンテナに名前をつけることができます。「–name」をつけない場合、任意で名前がつくため、運用がしずらくなるため名前をつけることをおすすめします。

docker ps

docker psコマンドは、コンテナの一覧を表示してくれます。

$ docker ps [OPTIONS]

「-a」オプションをつけることによって、停止中のコンテナも含めて表示してくれます。

$ docker ps -s

CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS       PORTS   NAMES        SIZE                                                                                      SIZE
e90b8831a4b8   nginx          "/bin/bash -c 'mkdir "   11 weeks ago   Up 4 hours           my_nginx     35.58 kB (virtual 109.2 MB)
00c6131c5e30   telegraf:1.5   "/entrypoint.sh"         11 weeks ago   Up 11 weeks          my_telegraf  0 B (virtual 209.5 MB)

参考
docker ps | Docker Documentation

docker exec

docker exec コマンドは、起動中のコンテナに入り、コンテナコマンドラインを起動してくれます。

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

docker runコマンドを実行時に「–name」オプションを指定しておくことによって、自分が名前をつけたコンテナ名で実行することができます。

参考
docker exec | Docker Documentation

DockerでのUbuntu環境構築のまとめ

いかがでしたか?
これで自分だけの、好き放題できる環境を構築することができました。

記事に関して気になる点がございましたら、TwitterなどでDMいただけますと幸いです!

エンジニア転職のロードマップはこちらから

エンジニア転職に関してまとめました。

tenshoku_cta

詳細はこちらから