🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁
TIL 회고 - [69]일차
🚀69일차에는 도커를 이용해서 리눅스 가상환경을 설치해보고 가상환경 내에서 리눅스 명령어로 실습하는 것을 학습했다.
학습 목표 : 가상환경을 구축하는 이유를 알고 가상환경 안에서의 명령어 사용에 익숙해져야함
학습 과정 : 회고를 통해 작성
Docker
❓Docker의 이점
- 로컬에서 잘 작동하는 코드가 서버에서도 동일하게 실행
- 컨테이너를 쉽게 복제하고 여러 개 실행 가능
- docker-compose나 Kubernetes로 여러 개의 서비스(컨테이너)를 관리할 수 있음.
- Dockerfile과 docker-compose를 사용하면 개발-테스트-배포를 자동화할 수 있음
- Windows, macOS, Linux 등 어떤 OS에서든 동일한 환경을 제공
- Docker를 사용하면 VM보다 가볍고, 빠르고, 효율적으로 환경을 격리할 수 있음
ex.
docker run -d --name python3.8 python:3.8
docker run -d --name python3.10 python:3.10
- Python 3.8과 3.10을 동시에 실행하고 환경을 독립적으로 유지 가능
services:
app:
image: my-web-app
ports:
- "8080:80"
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
- 웹 서버 + 데이터베이스를 한 번에 실행 가능
- docker-compose up -d 한 줄이면 전체 시스템 가동할 수 있음
도커 + amazonlinux 설치
- docker pull amazonlinux:2023.6.20250218.2 ➡️도커 이미지 설치
- docker images ➡️이미지가 잘 들어와있는지 확인
- docker run -it --name [이름설정] [이미지ID] /bin/bash
-i : 인터페이스를 연결
t : 터미널을 활성화시키는 것
--name : 별칭을 설정
/bin/bash : bin의 bash를 열어달라는 의미 - docker ps ➡️현재 실행중인 컨테이너 출력
- docker ps -a ➡️종료되었거나 실행되었었던 것들까지 모두 출력
- docker rm lionlinux ➡️ 컨테이너를 삭제할때 컨테이너ID를 이용해서 삭제해도되고
[이름설정]으로 지정해놓은 별칭으로 삭제할 수도 있다.

- images 들을 보여주는데 REPOSITORY 들 중에서 어떤 것으로 가상환경을 만들것인지를 선택
- amazonlinux 로 만들것이므로 이 이미지를 활용하여 여러 개의 가상환경을 만들어줄 수 있다는 것
가상환경 만들기

