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'