初心者の0から始めるDocker生活[Ubuntu18.04LTS, MySQL編 feat.Windows WSL2]


はじめに

こんちゃー
前回は,Dockerでpythonのコンテナを建てました.
まぁ,pythonのコンテナ建てたとこでつまんないんで,今回はUbuntuのコンテナを建てて運用していきます.

それじゃ,れっつごー

環境

  • OS: Windows10 Pro
  • CPU: intel Corei9-9900k
  • GPU: Nvidia GeForce RTX 2080 Super
  • RAM: 32GB

DockerFile

DockerFileでやります.
僕はこれ以外やり方を知らないので,これでやりますが他にいい方法がありそうなので,ggってみてください.
SQLも入れてますが,後の記事で説明するので,いらん人は,消しちゃってください.

(注意)
userの部分は,自分なりのusernameにしてください.
このままやると,userというusernameになってしまいます.
パスワード設定で,passとなっている部分は,ubuntuのコンテナ内で使用するパスワードです. 
(後述するSQLのパスワードではありません.)

# =========

FROM ubuntu:18.04

RUN apt-get update 
RUN apt-get upgrade -y
RUN apt-get install python3 python3-pip -y
RUN apt-get install -y software-properties-common
RUN apt-get install curl emacs wget sudo -y --fix-missing

# rootだと色々と不便なので,ユーザーを作成
RUN useradd -m user
# ルート権限を付与
RUN gpasswd -a user sudo
# パスワード設定 passの部分も編集してください.
RUN echo 'user:pass' | chpasswd

WORKDIR /home/user/app
COPY --chown=user:user app/ /home/user/app

RUN pip3 install PyMySQL

#===========SSH=============
#sshは今回は使用していません.以下3行は無くても大丈夫です.
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd

EXPOSE 22
#==========emacs==========
RUN echo "(setq make-backup-files nil)" >> ~user/.emacs
RUN echo "(set-default-coding-systems 'utf-8-unix)" >> ~user/.emacs

RUN echo "export LC_CTYPE='C.UTF-8'" >> ~user/.bashrc

RUN . ~user/.bashrc
RUN chown user:user /home/user/.emacs
#chown -R user ~/.emacs.d/
#===========sql=============
RUN apt-get install mysql-server mysql-client -y --fix-missing

RUN apt-get install --reinstall systemd -y 
RUN systemctl enable mysql

こんな感じですね.(自分を沼に沈めた人のgistをいじくってます.

コンテナを建ててゆくぅ

なんだかんだとDockerFileができましたら,まずはイメージ(型)を作成していきましょう.

docker build -f ./Dockerfile -t イメージ名 .

で,イメージができましたら,run(コンテナ生成)していきましょ.
localhost(127.0.0.1)の後の3306:3306は,データの入口と出口(田口)のポートを指定しています.
このあとやるSQLいじりの時に使うので,入れといて損はないと思います.

userの部分を自分のusernameに変更してください.
コンテナの中でGPUを使用したい方は,3行目を使用してください.

docker run -itd -p 127.0.0.1:3306:3306 -u user --name コンテナ名 イメージ名
#docker上でgpu動かす
docker run -itd --gpus all -p 127.0.0.1:3306:3306 -u user --name コンテナ名 イメージ名

できたら,コンテナの中に入っていきましょう.

docker exec -i -t コンテナ名 bash

で入れると,OKです.

補足

SQLをやりたい場合は,コンテナの中に入って以下の文を1行ずつ入れていきましょう.

#動いているか確認
sudo systemctl status mysql
#有効化
sudo systemctl enable mysql
#起動
sudo /etc/init.d/mysql start
#セキュリティの設定
sudo mysql_secure_installation

全部yes

#SQLに入る
sudo mysql -u root -p
#SQL内で設定
#ユーザー一覧の確認
SELECT user,authentication_string,plugin,host FROM mysql.user;
#rootパスワードを変更(PASSの部分を自分のパスワードに変更してください.SQLに入るときのパスワードになります)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASS';
#設定の反映
FLUSH PRIVILEGES;

最後に

取り急ぎ作ったんでボロがありますので,適宜検索等をしながら進めていただけると幸いです.
このままやってみて,動かない等ありましたら連絡いただけますと助かります.

次は初心者SQL編でお会いしましょう.