- --name을 지정하지 않으면 이처럼(reverent_hopper) 임의로 이름을 만들어냄
docker run -it —name likelinux [amazonlinux의 IMAGE ID] [컨테이너 시작 시 실행할 프로그램]
➡️ /bin/bash에서 exit로 이 가상환경(컨테이너)을 나갈 수 있음
➡️run : 이미지를 다운로드 한 뒤 docker run 명령어로 컨테이너를 생성하고 즉시 실행 가능
➡️docker start likelinux : 다시 해당 가상환경(컨테이너)에 접속 가능
➡️docker rm 컨테이너id : 종료된 컨테이너는 이 명령어로 삭제
종료된 컨테이너를 삭제하지 않고 시작하게 되면 오류가 발생할 수도 있다.
반면 mysql 이미지로 들어가고 싶다면
docker exec -it [mysql의 IMAGE ID] /bin/bash 로 접속이 가능
docker 명령어 정리
- docker ps -a : 컨테이너 목록 조회
- docker start <컨테이너이름> : 중지 상태인 컨테이너 시작
- docker stop <컨테이너이름> : 실행중인 컨테이너 중지
- docker rm <컨테이너이름> : 컨테이너 삭제
- docker exec -it <컨테이너이름> /bin/bash : 실행 중인 컨테이너 재접속
❓docker run vs docker start vs docker exec 차이점
- docker run [옵션] <이미지> [명령어] ➡️새로운 컨테이너 생성 및 실행
만약 해당 이미지가 로컬에 없다면 이미지를 먼저 다운로드(pull) 한 후 실행
컨테이너가 실행되면 새로운 컨테이너 ID를 부여받고 동작
컨테이너가 종료되면, 기본적으로 컨테이너가 유지되지만, -rm 옵션을 주면 종료와 동시에 삭제
-d 옵션 : 백그라운드 실행 (detached mode)
-name mycontainer : 컨테이너 이름을 mycontainer로 지정 - docker start <컨테이너이름 또는 ID> ➡️ 중지된 컨테이너 재시작
기존에 생성된 컨테이너를 다시 실행하는 명령어
(=새로운 컨테이너를 생성하는 것이 아니라 기존 컨테이너를 재사용)
ex. 한 번 docker run으로 만든 컨테이너는 docker stop으로 멈출 수 있고, 다시 docker start로 재실행 가능
(=컨테이너가 중지상태라면 다시 실행) - docker exec -it <컨테이너이름> <명령어> ➡️실행 중인 컨테이너 내부에서 명령어 실행
컨테이너를 새로 실행하는 것이 아니라
기존 컨테이너 내부에서 쉘을 실행하거나, 특정 프로세스를 추가 실행
it 옵션 : 인터랙티브 모드로 터미널에 접속 가능
docker-compose
- docker-compose로 리눅스 실습환경을 만듦
- docker-compose : 여러 개의 컨테이너 환경을 정의하고 일괄실행, 중지, 삭제 할 수 있게 해주는 도구
하나의 YAML 파일에 서비스를 정의하고, 명령어 한번으로 컨테이너 제어 가능
docker-compose.yml
services:
amazonlinux:
image: amazonlinux:2023.6.20250218.2
container_name: amazonlinux-compose
# 컨테이너 실행 시 bash 쉘 사용
command: /bin/bash
# 아래 두 설정을 통해 세션(-it)효과
tty: true
stdin_open: true
- amazonlinux는 서비스 이름이므로 임의로 지정해도됨
- image : 사용할 Docker 이미지
- command : 컨테이너가 시작될때 실행할 명령 ➡️ /bin/bash로 지정하면 bash쉘환경이 띄워짐
- tty, stdin_open : 대화형 모드를 유지하기 위한 옵션

- docker-compose의 명령어 docker-compose ps와 일반 Docker 명령어인 docker ps 로
실행중인 프로세스를 확인 가능

