ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

docker-composeについて

ググるとquitaで即解説してくれてるわかりやすい内容あるけど、必要な箇所は日本語ドキュメントを読む。 docker-compose日本語ドキュメント docker-composeのインストール 前はyumやdnf, aptなどパッケージ管理ツールで入れたけど、今はcurlやwgetで特定のバージョンを取得して入れる(いろいろやったのでyumやdnf使ってないかも)。 大事なのは、利用OSのバージョンがどのdocker-composeを使えるのか調べてから導入すること。見放されているOSバージョンもあるので注意。 けれどcentos8が公開された直後、dockerもdocker-composeもサポート範囲外だったのが、無理して入れたら入って使えた。 centos8とredhat8は色々気に入らない箇所が多くなってきたので、思い切って2020年に見切りをつけてubuntuにベースOSを切り替えた。 docker-composeのバージョン上げ 今は curlで取ってきて /usr/local/binあたりに置いてる。 centosはxrdpでよく行き詰まってたけど、aptでのOS更新がスイスイ進んでくれて気持ちいい。 curlとかgitでソースやバイナリ取ってくるのも、行き詰らずストレートに動くとなんか心地いい。 docker-compose.ymlのサンプル docker-compose.ymlにはバージョンがある。 dockerのバージョンアップに引きずられて書ける内容が変わっていく。 docker-compose.ymlのバージョンについて dockerを覚え始めた頃は、まだcentos6からcentos7への移行時期だったので練習環境がcentos6のときもあった。 使い方を探してググったときにdocker-compose.ymlの1行目に「version: ‘2’」として書いておられるものもあった。 あるときdocker-composeの新バージョンを入れるときに、「centos6はサポートから外れるよん」という情報を見つけcentos6とは決別してcentos7に完全移行して、docker-compose.ymlも「version ‘3’」を使うように統一した。 2020年には、ローカルPCでもGoogleCloudでもcentos8をメインで使うようになったけど、centosはredhat系でdockerではなく、よく似たpodという仕組みを採用したらしい。 dockerを使い続けるので、centosとお別れしてubuntuにベースの利用OSを変えた。 2022年はubuntuを22LTSに変えて、楽しくdocker使い続けてる。 docker-compose.ymlの書き方バージョンは3.8にまで進んでた。 xrdp/django+ssl/db/ldapsを起動して使うとき 普段はコレを使う。Google Cloudでインスタンス上げてこの内容を使う。 ついでにgitlab-ceも使っててバージョン管理してる。 xrdp経由でphpのページを使っていて事前にdocker imageをビルドしておく必要がある。 ローカルPCのlinux上に同じdocker-compose.ymlを展開しておいて、mariadbのデータフォルダを丸々tar&zipしてGoogle Cloudから持ってきたら、同じDB内容をローカルでも使える。 本番環境とテスト環境みたいな感じで使い分けてる。 phpやmariadbのバージョン上げたかったら、ローカルPCで練習してDockerfileとdocker-compose.ymlを作っておき、うまく動いたらそのファイルをGoogle Cloudに持って行って動かす。 2022年はphpと使うのやめてdjangoに引っ越した。 基本的なページ遷移とかblob列へのpdf保管・ブラウザ表示とかたいへんやったけど金額1円も狂わず円グラフも描けるようになっていったん完成。 ミドルウェアのバージョンアップってたいへんだったのが、docker使うようになったら1日で動作確認まで行けるようになった。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 version: '3' services: sv_mariadb: image: mariadb:10.5.7 hostname: svmariadb ports: - 3306:3306 env_file: - ./nariDockerDat/env_sv_mariadb.txt volumes: - ./nariDockerDat/sv_mariadb:/var/lib/mysql - ./nariDockerDat/sv_mariadbconf:/etc/mysql/conf.d extra_hosts: - gcp-gvis-dkLinux.intra.gavann-it.com:192.168.100.218 SVgitlab2022: image: gitlab/gitlab-ce:14.6.3-ce.0 ports: - 10881:80 volumes: - ./nariDockerDat/sv_gitlab2022/config:/etc/gitlab - ./nariDockerDat/sv_gitlab2022/logs:/var/log/gitlab - ./nariDockerDat/sv_gitlab2022/data:/var/opt/gitlab extra_hosts: - gcp-gvis-dkLinux.intra.gavann-it.com:192.168.100.218 cl_ubu20: image: ubu:20gvis privileged: true hostname: clubu20 user: "1000:1000" ports: - "30022:22" - "33389:3389" volumes: - ./nariDockerDat/cl_ubun18:/gvis environment: - USER=nari - PASSWD=hogehoge tty: true shm_size: 512m extra_hosts: - gcp-gvis-dklinux.intra.gavann-it.com:192.168.100.218 sv_https-portal: image: steveltn/https-portal:1 ports: - "40080:80" - "40443:443" environment: DOMAINS: 'gcp-gvis-dklinux.intra.gavann-it.com -> http://svdjango:8080' STAGE: 'local' # or 'production' volumes: - ./nariDockerDat/sv_django-ssl_certs:/var/lib/https-portal depends_on: - sv_django extra_hosts: - gcp-gvis-dklinux.intra.gavann-it.com:192.168.100.218 sv_django: image: sv_django:4 build: ./nariDockerDat/sv_django-uwsgi-nginx hostname: svdjango volumes: - ./nariDockerDat/sv_django-uwsgi-nginx/app:/code/app ports: - "48080:8080" depends_on: - sv_mariadb extra_hosts: - gcp-gvis-dklinux.intra.gavann-it.com:192.168.100.218 本番環境とテスト環境の切り替え コンテナ起動にはdocker-compose使うけど、本番とテスト環境ではコンテナ起動の直前でcssとsetting.pyにあるDB向き先ファイルをひな形から上書きコピーして起動させるようにしてる。 ...

 ⭐️

Dockerでよく使うコマンド

コンテナの概念について バージョン確認 docker --version コンテナの実行 docker run --name nginx -p 80:80 nginx コンテナの一覧(今動いているもの) docker ps コンテナの一覧(今動いてないもの含む) docker ps -a コンテナの状態確認 docker inspect nginx ログ確認 docker logs nginx コンテナの削除 docker rm dockerイメージの一覧 docker images dockerイメージの削除 docker rmi dockerコンテナ上に対話モードで入ってbash使う docker exec -it (コンテナid) bash 不要なイメージを削除 docker images -f dangling=true -q | xargs docker rmi 不要なボリュームを削除 docker volume ls -qf dangling=true | xargs docker volume rm 今はこう。 ...