Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Docker で環境作成 for centos7

More than 5 years have passed since last update.

なぜDockerがよいのか

  1. 永続化コンテナを使えばデータベースのスナップショットが保存できる
  2. 別のLinuxBoxで実行環境をコピーできる
  3. 1台のマシン上で複数のコンテナを実行できるためリソースの有効利用ができ効率的で安全
  4. 仮想環境上のLinuxBoxで実行できる

今回の検証環境

  1. vagrantのイメージ bento/cntos-7.1 をベースにしたもの
  2. VirtualBox

OSを最新にする

$ sudo yum update -y
$ sudo systemctl disable firewalld
$ sudo vi /etc/sysconfig/selinux
SELINUX=disabled

OSを再起動

インストール

$ sudo yum install docker -y
$ sudo systemctl start docker
$ sudo systemctl status docker
$ sudo systemctl enable docker

dockerの動作確認

sudo を使わないと動かないので注意
ユーザ権限で動かす方法もあるかよくわからなかった

$ sudo docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-253:0-67396965-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 2.407 GB
 Data Space Total: 107.4 GB
 Data Space Available: 37.68 GB
 Metadata Space Used: 2.552 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.145 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.20.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 1.462 GiB
Name: crystal
ID: Y5N5:VL7S:KKQC:JYZT:25PI:6FKP:S3MJ:T254:AOLZ:S6QA:UC3Q:VELQ

MySQL docker

イメージの検索

$ sudo docker search mysql
INDEX       NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                        MySQL is a widely used, open-source relati...   1383      [OK]
docker.io   docker.io/mysql/mysql-server           Optimized MySQL Server Docker images. Crea...   70                   [OK]
docker.io   docker.io/orchardup/mysql                                                              42                   [OK]
docker.io   docker.io/centurylink/mysql            Image containing mysql. Optimized to be li...   28                   [OK]
docker.io   docker.io/wnameless/mysql-phpmyadmin   MySQL + phpMyAdmin https://index.docker.io...   25                   [OK]
docker.io   docker.io/sameersbn/mysql                                                              21                   [OK]

イメージの取得

$ sudo docker pull mysql:5.6

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/mysql     latest              917f04aa61ad        7 days ago          359.8 MB
docker.io/mysql     5.6                 d99302287ecc        7 days ago          324.2 MB

コンテナの実行から終了まで

$ sudo docker run --name mysql_instance -e MYSQL_ROOT_PASSWORD=mysql -d mysql:5.6
bc4849729617569b34169a7cc2944e37128e6f57e1bc7408051a0ddc33fe0f82 ← ランダムなハッシュ値が返る

# コンテナの情報が JSON 形式で取得
$ sudo docker inspect mysql_instance

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
bc4849729617        mysql               "/entrypoint.sh mysql"   7 minutes ago       Up 7 minutes        3306/tcp            mysql_instance

# 終了させる
$ sudo docker stop mysql_instance
mysql_instance

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
bc4849729617        mysql               "/entrypoint.sh mysql"   10 minutes ago      Exited (137) 26 seconds ago                       mysql_instance

$ sudo docker rm mysql_instance

サーバに接続する

$ sudo docker run --name mysql_instance -e MYSQL_ROOT_PASSWORD=mysql -d mysql:5.6

$ sudo docker run -it --link mysql_instance:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

CentOS container

$ docker pull centos:latest
$ docker run -it -h myhostname --rm centos:latest /bin/bash
[root@myhostname /]#

コンテナの変更を保存する

コンテナにミドルウエアや設定などをインストールしたものをレポジトリにイメージとして保存する
実行中のものは一時中断(paused)になるので注意

$ docker commit container_name bibio/myimage:latest 

イメージのサイズは大きくなるのでディスクサイズの管理には注意が必要

永続化させる

ホスト上のディスクに設置する

docker run-v オプションを使用するとコンテナ上にマウントできる

$ sudo docker run -v /home/vagrant/var/lib/mysql:/var/lib/mysql --name mysql_instance -e MYSQL_ROOT_PASSWORD=mysql -d mysql:5.6

$ sudo docker run -it --link mysql_instance:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
housmart
ハウスマートはテクノロジーとデザインと不動産の専門知識を融合させ、「住」の概念をもっと自由なものに進化させます。
http://techblog.housmart.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away