Docker上でCentOSを動かしてMacOSからファイルをコピーしてみた

たまたま諸事情でMacOS上でCentOSを動かしたいなあと思い、すでにMacOS上に導入していたDockerをつかってみました。(なのですでにDockerがMacOS上に導入されていることが前提となっています。)

Docker上にCentOSを導入・起動した後で、Docker上のCentOS(bash)にアクセスし、MacOS 上のファイルをCentOSにコピーするところまでやってみましたので、記録として残しておきます。

1.Docker Hubにログインする

以下のとおり「docker login」コマンドでDocker Hubにログインします。

% docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: <ユーザ名>
Password:<パスワード>
Login Succeeded

Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

2.CentOSのイメージがあるか探す

Docker HubにCentOSのイメージがあるか「docker search 」コマンドで探します。

docker search centos

コマンドの実行結果は以下の通りとなります。

docker search centos実行結果

どうやらOFFICIAL欄が[OK]となっていれば、イメージが存在するようです。

3.CentOSのイメージを引っ張ってくる

docker pull」コマンドを使い、Docker HubからCentOSのイメージをダウンロードします。

% docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

4.CentOSイメージが取得できたか確認する

docker image」コマンドを使い、CentOSのイメージが取得できたか確認します。

 % docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    12766a6745ee   3 months ago   142MB
centos       latest    5d0da3dc9764   9 months ago   231MB

5.CentOSを起動する

docker run 」コマンドを使い、CentOS を起動します。
なおこのときに-it -d –nameを引数として使っていますが、以下の意味らしいです。

-it : i は –interactive、tはttyを指している
-d :detouchの意味でバックグラウンドでコンテナを起動する
-name:この後に起動する「コンテナ名」と「コンテナイメージ」を指定する

また起動したかどうかは「docker ps」コマンドで確認できます。

以下、実行例です。

% docker run -it -d --name centos centos
e6adb5a6a86d3c2682f64e064ba4d7e93624d493c48575c12305ae9e09319654

% docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
e6adb5a6a86d   centos          "/bin/bash"   7 seconds ago   Up 6 seconds             centos
1bee05eeb204   centos:latest   "/bin/bash"   3 minutes ago   Up 3 minutes             condescending_banach

6.CentOSに乗り込めることを確認する

docker exec」コマンドでCentOS上のbashにアクセスすることができます。
アクセスできることを確認したら、「exit」でbashから抜けます。

% docker exec -it centos /bin/bash
[root@e6adb5a6a86d /]#  
[root@e6adb5a6a86d /]# pwd
[root@e6adb5a6a86d /]# cd tmp
[root@e6adb5a6a86d tmp]# 
[root@e6adb5a6a86d tmp]# exit
exit

7.MacOS上のファイルのCentOSにコピーする

docker cp」コマンドを利用すれば、MacOS上のファイルのCentOSにコピーできます。

以下はMacOSのカレントディレクトリ配下のファイルを、CentOSの/tmpディレクトリにコピーする例です。

% docker cp ./<ファイル名> centos:/tmp

以上、参考になれば幸いです。

<参考サイト>

・Docker Hubの使い方とGitHubからのDockerイメージ自動ビルド(@IT)
https://atmarkit.itmedia.co.jp/ait/articles/1408/26/news038.html
・DockerでCentOSを起動する(Qiita)
https://qiita.com/Gowldinq/items/1a3b31d0ae5792d3132b
・docker runの[ i, t, d ]オプションの意味を調べた(Qiita)
https://qiita.com/tacotopas/items/93dfcaa9f4dd6cfe0b95