#前提条件
OS
MacOS Monterey 12.0.1
CPU
Apple M1(arm64)
Docker
Docker Desktop 4.2.0 (70708)
CentOS
CentOS Linux release 7.9.2009 (AltArch)
#やりたいこと
記事名のとおりです。
#手順
###1 M1MacBookにDockerをインストール
Docker desktopをインストールします。
(M1をお使いの場合は、Apple chipの方をインストールしてください)
###2 Dockerデーモン起動のためのコマンドをMacのターミナルに入力
(中央に示されたコマンドをコピペします)
% docker run -d -p 80:80 docker/getting-started
Dockerデーモンが起動すると思います。
⇨イメージ名「docker/getting-started」を用いたコンテナを新規作成してます。
【コマンド詳細(オプション)】
-d: コンテナーをデタッチ(detached)モード、つまりバックグラウンドで実行し、コンテナIDを付与します。
--detach Run container in background and print container ID
-p 80:80: ホストの 80 ポートをコンテナーの 80 ポートにマッピングします。
-p, --publish list Publish a container's port(s) to the host
###3 Docker HubからCentOS7のイメージを取得(pull)
% docker pull centos:centos7
●イメージ取れたことを確認
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7 dfc30428e163 8 weeks ago 301MB
docker/getting-started latest 613921574f76 5 months ago 26.7MB
①docker desktopを起動したときに使ったdocker/getting-startedのイメージと、
②先ほどpullしたCentOSのイメージ
の2つがきちんと取得できていることが分かります。
###4 取得したイメージを使ってコンテナを作成
% docker run -it -d --name centos7 centos:centos7
【コマンド詳細(オプション)】
-nameオプションはそのまま、コンテナにCentOS7という名前をつけるために使っています。
オプションの「-it」の意味は下記。
【-iオプション】
Dockerホストとコンテナ内のシェルを接続したままにする
-i, --interactive Keep STDIN open even if not attached
※interactive=対話、相互作用
※STDIN=標準入力 【standard input】
【-tオプション】
コンテナ内のシェルが使用するttyを割り当てる
-t, --tty Allocate a pseudo-TTY
Allocate=割り当てる
pseudo=擬似
⇨コンテナで構築したCentOSのシェル(bash)へ擬似的に端末を割り当てる?という意味合いかと思います(すいません、上手く表現できません。。。)
【-dオプション】
前述の通りです。
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a412e1af0a1 centos:centos7 "/bin/bash" 8 seconds ago Up 8 seconds centos7
6a588ccfd4cf docker/getting-started "/docker-entrypoint.…" 29 minutes ago Up 29 minutes 0.0.0.0:80->80/tcp quirky_carson
↑作成したコンテナが起動したことを確認。
起動中のコンテナを一覧表示(List containers)するコマンドです。
※psコマンドは Linuxコマンドにおいて「Process Status」(実行中のプロセス表示)の意味で登場します。
###5 作成したCentOSコンテナ内でLinuxコマンドを使えるようにする
コンテナが無事起動したら、CentOSを動かせるようにします。
docker exec -it centos7 /bin/bash
※ exec=execute(実行する)
【docker exec】
docker execコマンドは、指定したコマンドやスクリプトなどを、指定したコンテナ内部で起動することができます。
exec Run a command in a running container
(起動中のコンテナ内でコマンドを実行する)
⇨ここでは、CentOSのコマンドを実行できるようにする、ということですね。
オプションの「-it」の意味は前述の通りです。
【centos7 /bin/bash】
コンテナ名 / コマンド
※コマンドは、上記docker -psの時にCOMMANDとして出力されています
初回はここまでの手順を踏むことで、CentOS環境が構築できます。
###6 次回以降の起動
1.Docker desktopを起動
2.Macターミナルにて、
docker start centos7
CentOS7コンテナが起動するので、初回同様、rootユーザとして CentOSのシェルにコマンドを叩けるようにします。
docker exec -it centos7 /bin/bash
ありがとうございました。
#補足
Macのターミナルで
docker --help
docker run --help
と入力すれば、オプションなどのコマンドの詳細が得られます。全て英語で読みづらいですが、ネットに転がっている情報は色んな解釈や加工がされている可能性がある分、--helpで呼び出せる情報が最も正確だと言えるかもしれません。
各手順で入力したコマンドの詳細(英文のところ)などは、helpコマンドから抜粋しながら書いてます。
(今回登場したオプションを抜粋)
(docker)
-ps List containers
-pull Pull an image or a repository from a registry
-start Start one or more stopped containers
-exec Run a command in a running container
(docker run)
-d, --detach Run container in background and print container ID
-p, --publish list Publish a container's port(s) to the host
(docker exec)
-i, --interactive Keep STDIN open even if not attached
-t, --tty Allocate a pseudo-TTY
####注意点
上記手順でCentOS環境を作ると、rootユーザーでログインした状態になります。