LoginSignup
2
3

More than 3 years have passed since last update.

ローカルDockerでCentOS立てた時の忘備録 ~Docker基本(pull, run, save, load)~

Last updated at Posted at 2019-08-22

何について書くのか

DockerでCentOSイメージコンテナを立て、アプリケーション環境を用意したが保存をしたい。
始めはイマイチ忘れてよくわからなくなる。
やったことベースで簡潔に纏めておきたかった。

コマンド自体はたくさんあるが、必要最低限のものだけ記載したので
私とやりたいことが似ていたら役立つかもしれません。

ローカル、と記載している理由は、いつもAWS上で使っていましたが
今回は自身のMac上で行ったため、です。

イメージを持ってくる

これから記載するのはすでに公開されているイメージを引っ張ってくる場合です。

「あーMacでCentOS7の検証したいな〜」 という場合は
# docker pull centos:centos7
これで持って来れます。

もちろん「単純に分離したいだけ」「自作のイメージを配布したいだけ」などなら
自分で作るので別にいいんですが、大体の場合私は
ローカルでCentOSなどのイメージを持ってきたいなんて場合が多い。

イメージさ、どこから持ってくるの?
Dockerhubです。
https://hub.docker.com

普通のCentosであればこの辺りを使います
https://hub.docker.com/_/centos?tab=tags

あ、もちろんサイトにわざわざ行かなくても、コマンドで探したりもできます。

他の用途だと、例えば
Deep LearningのためPython×TensorFlow環境用意するの面倒で
Kerasとか色々環境用意するのだるいな…
なんて時もベースイメージとしてこの辺り持って来れば済みます。
しかも、プロセスとして機能するDocker、メモリなりCPUを制限させておけば暴走の心配がほぼない。分離。
https://hub.docker.com/r/tensorflow/tensorflow/
↑よく使ってた

では、やっていきます。

欲しいイメージの検索。こちらはCentOSの場合。

# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5520                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              122                                     [OK]
jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.6.1810 x86…   111                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   99                                      [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   62                                      
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              57                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      44                                      
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   39                                      
kinogmt/centos-ssh                 CentOS with SSH                                 29                                      [OK]
centos/php-56-centos7              Platform for building and running PHP 5.6 ap…   22                                      
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   10                                      
nathonfowlie/centos-jre            Latest CentOS image with the JRE pre-install…   8                                       [OK]
drecom/centos-ruby                 centos ruby                                     6                                       [OK]
mamohr/centos-java                 Oracle Java 8 Docker image based on Centos 7    3                                       [OK]
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
…

ギャーイッパイデテキタ ( ◠‿◠ )

ここで行ってる検索は、Dockerhubでここに文字入れてるのと同じようなものです。(filter可)

スクリーンショット 2019-08-22 15.42.58.png

Ubuntuイメージでやってみるの巻

ではこれから試しにUbuntuイメージを持ってきます。
念の為まずはイメージ検索します。

$ docker search ubuntu
NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   9855                [OK]                
dorowu/ubuntu-desktop-lxde-vnc                            Docker image to provide HTML5 VNC interface …   334                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   228                                     [OK]
consol/ubuntu-xfce-vnc                                    Ubuntu container with "headless" VNC session…   186                                     [OK]
ubuntu-upstart                                            Upstart is an event-based replacement for th…   99                  [OK]                
…

あ、大丈夫ですね。ちゃんとイメージ公開されています。
では一番上のOfficialイメージにしましょう。

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
35c102085707: Pull complete 
251f5509d51d: Pull complete 
8e829fe70a46: Pull complete 
6001e1789921: Pull complete 
Digest: sha256:d1~c94d90
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

なにもタグを指定しないとlatestを引っ張る模様。
https://hub.docker.com/_/ubuntu?tab=description

イメージの確認

持ってきたイメージを確認します。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              a2a15febcdf3        6 days ago          64.2MB

※今後、REPOSITORY:TAGでよく指定する機会があります。

立ち上げ

では、実際に立ち上げてみます。

$ docker run -ti ubuntu:latest /bin/bash
root@df0c54ef3b07:/#

立ち上がって入れました。

root@df0c54ef3b07:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
…

確認できました。

Dockerコンテナが立ち上がっているのか確認するときは

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                              NAMES
cfb97fea54fe        ubuntu:latest       "/bin/bash"         About a minute ago   Up About a minute                                      peaceful_villani

です。

※以下補足です。
docker runにて

オプション 説明
-ti コンテナのプロセスにttyを割り当てる。
/bin/bash bashで起動

イメージの保存と読込

試しにdocker内でファイルを作成しておきます(新しくUbuntu立てた)

root@e7ff353d5a71:~# touch meguro
root@e7ff353d5a71:~# ls
meguro

現在のイメージは以前の状態。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              a2a15febcdf3        7 days ago          64.2MB

コンテナをイメージに変換して

$ docker commit be6e776efcc4 ubuntu:meguntu
sha256:~e67r2d

saveコマンドでイメージ保存!

$ docker save ubuntu:meguntu > meguntu.tar

確認。できてる!

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              meguntu             63322548e865        2 minutes ago       64.2MB

(今起動しているコンテナを停止。こうやってIDで指定もできる。)

$ docker stop be6e776efcc4
be6e776efcc4

(イメージも持っていない状態にします)

$ docker rmi ubuntu:meguntu
Untagged: ubuntu:meguntu

果たして保存されているのか?
ロードする

$ docker load < meguntu.tar 
61f77b8c33fa: Loading layer [==================================================>]  2.048kB/2.048kB
Loaded image: ubuntu:meguntu

確認。できてる

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              a2a15febcdf3        7 days ago          64.2MB

では動かしてみる。本当に保存できてた…?

$ docker run -ti ubuntu:meguntu /bin/bash
root@d8eab066c577:/# cd
root@d8eab066c577:~# ls
meguro

できてたー!

まとめ

ということで、ローカルDockerでCentOSを立て、構築など変更をし、そのイメージ保存/ロードまでできました。

保存したイメージ、dockerhubで公開なり配布をすれば、Dockerのメリットを享受できますね。

少しでも、役に立った!復習できた!
と思って頂けたら、いいね!お願いしますm(_ _)m

ありがとうございました。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3