컨테이너에서 host의 docker socket 사용
반응형
컨테이너로 구동한 `jenkins`에서 `host`의 `docker socket`를 사용하는 방법
docker-compose.yml
services:
jenkins:
image: jenkins/jenkins:lts-jdk11
container_name: jenkins
restart: always
volumes:
- ./data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock:ro # docker.sock를 공유한다
ports:
- 55000:5000
- 8880:8080
environment:
- TZ=Asia/Seoul
`docker.sock`를 공유할 수 있도록 `volumes`을 설정한다.
1. 젠킨스 컨테이너 접근 (root 계정으로)
docker exec -itu root jenkins /bin/bash
아래 설정을 위해 `root` 계정으로 접근한다.
2. docker apt repository 구성 및 docker ce 설치
apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce
설치 중 `Enter`를 눌러야할 때가 있다.
3. docker 그룹 생성
groupadd -f docker
생성한 `docker` 그룹의 `gid`와 `host`의 `docker` 그룹의 `gid`가 같아야 함
(다를 경우 컨테이너 내부에서 `vi /etc/group` 명령어를 통해 수정할 것)
4. jenkins 그룹 지정
usermod -aG docker jenkins
`jenkins` 계정이 `docker 소켓`을 사용할 수 있도록 `docker` 그룹에 속하도록 설정한다.
5. docker.sock 소유자 지정
chown root:docker /var/run/docker.sock
`docker` 그룹에 속한 계정(`jenkins`)이 `docker 소켓`을 사용할 수 있도록 `docker.sock`의 소유자를 재설정한다.
6. docker 컨테이너 재시작
docker compose restart
재시작 후 젠킨스를 통해 `docker` 명령어가 작동하는지 확인한다.
끝.
반응형
'development' 카테고리의 다른 글
linux disk mount (0) | 2024.09.15 |
---|---|
nginx-proxy-manager: Cloudflare 인증서 갱신 오류 (0) | 2024.09.09 |
postgres primary/replica (0) | 2024.09.08 |
JOOQ 비관적 잠금 (0) | 2024.09.06 |
라즈베리파이 HID (0) | 2024.07.29 |
댓글
이 글 공유하기
다른 글
-
linux disk mount
linux disk mount
2024.09.15 -
nginx-proxy-manager: Cloudflare 인증서 갱신 오류
nginx-proxy-manager: Cloudflare 인증서 갱신 오류
2024.09.09 -
postgres primary/replica
postgres primary/replica
2024.09.08 -
JOOQ 비관적 잠금
JOOQ 비관적 잠금
2024.09.06