업무에서 docker-compose를 사용하는 사람들을 위한 수첩입니다.
10396 단어 Dockerdocker-composetech
그래서 저는 업무상 사용하는 지령과 설명을 쓰고 싶습니다.
제 수준은 정식 경기에서 docker로 서버를 만드는 사람이 아니기 때문에 잘 모르겠습니다. 양해해 주십시오.
전제 조건
전제적 인식
용기와 인상의 차이를 이해하지 못하면 뒷일을 파악하기 어려울 수도 있다.
이미지는 이미지를 이동하는 인스턴스로 간주할 수 있는 구성(또는 스냅샷)입니다.
인상이 사라지지 않는 한 용기를 만드는 데는 속도가 빠르다는 것을 기억해야 한다.
docker-compose라니요.
docker-compose는 여러 개의 docker 용기를 집중적으로 관리할 수 있는 docker의 도구입니다.
이것을 사용하면 도커의 지식을 어느 정도 얇게 해도 사용할 수 있다.(나도 그중의 한 사람)
프로그램을 시작하려면
기본적으로 docker-compose를 사용하는 프로젝트에서 프로그램의 용기를 시작할 때
docker-compose.yml
가 어디에 있는지 먼저 확인합니다.docker-compose.yml
가 어디에 있는지 알면 그 디렉터리docker-compose up -d
로 이동해서 시작할 수 있습니다.$ docker-compose up -d
-d
의 옵션은 설비 모드라고 불리며 백엔드에서 컨테이너를 가동하는 모드이다.이거 안 넣으면 일지가 질질 끌려.응용 프로그램 삭제하기
docker-compose down
를 사용하여 응용 프로그램의 용기를 낮추다.$ docker-compose down
docker-compose stop
라는 명령도 있지만 이것은 작동하는 용기를 끄지 않고 유지하는 명령이다.다만, docker-compose.yml를 업데이트했을 때 대응할 수 없기 때문에down이 좋습니다.down
의 경우 부팅된 용기를 끄지만 용기만 삭제하면 이미지가 사라지지 않습니다.기본적으로 이미지가 사라지지 않았을 때up -d
만 해도 구축이 되지 않기 때문에 속도에 신경 쓰지 않아도 된다.다만 이엔트리포인트의 내용이 시간 처리가 필요한 경우
stop
에는 손을 사용했다.ENTRYPOINT과 관련해서는 컨테이너를 시작할 때마다 호출됩니다.애플리케이션을 다시 시작하려는 경우
이 명령은 응용 프로그램
restart
을 다시 시작하려면 존재합니다.$ docker-compose restart
restart는 마운트된 서버 설정 등을 업데이트하지만 용기 자체는 업데이트되지 않습니다.(Docker file이 업데이트되어도 사용되지 않음)컨테이너를 업데이트하려면 아래
イメージが更新されたら
를 참조하십시오.이미지 업데이트 후
어떤 회사는 사람들에게 전용 도커 인상을 줄 수 있다.
docker 인상이 업데이트되면 다음 절차에 따라 가져올 수 있습니다.
$ docker-compose down
$ docker-compose build --pull サービス名
$ docker-compose up -d
일어나는 컨테이너에 들어가고 싶을 때
일어나는 컨테이너에 들어가고 싶을 때
docker-compose exec
.$ docker-compose exec サービス名 コマンド
$ docker-compose exec php-fpm /bin/bash
일어나는 컨테이너 일지를 확인하고 싶을 때
로그를 확인하려면
docker-compose logs
사용할 수 있습니다.일반적으로
--tail
옵션을 사용하면 끝에서 대상의 줄 수만 표시하고tail을 통해 확인합니다.로그를 확인하는 방법은 여러 가지가 있는데 웹에서 로그를 확인하는 프로그램dozzle도 있다.
docker-compose logs --tail=5 必要であればサービス名
서비스 이름을 쓰지 않으면 docker-compose의 모든 서비스의 로그를 재생합니다.컨테이너 애플리케이션에서 DB 등 서비스에 연결하려는 경우
컨테이너 내 앱에서 DB 등 서비스로 연결하고 싶은 경우가 있다고 생각한다.
IP를 지정하려고 노력하는 방법도 있지만, 컨테이너가 재부팅되면 달라지기 때문에 좋지 않다.
이럴 때
host名の部分にサービス名
쓰세요.예를 들어 아래에 쓴
docker-compose.yml
의 예에 따라host명의 부분mysql
과 같은 문자열을 설정하면 접근할 수 있다.이전에는 서비스 정의
links
가 필요했지만 지금은 정의하지 않아도 자동으로 접근할 수 있습니다.docker-compose.저는 Yml에 대해서 더 알고 싶어요.
한마디로 샘플로서의 docker-compose.준비됐습니다.
곳곳에 평론이 있다.
version: "3" # 利用するdocker-compose.ymlのバージョン。バージョンによって書ける項目などが若干異なる
services: # 各サービスの定義
nginx: # nginxという名前でサービスを定義、これがコンテナになる
image: nginx:alpine # 取得してくるイメージ。ドメイン名が入ってない場合はDocker Hubのもの。/すら入ってない場合はdockerオフィシャルイメージ。
volumes: # 共有ボリュームの設定
- ./:/app # ホスト:コンテナ[:オプション]の順に記述する。
- ./docker-assets/nginx/default.conf:/etc/nginx/conf.d/default.conf:cached
ports: # ポートフォワーディングの設定
- "8080:80" # 順番にホスト側:コンテナ側で書く
php-fpm:
build: ./docker-assets/php-fpm/ # buildが書かれている場合、ローカルにDockerfileが存在する。対象の場所にDockerfileというファイルがあるので見てみよう
volumes:
- ./:/app
mysql:
image: mysql:5.7 # :のあとに書かれているのは取得するタグ。イメージにタグが振られている。
environment: # 環境変数。基本的にはビルド時に使われる。
MYSQL_DATABASE: ${DB_DATABASE} # ${名前}と書いた場合、.envファイルを探しに行って対象のキーの値を割り当てる
MYSQL_USER: user # もちろんそのまま文字列も指定できる
MYSQL_PASSWORD: ${DB_PASSWORD:-passtext} # .envに書かれてなかった場合、passtextという文字列がセットされる
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
volumes:
- db-data:/var/lib/mysql # ホストが下に定義されているvolumeの場合もある
volumes: # ボリュームの定義。コンテナが消えても保持しておきたいデータなどがある場合に定義する
db-data: # db-dataというローカルボリュームを定義している
현재의 주류 버전은 2학과 또는 3학과이다.주로 2학과를 반드시 사용해야 하는 상황volumes_from
에 기술된 상황이다.busybox
등 통일적으로 글을 쓰고 공유하는 서비스가 있다면 3학과의 서비스는volumes를 지정해야 한다.주 버전
3
등)에 대한 설명만 있고 보조 버전3.0
을 지정하지 않으면 .0
의 버전이기 때문에 특정 버전 이후에 준비된 항목을 사용하려면 이터레이션을 지정하십시오.다른 설정 가능한 항목에 대해서는 공식적으로 설명해 주십시오.
로컬volume를 취소하고 싶을 때
가끔 로컬 볼륨을 취소하고 싶을 때가 있습니다.이럴 때
-v
옵션을 사용하세요.$ docker-compose rm -v サービス名
サービス名を指定しなかったらdocker-compose.ymlに書かれているものすべて消えます
또한 기본적으로 로컬 음량은 プロジェクト名_ボリューム名
에서 만들어졌다.그래서
$ docker volume ls
에서 음량 일람 확인$ docker volume rm プロジェクト名_ボリューム名
에서 삭제할 수도 있습니다.사용하지 않은 컨테이너를 삭제하려는 경우
스톱이 진행 중인 컨테이너를 삭제할 수 있습니다.
$ docker container prune
사용하지 않는volume를 삭제하려면
docker container ls
에서 관련이 없는 모든volume는 삭제할 수 있습니다.$ docker volume prune
사용하지 않은 그림을 삭제하려면
위volume를 없애고 싶은 사람과 같다.
$ docker image prune
사용 중인 네트워크를 삭제할 수 없는 경우
docker network가 사라지지 않을 때가 있어요.
$ docker network rm ネットワーク名
이럴 때는 인스펙트에 사용되는 컨테이너를 찾아 내려놓으세요.$ docker network inspect ネットワーク名
$ docker down コンテナ名
Reference
이 문제에 관하여(업무에서 docker-compose를 사용하는 사람들을 위한 수첩입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/fagai/articles/55c1b34172ca5a0bce09텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)