docker-compose를 다시 만드는 방법은 무엇입니까?

docker-compose를 다시 만드는 방법은 무엇입니까?

docker-compose를 git에 푸시하지 않고 삭제했습니다. 제가 바보라는 걸 압니다. 스택이 아직 남아 있는데 docker-compose를 다시 생성할 수 있는 방법이 있나요? 도커 검사를 수행하고 필요한 모든 비트(예: 사용된 볼륨, 변수 등)를 볼 수 있지만 최소한의 노력으로 해당 조합을 복원할 수 있는 몇 가지 트릭이 있다면 좋을 것입니다.

감사해요,

답변1

먼저 해당 명령을 가져와야 하며 docker run다음 도구를 사용하여 수행할 수 있습니다.https://github.com/nexdrew/rekcod.

명령이 있으면 docker run다른 도구를 사용하여 이를 docker-compose 파일로 변환할 수 있습니다.https://composerize.com/.

예를 들어:

다음 파일이 있습니다 docker-compose.

version: '2'
services:
  logstash:
    image: docker.elastic.co/logstash/logstash:5.6.3
    ports:
      - 9600:9600
    volumes:
      - ./pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
      - ./config/:/usr/share/logstash/config

나는 docker-compose up다음 컨테이너를 실행하고 끝냅니다.

$ docker ps

CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS                              NAMES
5febb7edb627        docker.elastic.co/logstash/logstash:5.6.3   "/usr/local/bin/dock…"   2 minutes ago       Up 2 minutes        5044/tcp, 0.0.0.0:9600->9600/tcp   logstash563_logstash_1

그런 다음 docker run기본 컨테이너에 대해 동일한 명령을 생성합니다.

$ rekcod 5febb7edb627

docker run --name logstash563_logstash_1 -v /workplace/mariodes/docker/logstash/logstash-5.6.3/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:rw -v /workplace/mariodes/docker/logstash/logstash-5.6.3/config:/usr/share/logstash/config:rw -p 9600:9600/tcp --net logstash563_default --restart no -h 2392ddc1cea7 --expose 5044/tcp --expose 9600/tcp -e 'PATH=/usr/share/logstash/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'ELASTIC_CONTAINER=true' -e 'LANG=en_US.UTF-8' -e 'LC_ALL=en_US.UTF-8' -d --entrypoint "/usr/local/bin/docker-entrypoint" docker.elastic.co/logstash/logstash:5.6.3

이제 rekcod의 출력을 복사하여 다음과 함께 사용하십시오.https://composerize.com/docker-compose 파일로 변환합니다.

version: 3
services:
    logstash:
        container_name: logstash563_logstash_1
        volumes:
            - '/workplace/mariodes/docker/logstash/logstash-5.6.3/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:rw'
            - '/workplace/mariodes/docker/logstash/logstash-5.6.3/config:/usr/share/logstash/config:rw'
        ports:
            - '9600:9600/tcp'
        restart: no
        expose:
            - 5044/tcp
            - 9600/tcp
        environment:
            - 'PATH=/usr/share/logstash/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
            - ELASTIC_CONTAINER=true
            - LANG=en_US.UTF-8
            - LC_ALL=en_US.UTF-8
        entrypoint:
            - /usr/local/bin/docker-entrypoint
        image: 'docker.elastic.co/logstash/logstash:5.6.3'

관련 정보