Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Kotlin
- mysql
- AWS
- Crawling
- TypeScript
- algorithm
- wireshark
- MongoDB
- typeorm
- postman
- React
- ubuntu
- Scheduling
- Android
- OOAD
- sequelize
- Express
- css
- linux
- S3
- python
- node.js
- mongoose
- DATABASE
- docker
- OS
- HTML
- macos
- Network
- Util
Archives
- Today
- Total
Seongwon Lim
[Docker] Docker in Docker(DinD) - 도커 컨테이너 안에 도커 사용 본문
반응형
서론
Docker In Docker(DinD)는 실행중인 특정 도커 컨테이너에서 도커를 사용하는 기술이다.
이번 글에서는 DinD를 사용하기 위해 필수적으로 해야하는 설정을 알아보고자 한다.
본론
예를 들어, 도커 컨테이너 안에서 로컬 서버의 도커 컨테이너 목록을 조회하는 기능을 구현한다고 해보자.
우리는 도커 컨테이너 목록을 조회하기 위해 docker ps -a 명령어를 사용한다.
해당 명령어를 기반으로 docker 이미지를 가진 컨테이너에서 docker ps -a 명령어를 수행하려면 다음과 같이 도커 명령어를 작성할 수 있다.
// --rm 명령어는 프로세스 종료 시 컨테이너 자동 제거 옵션
$ docker run --rm docker docker ps -a
이미지를 받고난 후 명령어가 수행되면 다음과 같은 에러가 발생할 것이다.
error during connect: Get "http://docker:2375/v1.24/containers/json?all=1": dial tcp: lookup docker on 8.8.8.8:53: no such host
해당 에러가 발생하는 이유는 로컬의 Docker Daemon에 명령어를 전달하기 위한 소켓(docker.sock)이 존재하지 않아서 발생하는 문제이다.
이를 해결하기 위해서는 도커 컨테이너 시작 시 볼륨 마운트를 통해 문제를 해결할 수 있다.
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock docker docker ps -a
위 그림과 같이 도커 컨테이너 안에서 로컬 서버의 도커 컨테이너 목록을 조회할 수 있다.
docker-compose.yml 파일에 볼륨 마운트를 하려면 다음과 같이 작성하면 된다.
services:
myservice:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
'Docker' 카테고리의 다른 글
[Docker] 도커를 이용하여 NTP(Chrony) 서버 구축하기 - Linux (0) | 2024.02.27 |
---|---|
[Docker] 도커 컨테이너(Docker Container) 파일 추출 및 업로드 방법 (0) | 2023.09.19 |
[Docker] 실행 중인 컨테이너에 명령어 전달하기 (0) | 2022.07.20 |
[Docker] 도커를 이용하여 Node.js 서버 배포하기 (0) | 2022.05.07 |
Comments