#前提知識
###Dockerとは何者か
仮想環境を扱う場合にVirtualBoxなdの仮想マシンはホストマシン上でハイパーバイザを利用しゲストosを動かし、その上でミドルウェアを動かしますが、Dockerの場合は、コンテナというものを使用しております。コンテナはホストマシンのkernelを利用し、プロセスやユーザなどを隔離することで、まるで別のマシンが動いているかのように動かせます。ですので、軽量化つ高速で動かせることができます。
ただもちろんですが仮想環境と行っても容量は自分のpcから割かないといけないので、空き容量には余裕を持っておきましょう。
(参考記事1より抜粋)
###MySQLとは何者か
MySQLはOracle社が開発したリレーショナル型データベースです。(リレーショナル型とは端的に言えばexelのような形式ということ)
基本的な操作はプログラミング言語、SQLを用いて操作します。
MySQLの特徴としてはUNIX系各種OSやWindowsなどの多様なプラットフォームに対応しているのに加えて、アクセスできるプログラミング言語も豊富ということです。シンプルで早く、PHPとの相性も良いです。
データベースの種類について詳しく知りたい方はこちらの記事が分かりやすいです。
データベースとは?その種類、特徴、メリットを詳しく解説します!
#DockerでPython+MySQLの環境構築
仮想環境としてubuntuを導入
ちなみにイメージとはそのコンテナを扱う上で必要なパッケージが入っていて、今回だとUbuntuとMySQLがそれに当たります。
コンテナはそのイメージを利用して実行できる環境です。
#Dockerにubuntuのイメージを導入
$ docker pull ubuntu:16.04
#Ubuntuを実行しシェルにログイン
$ docker run -it ubuntu:16.04
pythonとmysql-serverをインストール(mysqldの代わりにmysql-server)
$ apt-get update
$ apt-get install -y python3 python3-pip
$ apt-get install -y mysql-server
PythonでMySQLに接続する為にmysqlclientのインストール
$ apt-get install -y libmysqlclient-dev
$ pip3 install mysqlclient
このコンテナをubuntu-mysqlという名前で保存
$ docker ps -a
$ docker commit (コンテナID) ubuntu-mysql
ローカルから実行したいファイルがあるフォルダをマウントしつつ、実行。
$ docker run -it -v <ローカルからマウントしたいフォルダのパス>:<仮想環境上でのパス> ubuntu-mysql /bin/bash
[参考記事]