Docker & GitHub ハンズオンに参加してきた。

More than 1 year has passed since last update.

6/3(日)Docker & GitHub ハンズオンに参加してきたので、整理のため作成。

https://tec.connpass.com/event/88851/


1.今日やったこと & 学んだこと

①Dockerの概要 (& インストール

②Dockerコマンド実践

③その他、質疑応答


①Dockerの概要 (&インストール)

Dockerについての概要の説明

マンガでわかるdocker (@webdesignManga) をやってたのでなんとなくわかっていることも多かったものの、もうちょっと細かい図での説明。VMとの違いを交え、メリットなどわかりやすかったです。

よくわかってなかったけど、改めて理解したのは以下、覚えておこう。

・Dockerイメージ・・・Dockerのテンプレート

・Dockerコンテナ・・・Dockerイメージから生成された仮想サーバ

案内にDockerインストールしてきてね!とあったけどしてこなかった人が多かったらしく、途中してない人はインストールも。

MacだとDocker for Macをインストールすれば良いだけだけど、Windowsの場合、

Windows Docker Toolbox on Windowsを利用し、結局VM利用する必要あるとか。

(もしくは仮想でLinuxを入れてしまう)


②Dockerコマンド実践

実際にDockerコマンドを打って見る。


1.DockerHubを利用したコンテナの起動停止

  − docker pull → run → stop

      → ここまではやったことあった。


2.Gitを利用してDockerイメージを取得

  – git clone で講師の方作成のサンプル取得 → docker build → run

   → テーマの半分にある「git」を利用するのはcloneでURL指定してイメージ取得する、ぐらいだったけど、使ったことない身としては「へぇーこう使うんだ」、といった感じ。

   とりあえずいろんな人が公開しているのをDLして試したりするのもいいかと思った。


3.ymlを利用したイメージを組み合わせての利用。

  – git clone で講師の方作成のサンプル(yml)取得 → docker-compose up –d

これまでymlという言葉を聞いても意味がよく分からなかったのだけど、dockerだと、

・yml・・・コンテナのビルドから連携までをファイルベースで記載したもの

といった理解。

ymlファイルの記載していることについて説明いただくが、特に頭に入れようとせず、そなんだぐらいで流して聞いてた。

実際に

が、以下エラーで上手くいかず。。

MacBook-Pro:nginx-http-php-mysql $ docker-compose up -d

Recreating nginx-http-php-mysql_mysql_1 ... error

ERROR: for nginx-http-php-mysql_mysql_1 Cannot start service mysql: b'Mounts denied: \r\nThe path /usr/local/etc/nginx-http-php-mysql/mysql/initial.sql\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'

ERROR: for mysql Cannot start service mysql: b'Mounts denied: \r\nThe path /usr/local/etc/nginx-http-php-mysql/mysql/initial.sql\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
ERROR: Encountered errors while bringing up the project.
MacBook-Pro:nginx-http-php-mysql $

パスが競合しているのか、色々上がっていたので、綺麗にしてやり直そう。

エラーも追ったほうが良いけど、スクラップ&ビルドができるのもDockerの利点だろうとのことで後ほど綺麗にしよう。

MacBook-Pro:nginx-http-php-mysql $ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-http-php-mysql_php latest 33cd20d906bc 2 hours ago 79.5MB
php latest 2cbb21fd7cee 2 hours ago 378MB
php 7-apache 1300feae9602 8 days ago 378MB
mysql 5.6 5f5ccdc8aedc 4 weeks ago 256MB
mysql 5.7 0d16d0a97dd1 4 weeks ago 372MB
<none> <none> 7adebb78eec3 4 weeks ago 4.15MB
hello-world latest e38bc07ac18e 7 weeks ago 1.85kB
mysql 5.7.21 5195076672a7 2 months ago 371MB
nginx 1.13.9-alpine 537527661905 3 months ago 17.9MB
php 7.2.2-fpm-alpine3.6 59d3e94a05b7 3 months ago 77.2MB
alpine latest 3fd9065eaf02 4 months ago 4.15MB

Preferences → Reset でも上手く消えなかったので、Remove all  Dataで消す。

スクリーンショット 2018-06-03 15.12.14.png

すると消えました。

MacBook-Pro:nginx-http-php-mysql $ docker images

Error response from daemon: Bad response from Docker engine

が、まだ残っている模様。。

MacBook-Pro:nginx-http-php-mysql $ docker-compose up -d

Creating network "nginx-http-php-mysql_default" with the default driver
Creating volume "nginx-http-php-mysql_est-data" with default driver
Pulling mysql (mysql:5.7.21)...
ERROR: Get https://registry-1.docker.io/v2/: x509: certificate is valid for 10.0.0.1, not registry-1.docker.io

スクリーンショット 2018-06-03 15.22.05.png

↑のfactory defaultでも消えなかったので、rmコマンドで削除

→消しても同じエラーが出る、今日は時間切れなのでどっかで仕切り直そう。

<解決>

こちらを参考にFile sharing の設定

/usr/local/etc を追加し、Dockerをrestart

スクリーンショット 2018-06-03 16.05.21.png

MacBook-Pro:nginx-http-php-mysql $ docker-compose up -d

Starting nginx-http-php-mysql_mysql_1 ... done
Creating nginx-http-php-mysql_php_1 ... done
Creating nginx-http-php-mysql_nginx_1 ... done

できました!!

スクリーンショット 2018-06-03 16.08.48.png


③その他、質疑応答


Q.Dockerってスクラップ&ビルドで利用するものだと思うけど、DBとかのデータとかどうするのか?

A.別のDBfileを利用。dumpとして置いて、yml内でそれを利用するように指定したりとか。

Q.docker-compose up と start って使い分ける?

A.特に使い分けたことはない



2.感想

・マンガでわかるdockerで知っていたことも多かったため、特についていけない点もなく、十分理解できた。

・ymlやdocker-composeについて知れたのは収穫 → が、エラーのままなのでまたやり直す。 → エラーちゃんと読んだらできました。(6/3 16:09)

・頂いた資料におまけ(今日使ってないコマンドとか)あったので改めて読み返したい。