참고 :https://not-to-be-reset.tistory.com/428
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Docker의 Official GPG Key 를 등록합니다.curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
stable repository 를 등록해줍니다.echo \
"deb [arch=amd64 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
아래 명령어를 입력하면 자동으로 최신 버전이 설치 됩니다.
```
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
```
설치가 완료된 후에는
```
docker --version
```
를 입력해서 버전을 확인 하거나
혹은 hello-world 이미지를 실행 시켜 잘 설치되었는지 확인 할 수 있습니다.
```
sudo docker run hello-world
```
Docker Compose는 여러개의 도커 어플리케이션 컨테이너들을 정의하고 실행 할 수 있게 도와주는 툴 입니다. YAML 파일을 사용해 어플리케이션의 서비스를 설정하고 하나의 커맨드만으로 여러개의 도커 컨테이너들을 사용 할 수 있습니다.
Docker 를 설치 해도 Compose 가 딸려 오는 것은 아니기 때문에 따로 설치 해 주어야 합니다. 이전에는 stand-alone 으로만 제공되었지만 이제는 플러그인 형태로 지원되고 있습니다.
```
sudo apt-get update
sudo apt-get install docker-compose-plugin
```
잘 설치 되었는지 확인해봅니다.
```
docker compose version## Docker Compose version v2.12.2
```
플러그인 형태가 아닌 이전처럼 standalone 형태로의 설치를 원할 경우는 아래와 같이 할 수 있습니다.
```
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
docker-compose --version #설치 여부 확인
```
docker 명령어를 쓸 때마다 sudo 를 입력하기 번거로워서 유저그룹을 추가하는 방법을 따로 포스팅 해 두었습니다.
docker를 쓴다면 사실상 꼭 설정해야 한다고 생각하니, 아래 글을 클릭해서 따라 설정 해 주세요.
Linux, sudo 없이 명령어 실행하기 (예:docker)
sudo usermod -aG docker {사용자명} // 재접속 해야만 적용됨
매주 업데이트되는 weekly 버전과 좀 더 안정적인 LTS 버전으로 나누어지네요.저는 겁쟁이기 때문에 LTS 를 택하겠습니다.
▶ 도커허브로 부터 jenkins/jenkins:lts 이미지 pull
$ docker pull jenkins/jenkins:lts
▶ 젠킨스 컨테이너 실행
$ docker run -d --name jenkins -p 8080:8080 -v /jenkins:/var/jenkins_home -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -u root jenkins/jenkins:lts
여기서 핵심은 바인딩(-v) 옵션 입니다. // 이거 안하면 망함
docker exec <CONTAINER_NAME> cat /var/jenkins_home/secrets/initialAdminPassword
▶ 도커 컨테이너의 실행 상태 확인$ docker ps
<젠킨스 EC2 서버 IP>:8080
젠킨스 서버에서 원격 서버에 접속하기 위한 ssh key 생성
Jenkins 서버에서 ssh-keygen -t rsa
명령어로 ssh key를 생성한다. 여기서는 모든 항목을 Enter를 입력해서 넘어갔다. 중간에 passphrase를 입력해도 상관 없지만, Jenkins에 private key를 등록할때 추가로 passphrase를 입력해주어야 한다.
$ ls .ssh/
id_rsa id_rsa.pub
// private key인 id_rsa와 public key인 id_rsa.pub가 생성된 것을 확인한다.
Jenkins 서버가 아닌 원격 서버에 Jenkins에서 ssh 연결을 할 계정으로 접속해서 public key를 등록해야 한다.만약 계정 이름이 'ubuntu'라면 /home/ubuntu/.ssh/ 디렉토리에 있는 'authorized_keys'파일에 위에서 생성한 public key를 등록한다. 만약 'authorized_keys' 파일이 존재하지 않으면 직접 생성하여 public key 내용을 복사해서 붙여넣어주면 된다.
$ cat authorized_keys
ssh-rsa AXXXXXD(생략) jenkins서버계정명@jenkins서버호스트네임
// 이미 작성 되어있는 authorized_keys 끝에서 엔터치고 아래에 붙여 넣어주면 된다.
<젠킨스 EC2 서버 IP>:8080 에 Publish over SSH 설정
하단의 'Publish over SSH' 항목에 id_rsa key 내용 전체를 복사해서 붙여 넣어준다. <안된다면 EC2 ssh -i 에 들어갈 때 사용하는 .pem 키 넣어보기>
'SSH Servers' 문구 아래에 있는 '추가' 버튼을 선택한다.
위에서 추가한 private key를 이용해 실제로 접속할 원격 서버의 정보를 입력한다.
1. Name에는 아무 이름이나 넣어줘도 된다.
2. Hostname에는 ssh로 접속해야 하는 서버의 ip 주소를 입력한다. <포트번호 없어야함>
3. 접속해야 하는 서버의 계정이름을 입력한다.
ssh 접속의 경우 기본으로 22번 포트를 이용하는데, 만약 접속해야 하는 서버의 ssh 접속 포트를 변경했다면 아래의 과정을 추가로 진행한다. ('Test Configuration' 버튼 위에 있는 '고급...' 버튼 선택)포트를 따로 변경하지 않았다면 우측 하단의 'Test Configuration'을 클릭하여, 위의 정보대로 서버에 ssh 접속이 가능한지 테스트를 할 수 있다. 'success' 문구가 출력된다면 성공이다.
'Port' 항목을 ssh 접속이 가능한 Port 번호로 변경한 뒤, 우측 하단의 'Test Configuration'을 클릭하여 ssh 접속이 되는지 테스트한다.
위의 그림과 같이 좌측 하단에 'Success'문구가 출력되면 Test 성공이다.
Test 성공이 되면 '저장' 버튼을 선택하여 수정 사항들을 저장한다.
rm -rf 230309 &&
git clone https://github.com/leegunsun/230309.git &&
cd 230309 &&
docker stop node &&
docker rm node &&
docker build -t node:practice . &&
docker run -d -p 3000:3000 --name node node:practice
# node 이미지를 사용
FROM node:latest
# work dir
WORKDIR /app
# host pc의 현재경로의 파일을 workdir 의 현재 경로로 복사
COPY . .
RUN npm install
# 3000 포트 오픈
EXPOSE 3000
# container 실행 시 자동으로 실행할 command
CMD ["node", "index.js"]