概要
本書ではCentOS8から備わったDockerとの互換性があるコンテナエンジン「Podman」を使用して、CentOSのコンテナを作成します。
0. 前提条件
- CentOS8をインストールしていること。
- 本書ではWindows 10 Pro (Hyper-V)を使用します。
- 本書では podman-docker パッケージをインストールします。
1. podman-dockerのインストール
-
パッケージをアップデートする。
$ dnf -y update
-
podman-dockerをインストールする。
$ dnf -y install podman-docker
-
podman-dockerをインストールしたことを確認する。
$ podman -v podman version 1.0.5 $ docker -v Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. podman version 1.0.5
2. コンテナの作成
-
CentOSのイメージを取得する。
$ docker pull centos
-
CentOSのイメージを取得したことを確認する。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/centos latest 0f3e07c0138f 3 months ago 227 MB
-
コンテナを作成する。
$ docker run -d --privileged --hostname [ホスト名] --name [コンテナ名] centos /sbin/init
-
コンテナが起動していることを確認する。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f810b8f0a2e1 docker.io/library/centos:latest /sbin/init 17 seconds ago Up 17 seconds ago test-docker
-
コンテナに接続する。
$ docker exec -it [コンテナID または コンテナ名] /bin/bash
-
コンテナに接続したことを確認する。
$ hostname test-centos $ cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)
-
接続したコンテナで作業する。例として本書では接続したコンテナでMariaDBをインストールする。
$ dnf -y update $ dnf -y install mariadb mariadb-server $ systemctl start mariadb $ systemctl enable mariadb $ mysql_secure_installation $ mysql -u root -p > create database testdb; > use testdb; > create table testtable (id int , name varchar(20)); > insert into testtable values (1 , 'Hikari Ishida'); > select * from testtable; > quit
-
接続しているコンテナ内での作業が終わったら、コンテナの接続から抜ける。
$ exit
-
起動しているコンテナを停止する。
$ docker stop [コンテナID または コンテナ名]
-
コンテナが停止したことを確認する。
$ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f810b8f0a2e1 docker.io/library/centos:latest /sbin/init 15 minutes ago Exited (130) 4 seconds ago test-docker
3. コンテナをイメージファイルに保存
-
コンテナをイメージに保存する。
$ docker commit [コンテナID または コンテナ名] [イメージ名]
-
イメージに保存されたことを確認する。
$ docker images localhost/test-podman-image latest 4c67f61cf642 37 seconds ago 707 MB docker.io/library/centos latest 0f3e07c0138f 3 months ago 227 MB
-
イメージファイルを
/tmp
に保存する。$ cd /tmp $ docker save [コンテナID または コンテナ名] > [イメージファイル名].tar
-
イメージファイルが保存されていることを確認する。
$ ls -la -rw-r--r--. 1 root root 706926080 1月 5 21:11 test-podman-docker.tar
4. イメージファイルからコンテナを作成
-
イメージファイルをロードする。
$ docker load -i [イメージファイル名].tar
-
イメージファイルがロードされたことを確認する。
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/test-podman-image latest 4c67f61cf642 25 minutes ago 707 MB
-
2章を参照し、ロードしたイメージからコンテナを作成する。
$ docker run -d --privileged --hostname [ホスト名] --name [コンテナ名] centos /sbin/init $ docker exec -it [コンテナID または コンテナ名] /bin/bash
-
コンテナに接続したことを確認する。
$ hostname test2docker $ cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)
-
ロードしたイメージで作業していた内容がコンテナに保存されているか確認する。本書では2章にてコンテナ内で作業したMariaDBの操作が保存されているか確認する。
$ systemctl status mariadb ● mariadb.service - MariaDB 10.3 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2020-01-05 12:37:49 UTC; 58s ago $ mysql -u root -p > use testdb; > select * from testtable; +------+---------------+ | id | name | +------+---------------+ | 1 | Hikari Ishida | +------+---------------+
最後に
CentOS8にPodmanをインストールすることで検証環境用や開発用ののコンテナを作成することができます。また作業中コンテナをイメージファイルに保存することで、同一環境のコンテナを素早く構築することができます。