信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    初めてのDockerと疑問

    こんにちわ入社から2ヶ月ほど経ちましたやすといいます。前職でも開発の仕事をしていたのですがローカルの開発環境での経験がなかったため、入社初日から開発環境作成にとても苦労しました笑ということで最近開発環境の勉強としてVMより軽量とよばれるdockerを触り始めたのでそのこと(疑問)について書きたいと思います!Docker(コンテナ)とVMの違いを調べたところDocker:OSをホストと共有するVM:OSをホストと共有しないなるほど...正直よく違いがわからないので実際にコンテナを作成し確認しましたまず以下のようにdocker-compose.ymlを作成しますversion: '3' services:   nginx:       image: nginx:1.13       ports:         - "8000:8000"       volumes:         - ./nginx/conf:/etc/nginx/conf.d         - ./nginx/uwsgi_params:/etc/nginx/uwsgi_params         - ./static:/static       depends_on:         - python   db:       image: mysql:5.7       command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci       ports:         - "3306:3306"       environment:         MYSQL_ROOT_PASSWORD: root         MYSQL_DATABASE: test         MYSQL_USER: user         MYSQL_PASSWORD: password         TZ: 'Asia/Tokyo'       volumes:         - ./mysql:/var/lib/mysql         - ./sql:/docker-entrypoint-initdb.d   python:       build: ./python       command: uwsgi --socket :8001 --module app.wsgi --py-autoreload 1 --logto /tmp/mylog.log       volumes:         - ./src:/code         - ./static:/static       expose:         - "8001"       depends_on:         - db dockerhubイメージを使用してコンテナを作成するようです$docker-compose up -d でコンテナが起動します。$ docker ps CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS                NAMES 2f2da6f38d9f    nginx:1.13     “nginx -g ’daemon of…”  About an hour ago  Up About an hour  80/tcp, 0.0.0.0:8000->8000/tcp   django_nginx_1 e67d7e2e9773    django_python    “uwsgi --socket :800…”  About an hour ago  Up About an hour  8001/tcp              django_python_1 3d147018ebdd    mysql:5.7      “docker-entrypoint.s…”  About an hour ago  Up About an hour  0.0.0.0:3306->3306/tcp, 33060/tcp  django_db_1 コンテナが起動しました!今までは一つのVMにdb,webserver,アプリなどひとまとめにしていたのでかなり新鮮ですでもここまででは3個のVMが起動している場合との違いがわからないですdocker exec -it コンテナ名 bash でコンテナに入ることができるようなので確認しました。VMならホストOSとは別のOSが起動していますがdockerではどうなってるの...cat /etc/*release PRETTY_NAME=“Debian GNU/Linux 9 (stretch)” NAME=“Debian GNU/Linux” VERSION_ID=“9" VERSION=“9 (stretch)” VERSION_CODENAME=stretch ID=debian HOME_URL=“https://www.debian.org/” SUPPORT_URL=“https://www.debian.org/support” BUG_REPORT_URL=“https://bugs.debian.org/” debianでした(ホストOSはmac)dockerhubイメージで設定されたOSなんでしょうかコンテナでもOSは動いているようですDocker:OSをホストと共有するVM:OSをホストと共有しないだとするとこのOSは見かけだけのものでコンテナ内のコマンドやプロセスはホストOSが実際に動かしているのでしょうか?今回はうまく調べることができなかったので次までにはしっかり理解したいです。