- docker-compose exec로 이미지를 실행할 수 있고
- docker-compose down 을 하여 실행중인 환경을 내려줄 수 있다.
만약 여러 개의 리눅스 컨테이너를 동시에 띄우거나 DB, 웹서버 등과 연계하고 싶다면
docker-compose.yml의 services 블록에 추가 컨테이너를 정의하면 됨
❓docker ps 와 docker-compose ps 차이점
➡️docker ps : 개별 컨테이너 상태 확인
도커 엔진에서 실행 중인 모든 컨테이너를 조회
docker run으로 생성된 컨테이너든, docker-compose로 생성된 컨테이너든 모두 출력
실행 중인 컨테이너만 보이며, 중지된 컨테이너도 보려면 docker ps -a를 사용
➡️docker-compose ps : 특정 Compose 프로젝트의 컨테이너 상태 확인
docker-compose로 실행한 특정 프로젝트의 컨테이너들만 조회
정리하자면
docker ps는 모든 컨테이너를 보여주지만,
docker-compose ps는 현재 docker-compose.yml 파일과 관련된 컨테이너들만 출력
SSH 접속 컨테이너
- Dockerfile 만들기
FROM amazonlinux:2023.6.20250218.2
# 1) 패키지 업데이트 & SSH 서버 설치 (passwd도 같이 설치해두면 유용)
RUN yum update -y && \
yum install -y openssh-server passwd
# 2) root 암호 설정(테스트용)
RUN echo 'root:rootpass' | chpasswd
# 3) SSH 관련 디렉토리 생성 (이미 존재할 수도 있지만, 혹시 몰라서 생성)
RUN mkdir -p /var/run/sshd
# 4) SSH 호스트키 생성 (필수! 이게 없으면 "no hostkeys available" 오류 발생)
RUN ssh-keygen -A
# 5) 비밀번호 로그인을 허용하려면 sshd_config 수정 (필요 시)
RUN sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config && \
sed -i 's/^PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 6) 포그라운드(-D) & 로그 stdout/stderr(-e)로 출력
CMD ["/usr/sbin/sshd", "-D", "-e"]
- likelinux 외로 lionlinux를 별도로 만들어 이번에는 Dockerfile을 만들어서 설정들을 넣어준다.
- Dockerfile에서 Amazon Linux 2023 + SSH 서버를 올리기 위해 사용
- RUN ssh-keygen -A : 호스트키를 자동생성, 누락되면 에러로 종료
- sed 명령어를 통해 sshd_config를 수정해야 비밀번호 로그인이 가능해지고, root 계정 로그인도 허용됨
- yum update -y : 패키지 업데이트
- yum install -y openssh-server passwd : SSH 서버 설치
passwd 패키지는 사용자 암호를 설정할 때 필요 - Docker 컨테이너는 기본적으로 독립적인 환경이므로, 필요한 패키지를 직접 설치해야 함
- echo 'root:rootpass' | chpasswd : root 사용자의 비밀번호를 rootpass로 설정
chpasswd 명령어는 root:비밀번호 형식의 입력을 받아 암호를 설정 - SSH 접속을 허용하려면 root 계정에 암호를 설정해야 SSH 로그인 가능
- RUN mkdir -p /var/run/sshd : /var/run/sshd 디렉토리를 생성 ➡️ SSH 데몬(sshd)이 실행될 때 필요한 경로
- RUN ssh-keygen -A : SSH 호스트키 생성 (SSH 서버가 정상적으로 실행되려면 호스트 키가 필요)
즉 필요한 SSH 키를 자동으로 생성하는 명령
docker-compose.yml
version: "3"
services:
amazonlinux-ssh:
build: .
container_name: amazonlinux-ssh
ports:
- "2222:22"
volumes:
- "./data:/workspace"
restart: always
- version: "3" ➡️docker-compose에서 사용할 Compose 파일의 버전을 지정
- build: . ➡️현재 디렉토리에서 빌드
- "2222:22" ➡️호스트(로컬) 2222 포트를 컨테이너 내부의 22 포트(SSH)와 연결.
컨테이너 내부의 SSH 서버는 기본적으로 포트 22에서 동작
호스트(로컬) 머신의 포트 2222를 사용하도록 설정하면 다른 SSH 서비스(기본 22번 포트)와 충돌 방지 가능
ex. 포트를 바꾸고 싶다면 "8022:22"처럼 다른 번호 사용 가능 - - "./data:/workspace" ➡️볼륨 마운트 (데이터 공유)
호스트의 ./data 디렉토리를 컨테이너 내부의 /workspace로 마운트
(=컨테이너 내부에서 /workspace에 저장한 파일이 호스트의 ./data와 동기화됨) - restart: always ➡️ 컨테이너 자동 재시작

