갓 태어난 컨테이너는 내부에 설치된 것이 거의 없어서 vi 명령어를 사용하려면 vim을 설치해주어야 한다.

 

# 컨테이너명 확인
docker ps -a

# 컨테이너 접속
docker exec -it [컨테이너명] /bin/bash

# Permission denied 발생
Reading package lists... Done
E: List directory /var/lib/apt/lists/partial is missing. 
- Acquire (13: Permission denied)

# 컨테이너 u0 재접속(권한 문제 해결)
docker exec -itu0 [컨테이너명] /bin/bash

apt-get update
apt-get upgrade
apt-get install vim

 

 

참고 사이트

Docker로 Jenkins를 띄우려고 했는데, 이미 8080 포트를 사용하고 있어 Jenkins 포트 번호를 바꾸고자 했다.

 

만약 Docker가 아닌 로컬에 Jenkins를 설치했다면 "/etc/default/jenkins" 파일을 수정해야 한다는 정보는 많지만

Docker의 Jenkins 기본 포트를 변경하는 정보는 많지 않았다.

 

🐳 Jenkins Docker 공식문서

https://hub.docker.com/_/jenkins

 

jenkins - Official Image | Docker Hub

DEPRECATION NOTICE This image has been deprecated for over 2 years in favor of the jenkins/jenkins:lts image provided and maintained by the Jenkins Community as part of the project's release process. The images found here have not received updates for over

hub.docker.com

 

Docker의 Jenkins 기본 포트를 변경하려면 JENKINS_OPTS를 활용해야 한다.

처음에 그냥 무작정 7070:7070만 입력했더니 젠킨스 접속이 안 되더라..

docker run -itd --env JENKINS_OPTS=--httpPort=7070 -p 7070:7070 -v ~/jenkins:/var/jenkins_home --name jenkins jenkins/jenkins:lts

JENKINS_OPTS 환경변수에 --httpPort값을 지정해주면 된다!

 

 

 

 

참고 사이트

1. Ubuntu 인스턴스에 CentOS 도커 컨테이너 설치

설치 환경

  • NHN Cloud
  • Ubuntu 20.04 LTS
  • Docker 23.0.1
  • CentOS 7.9

 

Workflow

  1. 설치하려는 패키지가 이미 설치되어 있는지 체크 후 다운로드
  2. Docker 공식 GPG 키 추가
  3. Docker 레포지토리 등록
  4. apt-get 업데이트
  5. Docker 설치
  6. 그룹에 사용자 추가
  7. CentOS 7 컨테이너 실행

 

설치 스크립트

#!/usr/bin/env bash

# curl 이미 설치되어 있는지 체크
if ! command -v curl &> /dev/null
then
    sudo apt-get update
    sudo apt-get install -y curl
fi

# apt-transport-https 이미 설치되어 있는지 체크
if ! dpkg -s apt-transport-https &> /dev/null
then
    sudo apt-get update
    sudo apt-get install -y apt-transport-https
fi

# ca-certificates 이미 설치되어 있는지 체크
if ! dpkg -s ca-certificates &> /dev/null
then
    sudo apt-get update
    sudo apt-get install -y ca-certificates
fi

# gnupg-agent 이미 설치되어 있는지 체크
if ! dpkg -s gnupg-agent &> /dev/null
then
    sudo apt-get update
    sudo apt-get install -y gnupg-agent
fi

# software-properties-common 이미 설치되어 있는지 체크
if ! dpkg -s software-properties-common &> /dev/null
then
    sudo apt-get update
    sudo apt-get install -y software-properties-common
fi

# Docker 공식 GPG key 이미 추가되어 있는지 체크
if ! curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key list | grep Docker &> /dev/null
then
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
fi

# Docker repository 등록
if ! apt-cache policy | grep https://download.docker.com/linux/ubuntu | grep stable &> /dev/null
then
  echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi

# 기본적인 패키지들이 최신 버전인지 확인
sudo apt-get update

# docker-ce 이미 설치되어 있는지 체크
if ! dpkg -s docker-ce &> /dev/null
then
    # Docker 설치
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
fi

# docker 그룹에 사용자 추가
sudo usermod -aG docker $USER

