Dockerのコンテナ上でCentOS7を動かし、sshアクセスまでできる状態を構築します。
DockerのCentOSイメージでは、VMプレーヤーなどをインストールして動作するよりも、簡単にCentOS7を動かせますし、すごく軽いのでオススメです。
「Docker」上でCentOS7のコンテナ作成と起動
それではDockerコンテナ上でCentOS7を動作させますが、まずは、CentOS7のDockerイメージの取得を実施します。
Dockerイメージの取得は「docker pull」コマンドを使用します。
コマンドの書き方は以下となります。
docker pull (options) name:tag
CentOSのイメージを取得する際は「tag」の部分に今回取得する「centos7」、もしくは「7」を指定することでCentOS7の最新バージョンを取得することができます。
前述の通り CentOS のイメージはバージョンごとにタグが切られており、CentOS 7 のタグ名は「7」もしくは「centos7」を指定してあげることで、CentOS 7 の最新版を取得することができます。 よって次のようにコマンドを実行します。
/ $ docker pull centos:centos7 centos7: Pulling from library/centos ab5ef0e58194: Pull complete Digest: sha256:4a701376d03f6b39b8c2a8f4a8e499441b0d567f9ab9d58e4991de4472fb813c Status: Downloaded newer image for centos:centos7 docker.io/library/centos:centos7 / $
上記コマンドでCentos7を取得できたことを以下のコマンドで確認できます。
/ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos centos7 5e35e350aded 3 months ago 203MB / $
DockerでCentOS7のイメージからコンテナの作成と起動
CentOS7のDockerイメージから、実際にコンテナを作成して起動をさせます。
上記で取得したCentOS7のDockerイメージからコンテナを作成して起動をするには「docker run」コマンドを使用します。
docker run (options) image (command)
今回は以下のように「docker runコマンドを実行します。
次のように docker run コマンドを実行して、コンテナを作成・起動してみましょう。 ここでは新しく作成するコンテナに centos7 という名前をつけています。
コンテナ起動
/ $ docker run -itd --privileged -p 2222:22 --name centos7 centos:centos7 /sbin/init 5ef592aa81dd2e406fc5004335cbb83ced64e46a09cd3ec6fa1bc53011bd208a / $
- -it コンテナのプロセスにttyを割り当てる
- -d コンテナをバックグラウンドで実行
- –p ポート指定(ここではsshアクセスポートの変更)
- –privileged systemctlコマンドを使えるようにしたいのでこのオプションを追加
- –name 作成したコンテナに名前をつける
「–privileged」オプションを追加しないと、CentOSを使用する際に必要となる「systemctl」コマンドなどが利用できないので、使いたい方は追加しましょう。
また、今回は作成したCentOSへsshアクセスをさせたいので、「-p」オプションを使用し、自身のポート番号「2222」へアクセスした際に作成したコンテナへアクセスできるようにします。
上記で、問題なくコンテナが起動したら、以下「docker ps」コマンドで確認をします。
/ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5ef592aa81dd centos:centos7 "/bin/bash" About a minute ago Up About a minute centos7 / $
Dockerコンテナ上でCentOS7を操作
上記で、CentOS7のコンテナが起動したら、実際に操作をしてみます。
CentOS7の操作は「docker exec」コマンドを実行します。
docker exec (options) container-names command
以下のコマンドを実行することで「CentOS7」を操作することができます。
また、root権限での状態で操作となります。
/ $ docker exec -it centos7 /bin/bash [root@5ef592aa81dd /]#
CentOS7で初めの操作としては以下を実施しておきましょう。
初回操作として、yumアップデートを実施します。
[root@5ef592aa81dd ~]# yum -y update
最低限、インターフェースやルートの状態を確認したいので「iproute」もインストールしておきます。
[root@5ef592aa81dd ~]# yum -y install iproute
CentOS7へsshアクセスができるようにする
次に、外部からCentOSへアクセスできるようにSSHを起動します。
「openssh-server」をインストールします。
[root@9f4f2cb7cc93 /]# yum -y install openssh-server
インストール後、サービスを起動します。
[root@9f4f2cb7cc93 /]# systemctl start sshd.service
サービス起動後は以下ステータスを確認し、SSHサービスがアクティブ状態になっていることを確認します。
[root@9f4f2cb7cc93 /]# systemctl status sshd.service ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-02-29 09:26:14 UTC; 1min 37s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 354 (sshd) CGroup: /docker/9f4f2cb7cc93d1e62fbf408f0d520b14fb0f777234733b9156aaeb17673cfc57/docker/9f4f2cb7cc93d1e62fbf408f0d520b14fb0f777234733b9156aaeb17673cfc57/system.slice/sshd.service └─354 /usr/sbin/sshd -D ‣ 354 /usr/sbin/sshd -D Feb 29 09:26:14 9f4f2cb7cc93 systemd[1]: Starting OpenSSH server daemon... Feb 29 09:26:14 9f4f2cb7cc93 systemd[1]: Started OpenSSH server daemon.
rootパスワードを設定
次にSSHログイン時のパスワードを設定します。
以下ではパスワードを「test」とした時の実行例です。
[root@9f4f2cb7cc93 ~]# passwd Changing password for user root. New password:test BAD PASSWORD: The password is shorter than 8 characters Retype new password:test passwd: all authentication tokens updated successfully. [root@9f4f2cb7cc93 ~]#
上記「passwd」コマンドが使えない場合は、「yum install」もしくは「dnf install」を実施します。
[root@66a2f447ae7a ~]# yum -y install passwd
コンテナ(CentOS7)へSSHアクセス
パスワード設定後、コンテナで起動したCentOS7へSSHログインを実行します。
~ $ ssh -p 2222 root@localhost root@localhost's password: test Last login: Sun Mar 1 03:33:03 2020 from gateway [root@9f4f2cb7cc93 ~]#
「docker run」で事前に設定したように、SSHのポート22を「2222」に変更をしているので、2222をポート指定としてSSHログインを実行します。
コンテナの停止・起動・削除
コンテナで起動している「CentOS7」を停止する場合は「docker stop』コマンドを実行します。
~ $ docker stop centos7 centos7 ~ $
コンテナの停止を確認する場合は、「docker ps -a」コマンドを実行します。
「STATUS」が「Exited」だと停止している状態となります。
~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9f4f2cb7cc93 centos:centos7 "/sbin/init" 21 hours ago Exited (137) 31 seconds ago centos7 ae99052b78db django "python3" 5 days ago Exited (137) 5 days ago test
停止したコンテナを起動する場合は「docker start」コマンドにコンテナ名を指定して実行します。
~ $ docker start centos7 centos7 ~ $
コンテナを削除する場合は「cocker rm」コマンドにコンテナ名を指定すると削除するできます。
$ docker stop centos7 centos7 $ docker rm centos7 centos7
イメージ削除
コンテナを削除し、CentOS7のイメージごとを削除したい場合は「docker rmi」コマンドを実行します。
イメージを削除する場合は、「IMAGE ID」を指名します。
~ $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE django latest 9108c69607a8 5 days ago 972MB python 2.7 09a181e16b7e 3 weeks ago 896MB python 3 efdecc2e377a 3 weeks ago 933MB centos centos7 5e35e350aded 3 months ago 203MB ~ $ ~ $ docker rmi 5e35e350aded
以上がDockerでCentOS7の起動、SSHアクセスまでの手順となります。
Dockerを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す