- ssh root@127.0.01 -p 2222
명령어를 통해 접속을 수행하고 password로 rootpass를 넣음 (rootpass가 비밀번호)
❓Docker 컨테이너에서 SSH 접속을 테스트 시 127.0.0.1과 본인의 IP(172.XX.1.XX) 사용의 차이점
➡️ssh root@127.0.0.1 -p 2222
- 로컬을 의미하고 자신의 PC 내부 네트워크를 의미
- 외부에서는 절대 접근할 수 없음 (=현재 컴퓨터에서만 접근 가능)
- Docker가 컨테이너의 22번 포트를 호스트의 2222번 포트와 연결했기 때문에 127.0.0.1:2222로 접속하면
호스트에서 컨테이너로 접속하는 것
- 127.0.0.1은 항상 자기 자신을 의미
➡️ssh root@172.XX.1.XX -p 2222
- 로컬 네트워크에서 할당된 IP 주소
- 같은 네트워크에 있는 다른 컴퓨터에서도 접근 가능
yum 명령어
- yum --version : yum 버전 확인
- yum update -y : yum 버전 업데이트
- yum search git : yum 패키지매니저로 git 탐색
- yum install -y git : yum 패키지매니저로 git 설치
- yum info git : yum 으로 git 정보 출력
- whoami : 현재 접속중인 계정을 알 수 있다. → ex. root
which
- 리눅스에서 특정 실행 파일(binary)의 경로를 찾는 명령어
(=즉, 사용자가 실행하는 명령어가 어디에 있는 파일인지를 찾아줌) - yum install -y which 로 설치
- which bash
➡️bash라는 명령어가 어느 경로에 위치해 있는지 확인 - 패키지매니저 (yum / dnf)
yum : 필요한 패키지들을 설치 가능
dnf : yum의 차세대버전으로 명령어 방식이 비슷
🚀회고 결과 :
yum패키지매니저로 가상환경 내에서 필요한 다양한 패키지들을 설치해보고 그 안에서 파일생성, 디렉토리 생성 등 회고 시간에 실습해볼 수 있었다. docker-compose.yml 이나 Dockerfile 같은 설정파일의 코드에 대해서 아직 익숙치 않아 더 공부가 필요할 것 같다고 느꼈다.
향후 계획 :
- Docker 관련 설정파일 작성하는 법 공부
'Recording > 멋쟁이사자처럼 BE 13기' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_71일차_"Docker + Linux (3)" (0) | 2025.03.21 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_70일차_"Docker + Linux (2)" (0) | 2025.03.20 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_68일차_"Git / GitHub" (0) | 2025.03.18 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_67일차_"JUnit" (0) | 2025.03.17 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_66일차_"모임 관리 프로젝트" (0) | 2025.03.14 |
🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁
TIL 회고 - [69]일차
🚀69일차에는 도커를 이용해서 리눅스 가상환경을 설치해보고 가상환경 내에서 리눅스 명령어로 실습하는 것을 학습했다.
학습 목표 : 가상환경을 구축하는 이유를 알고 가상환경 안에서의 명령어 사용에 익숙해져야함
학습 과정 : 회고를 통해 작성
Docker
❓Docker의 이점
- 로컬에서 잘 작동하는 코드가 서버에서도 동일하게 실행
- 컨테이너를 쉽게 복제하고 여러 개 실행 가능
- docker-compose나 Kubernetes로 여러 개의 서비스(컨테이너)를 관리할 수 있음.
- Dockerfile과 docker-compose를 사용하면 개발-테스트-배포를 자동화할 수 있음
- Windows, macOS, Linux 등 어떤 OS에서든 동일한 환경을 제공
- Docker를 사용하면 VM보다 가볍고, 빠르고, 효율적으로 환경을 격리할 수 있음
ex.
docker run -d --name python3.8 python:3.8
docker run -d --name python3.10 python:3.10
- Python 3.8과 3.10을 동시에 실행하고 환경을 독립적으로 유지 가능
services:
app:
image: my-web-app
ports:
- "8080:80"
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpass
- 웹 서버 + 데이터베이스를 한 번에 실행 가능
- docker-compose up -d 한 줄이면 전체 시스템 가동할 수 있음
도커 + amazonlinux 설치
- docker pull amazonlinux:2023.6.20250218.2 ➡️도커 이미지 설치
- docker images ➡️이미지가 잘 들어와있는지 확인
- docker run -it --name [이름설정] [이미지ID] /bin/bash
-i : 인터페이스를 연결
t : 터미널을 활성화시키는 것
--name : 별칭을 설정
/bin/bash : bin의 bash를 열어달라는 의미 - docker ps ➡️현재 실행중인 컨테이너 출력
- docker ps -a ➡️종료되었거나 실행되었었던 것들까지 모두 출력
- docker rm lionlinux ➡️ 컨테이너를 삭제할때 컨테이너ID를 이용해서 삭제해도되고
[이름설정]으로 지정해놓은 별칭으로 삭제할 수도 있다.

