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 & 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)
・頂いた資料におまけ(今日使ってないコマンドとか)あったので改めて読み返したい。

Taku0055
バッグエンドエンジニア Ruby→Elixir→Golang AWS/GCP コロナでリモートのため、東京郊外に引っ越しました。
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