dockerのメモ その1
はじめに
dockerを試している中でわかったことをメモしていきます。
環境構築でわかったこと
最初にやったことは以下である。 * docker hubの登録 * dockerのインストール
docker hubの登録
docker hubはdockerimageを登録するサービスのことである。 よくある使い方としては誰かが作成したイメージを使うことがメインとなると思う。 自分で他の人が使うようなイメージを作成した場合はここに登録すると良い。
dockerのインストール
www.docker.com インストールとdockerのコマンドを使うことができるようになる。
dockerの整理
いろいろあるが例えば以下のようなところが便利である。 環境ごとに差異がある状態を無くすことができる。
- ローカル環境でAさんとBさんの環境を同じにする
- テスト環境でも同じ状態にする
- さらには本番環境でも同じ状態にする
上記によってある環境では動いたのに本番環境では動かない!という状態を無くすことができる。 またこれを高速に行うことができるというのも良い点である。
dockerを使う
ここでは以下のコマンドを使ってみる。 * docker login * docker pull * docker images * docker run * docker ps
docker login
これはdocker registryにログインするために行う。 これをやることでこの後に実施するdocker pullでdocker imageを取得することができるようになる。
docker pull
docker pullコマンドを実行することでdocker imageを取得することができる。 ここでは試しにmysqlのイメージを取得してみる。 docker registoryとしては以下を対象にする。 hub.docker.com
コマンドは以下の通り
docker pull mysql
しばし待つとpullが完了する。
docker images
pullができたか確認する。 docker imagesコマンドを使うと今保持しているdocker imageをlist表示してくれる。 手元では以下のようにmysqlのimageが存在することが確認できた。
docker run
imageが取得できたらそのimageを元にcontainerを起動する。 そのためのコマンドがdocker runになる。 ここではmysqlを起動するために以下のコマンドを実行する。
docker run mysql
実行したところ以下のようにERRORが出た
2021-08-25 10:15:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.26-1debian10 started. 2021-08-25 10:15:59+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2021-08-25 10:15:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.26-1debian10 started. 2021-08-25 10:15:59+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified You need to specify one of the following: - MYSQL_ROOT_PASSWORD - MYSQL_ALLOW_EMPTY_PASSWORD - MYSQL_RANDOM_ROOT_PASSWORD
初回の起動時にはなにやらoptionをつける必要がありそうである。
docker hubにある、以下のページにどのように使うか記載があった。 Docker Hub
抜粋すると以下のようなコマンドが書かれている。
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
上記のコマンドにある色々なoptionに何を指定するのかというのも同ページに以下のように記載されていた。
... where some-mysql is the name you want to assign to your container, my-secret-pw is the password to be set for the MySQL root user and tag is the tag specifying the MySQL version you want. See the list above for relevant tags.
※機会翻訳の結果は以下の通り
ここで、some-mysqlはコンテナに割り当てる名前、my-secret-pwはMySQL rootユーザーに設定するパスワード、tagは必要なMySQLバージョンを指定するタグです。関連するタグについては、上記のリストを参照してください。
上記のことからoptionに指定するものを検討する。 --name:sample-mysql -e :root -d:設定しない
上記の設定をすると実行するコマンドは以下のようになるのでこれを実行する。
docker run --name sample-mysql -e MYSQL_ROOT_PASSWORD=root mysql
上記でmysqlの起動が確認できた。
docker ps
ここで実際にmysqlのプロセスが動いているか確認をしたい。 その際はdocker psコマンドを使うと確認できる。
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8d8f694faafc mysql "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp sample-mysql
上記のようにdocker runのときに指定したsample-mysqlという名前のcontainerが確認できた。
containerの中に入る
runしたcontainerの中に入る方法としてexecコマンドを使う方法がある。 以下は先程、runしたmysqlのcontainerに入りbashのshを起動しておく方法である。
docker exec -it sample-mysql bash root@8d8f694faafc:/#
上記のようにrootでログインしていることがわかる。
さらにmysqlに接続を試み接続が成功した。
mysql -u root -p -h 127.0.0.1 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.26 MySQL Community Server - GPL Copyright (c) 2000, 2021, Oracle and/or its affiliates. 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.
まとめ
今回はdocker hubからimageをpullし、containerを立ち上げ、 そのcontainerに入ることを行うまでのことを実施した。