- images 들을 보여주는데 REPOSITORY 들 중에서 어떤 것으로 가상환경을 만들것인지를 선택
- amazonlinux 로 만들것이므로 이 이미지를 활용하여 여러 개의 가상환경을 만들어줄 수 있다는 것
가상환경 만들기

- --name을 지정하지 않으면 이처럼(reverent_hopper) 임의로 이름을 만들어냄
docker run -it —name likelinux [amazonlinux의 IMAGE ID] [컨테이너 시작 시 실행할 프로그램]
➡️ /bin/bash에서 exit로 이 가상환경(컨테이너)을 나갈 수 있음
➡️run : 이미지를 다운로드 한 뒤 docker run 명령어로 컨테이너를 생성하고 즉시 실행 가능
➡️docker start likelinux : 다시 해당 가상환경(컨테이너)에 접속 가능
➡️docker rm 컨테이너id : 종료된 컨테이너는 이 명령어로 삭제
종료된 컨테이너를 삭제하지 않고 시작하게 되면 오류가 발생할 수도 있다.
반면 mysql 이미지로 들어가고 싶다면
docker exec -it [mysql의 IMAGE ID] /bin/bash 로 접속이 가능
docker 명령어 정리
- docker ps -a : 컨테이너 목록 조회
- docker start <컨테이너이름> : 중지 상태인 컨테이너 시작
- docker stop <컨테이너이름> : 실행중인 컨테이너 중지
- docker rm <컨테이너이름> : 컨테이너 삭제
- docker exec -it <컨테이너이름> /bin/bash : 실행 중인 컨테이너 재접속
❓docker run vs docker start vs docker exec 차이점
- docker run [옵션] <이미지> [명령어] ➡️새로운 컨테이너 생성 및 실행
만약 해당 이미지가 로컬에 없다면 이미지를 먼저 다운로드(pull) 한 후 실행
컨테이너가 실행되면 새로운 컨테이너 ID를 부여받고 동작
컨테이너가 종료되면, 기본적으로 컨테이너가 유지되지만, -rm 옵션을 주면 종료와 동시에 삭제
-d 옵션 : 백그라운드 실행 (detached mode)
-name mycontainer : 컨테이너 이름을 mycontainer로 지정 - docker start <컨테이너이름 또는 ID> ➡️ 중지된 컨테이너 재시작
기존에 생성된 컨테이너를 다시 실행하는 명령어
(=새로운 컨테이너를 생성하는 것이 아니라 기존 컨테이너를 재사용)
ex. 한 번 docker run으로 만든 컨테이너는 docker stop으로 멈출 수 있고, 다시 docker start로 재실행 가능
(=컨테이너가 중지상태라면 다시 실행) - docker exec -it <컨테이너이름> <명령어> ➡️실행 중인 컨테이너 내부에서 명령어 실행
컨테이너를 새로 실행하는 것이 아니라
기존 컨테이너 내부에서 쉘을 실행하거나, 특정 프로세스를 추가 실행
it 옵션 : 인터랙티브 모드로 터미널에 접속 가능
docker-compose
- docker-compose로 리눅스 실습환경을 만듦
- docker-compose : 여러 개의 컨테이너 환경을 정의하고 일괄실행, 중지, 삭제 할 수 있게 해주는 도구
하나의 YAML 파일에 서비스를 정의하고, 명령어 한번으로 컨테이너 제어 가능
docker-compose.yml
services:
amazonlinux:
image: amazonlinux:2023.6.20250218.2
container_name: amazonlinux-compose
# 컨테이너 실행 시 bash 쉘 사용
command: /bin/bash
# 아래 두 설정을 통해 세션(-it)효과
tty: true
stdin_open: true
- amazonlinux는 서비스 이름이므로 임의로 지정해도됨
- image : 사용할 Docker 이미지
- command : 컨테이너가 시작될때 실행할 명령 ➡️ /bin/bash로 지정하면 bash쉘환경이 띄워짐
- tty, stdin_open : 대화형 모드를 유지하기 위한 옵션