# Centos7 컨테이너 실행
sudo docker run --privileged -d -p 5432:5432 --name centos centos:7 /sbin/init
  • systemctl 명령을 사용하기 위해서 privileged로 컨테이너 실행
  • 컨테이너에 postgresql을 설치할 예정이어서 포트 5432로 실행

설치 환경

  • NHN Cloud
  • Ubuntu 20.04
  • Docker 23.0.1
  • Jenkins 공식 이미지



Workflow

  1. Ubuntu 인스턴스에 Docker 설치
  2. Jenkins 컨테이너 설치
  3. NHN Cloud 보안그룹에 8080 수신 포트 추가
  4. public IP:8080 으로 Jenkins 접속
  5. Jenkins 설정
    • 관리자 패스워드 등록
    • 플러그인 설치
    • 유저 설정
    • Jenkins 접속 URL 설정
  6. Jenkins 웹 접속

 

1. Ubuntu 인스턴스에 Docker 설치

아래 글을 참고하세요!

[🚦 인프라/🐳 Docker] - Ubuntu에 Docker 설치하기

 

Ubuntu에 Docker 설치하기

설치 환경 NHN Cloud Ubuntu 20.04 Docker 23.0.1 Ubuntu 인스턴스에 Docker 설치 🐳 Docker Docs 참고 1. apt package index 업데이트 및 apt가 HTTPS를 통해 저장소를 사용할 수 있도록 패키지를 설치합니다. sudo apt-get upd

myminju.tistory.com

 

2. Jenkins 컨테이너 설치

sudo docker run -d --name jenkins -p 8080:8080 jenkins/jenkins
  • -d: 컨테이너를 데몬으로 띄운다.
  • --name: 컨테이너의 이름을 jenkins로 설정한다
  • -p 8080:8080: 컨테이너의 외부와 통신할 포트(앞의 값)를 내부적으로 사용할 포트(뒤의 값)를 포워딩해준다.

 

3. NHN Cloud 보안그룹에 8080 수신 포트 추가

Jenkins를 8080 포트로 설치했기 때문에 통신할 수 있도록 보안그룹에 8080 포트를 추가하여 열어줍니다.

4. {public IP}:8080 으로 Jenkins 접속

앞의 과정을 모두 수행했다면 젠킨스 설치가 완료된 것입니다!

젠킨스 웹에 접근해보겠습니다. 젠킨스에 접근하려면 {public IP}:8080 주소를 웹에 입력하면 됩니다.
접속하면 아래와 같은 화면이 뜹니다.

 

5. Jenkins 설정

  • 패스워드 등록

초기 접속을 위해 관리자 패스워드 등록 과정이 필요합니다.

해당 키를 확인하기 위해서 젠킨스가 설치된 인스턴스에 접속해 아래의 명령어를 입력합니다.

// jenkins 컨테이너에 접속
$ sudo docker exec -it jenkins bash
// 초기 관리자 키 확인
$ cat /var/jenkins_home/secrets/initialAdminPassword

 

  • 플러그인 설치

키를 잘 입력하면 아래와 같이 젠킨스 초기 플러그인 설정이 나옵니다.
추천 플러그인 설정으로 선택합니다.

 

플러그인들이 하나씩 설치됩니다.

 

  • 유저 설정

플러그인 설치가 끝났다면 유저 설정을 합니다.

 

  • Jenkins 접속 URL 설정

젠킨스에 접속할 때 사용할 URL 설정입니다.
기본 설정 public IP:8080으로 유지하고 넘어갑니다.

 

  • 완료

젠킨스의 설치가 완료되었습니다!

 

6. Jenkins 웹 접속

설정한 URL와 유저 정보로 접속하면 아래와 같은 화면이 나옵니다.
GUI 화면을 통해 젠킨스를 이용할 수 있습니다.

설치 환경

  • NHN Cloud
  • Ubuntu 20.04
  • Docker 23.0.1

 

Ubuntu 인스턴스에 Docker 설치

🐳 Docker Docs 참고

1. apt package index 업데이트 및 apt가 HTTPS를 통해 저장소를 사용할 수 있도록 패키지를 설치합니다.

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release


2. Docker GPG키 추가

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


3. 저장소 설정

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


4. Docker Engine 설치

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin


5. Docker의 기본 이미지인 hello-world 이미지를 통해 정상적으로 설치되었는지 테스트

sudo docker run hello-world

 

+ Recent posts