업무에서 docker-compose를 사용하는 사람들을 위한 수첩입니다.

최근 각 회사에서 도커를 사용하고 있는데, 늘 사용하는 사람도 많다고 느낀다.
그래서 저는 업무상 사용하는 지령과 설명을 쓰고 싶습니다.
제 수준은 정식 경기에서 docker로 서버를 만드는 사람이 아니기 때문에 잘 모르겠습니다. 양해해 주십시오.

전제 조건

  • docker가 조금 알아
  • Docker Desktop에 배치된 상태
  • 로컬 개발 환경 결합
  • 전제적 인식


    용기와 인상의 차이를 이해하지 못하면 뒷일을 파악하기 어려울 수도 있다.
    이미지는 이미지를 이동하는 인스턴스로 간주할 수 있는 구성(또는 스냅샷)입니다.
    인상이 사라지지 않는 한 용기를 만드는 데는 속도가 빠르다는 것을 기억해야 한다.

    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의 버전이기 때문에 특정 버전 이후에 준비된 항목을 사용하려면 이터레이션을 지정하십시오.
    다른 설정 가능한 항목에 대해서는 공식적으로 설명해 주십시오.
    https://docs.docker.com/compose/compose-file/

    로컬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 コンテナ名
    

    좋은 웹페이지 즐겨찾기