- docker-compose의 명령어 docker-compose ps와 일반 Docker 명령어인 docker ps 로
실행중인 프로세스를 확인 가능

- docker-compose exec로 이미지를 실행할 수 있고
- docker-compose down 을 하여 실행중인 환경을 내려줄 수 있다.
만약 여러 개의 리눅스 컨테이너를 동시에 띄우거나 DB, 웹서버 등과 연계하고 싶다면
docker-compose.yml의 services 블록에 추가 컨테이너를 정의하면 됨
❓docker ps 와 docker-compose ps 차이점
➡️docker ps : 개별 컨테이너 상태 확인
도커 엔진에서 실행 중인 모든 컨테이너를 조회
docker run으로 생성된 컨테이너든, docker-compose로 생성된 컨테이너든 모두 출력
실행 중인 컨테이너만 보이며, 중지된 컨테이너도 보려면 docker ps -a를 사용
➡️docker-compose ps : 특정 Compose 프로젝트의 컨테이너 상태 확인
docker-compose로 실행한 특정 프로젝트의 컨테이너들만 조회
정리하자면
docker ps는 모든 컨테이너를 보여주지만,
docker-compose ps는 현재 docker-compose.yml 파일과 관련된 컨테이너들만 출력
SSH 접속 컨테이너
- Dockerfile 만들기
FROM amazonlinux:2023.6.20250218.2
# 1) 패키지 업데이트 & SSH 서버 설치 (passwd도 같이 설치해두면 유용)
RUN yum update -y && \
yum install -y openssh-server passwd
# 2) root 암호 설정(테스트용)
RUN echo 'root:rootpass' | chpasswd
# 3) SSH 관련 디렉토리 생성 (이미 존재할 수도 있지만, 혹시 몰라서 생성)
RUN mkdir -p /var/run/sshd
# 4) SSH 호스트키 생성 (필수! 이게 없으면 "no hostkeys available" 오류 발생)
RUN ssh-keygen -A
# 5) 비밀번호 로그인을 허용하려면 sshd_config 수정 (필요 시)
RUN sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config && \
sed -i 's/^PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 6) 포그라운드(-D) & 로그 stdout/stderr(-e)로 출력
CMD ["/usr/sbin/sshd", "-D", "-e"]
- likelinux 외로 lionlinux를 별도로 만들어 이번에는 Dockerfile을 만들어서 설정들을 넣어준다.
- Dockerfile에서 Amazon Linux 2023 + SSH 서버를 올리기 위해 사용
- RUN ssh-keygen -A : 호스트키를 자동생성, 누락되면 에러로 종료
- sed 명령어를 통해 sshd_config를 수정해야 비밀번호 로그인이 가능해지고, root 계정 로그인도 허용됨
- yum update -y : 패키지 업데이트
- yum install -y openssh-server passwd : SSH 서버 설치
passwd 패키지는 사용자 암호를 설정할 때 필요 - Docker 컨테이너는 기본적으로 독립적인 환경이므로, 필요한 패키지를 직접 설치해야 함
- echo 'root:rootpass' | chpasswd : root 사용자의 비밀번호를 rootpass로 설정
chpasswd 명령어는 root:비밀번호 형식의 입력을 받아 암호를 설정 - SSH 접속을 허용하려면 root 계정에 암호를 설정해야 SSH 로그인 가능
- RUN mkdir -p /var/run/sshd : /var/run/sshd 디렉토리를 생성 ➡️ SSH 데몬(sshd)이 실행될 때 필요한 경로
- RUN ssh-keygen -A : SSH 호스트키 생성 (SSH 서버가 정상적으로 실행되려면 호스트 키가 필요)
즉 필요한 SSH 키를 자동으로 생성하는 명령
docker-compose.yml
version: "3"
services:
amazonlinux-ssh:
build: .
container_name: amazonlinux-ssh
ports:
- "2222:22"
volumes:
- "./data:/workspace"
restart: always
- version: "3" ➡️docker-compose에서 사용할 Compose 파일의 버전을 지정
- build: . ➡️현재 디렉토리에서 빌드
- "2222:22" ➡️호스트(로컬) 2222 포트를 컨테이너 내부의 22 포트(SSH)와 연결.
컨테이너 내부의 SSH 서버는 기본적으로 포트 22에서 동작
호스트(로컬) 머신의 포트 2222를 사용하도록 설정하면 다른 SSH 서비스(기본 22번 포트)와 충돌 방지 가능
ex. 포트를 바꾸고 싶다면 "8022:22"처럼 다른 번호 사용 가능 - - "./data:/workspace" ➡️볼륨 마운트 (데이터 공유)
호스트의 ./data 디렉토리를 컨테이너 내부의 /workspace로 마운트
(=컨테이너 내부에서 /workspace에 저장한 파일이 호스트의 ./data와 동기화됨) - restart: always ➡️ 컨테이너 자동 재시작

- ssh root@127.0.01 -p 2222
명령어를 통해 접속을 수행하고 password로 rootpass를 넣음 (rootpass가 비밀번호)
❓Docker 컨테이너에서 SSH 접속을 테스트 시 127.0.0.1과 본인의 IP(172.XX.1.XX) 사용의 차이점
➡️ssh root@127.0.0.1 -p 2222
- 로컬을 의미하고 자신의 PC 내부 네트워크를 의미
- 외부에서는 절대 접근할 수 없음 (=현재 컴퓨터에서만 접근 가능)
- Docker가 컨테이너의 22번 포트를 호스트의 2222번 포트와 연결했기 때문에 127.0.0.1:2222로 접속하면
호스트에서 컨테이너로 접속하는 것
- 127.0.0.1은 항상 자기 자신을 의미
➡️ssh root@172.XX.1.XX -p 2222
- 로컬 네트워크에서 할당된 IP 주소
- 같은 네트워크에 있는 다른 컴퓨터에서도 접근 가능
yum 명령어
- yum --version : yum 버전 확인
- yum update -y : yum 버전 업데이트
- yum search git : yum 패키지매니저로 git 탐색
- yum install -y git : yum 패키지매니저로 git 설치
- yum info git : yum 으로 git 정보 출력
- whoami : 현재 접속중인 계정을 알 수 있다. → ex. root
which
- 리눅스에서 특정 실행 파일(binary)의 경로를 찾는 명령어
(=즉, 사용자가 실행하는 명령어가 어디에 있는 파일인지를 찾아줌) - yum install -y which 로 설치
- which bash
➡️bash라는 명령어가 어느 경로에 위치해 있는지 확인 - 패키지매니저 (yum / dnf)
yum : 필요한 패키지들을 설치 가능
dnf : yum의 차세대버전으로 명령어 방식이 비슷
🚀회고 결과 :
yum패키지매니저로 가상환경 내에서 필요한 다양한 패키지들을 설치해보고 그 안에서 파일생성, 디렉토리 생성 등 회고 시간에 실습해볼 수 있었다. docker-compose.yml 이나 Dockerfile 같은 설정파일의 코드에 대해서 아직 익숙치 않아 더 공부가 필요할 것 같다고 느꼈다.
향후 계획 :
- Docker 관련 설정파일 작성하는 법 공부
'Recording > 멋쟁이사자처럼 BE 13기' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_71일차_"Docker + Linux (3)" (0) | 2025.03.21 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_70일차_"Docker + Linux (2)" (0) | 2025.03.20 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_68일차_"Git / GitHub" (0) | 2025.03.18 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_67일차_"JUnit" (0) | 2025.03.17 |
[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_66일차_"모임 관리 프로젝트" (0) | 2025.03.14 |