본문 바로가기
DevOps

[Linux] EC2 Ubuntu 리눅스 Docker 설치 방법 및 도커 주요 명령어

by Jayson Jeong 2023. 7. 5.

1. Docker 설치 방법

1.1. apt 업데이트 및 필수 패키지 설치

#apt 업데이트
sudo apt-get update

#필수 패키지 설치
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

 

1.2. 공개키 다운로드 및 저장소 등록

#공개키 다운로드
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 저장소 등록
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

 

1.3. 도커 설치

#저장소 추가로 apt 업데이트
sudo apt update

#도커 설치
sudo apt install -y docker.io

 

1.4. 설치 확인

#도커 버전 조회
docker --version

#도커 상태 조회
systemctl status docker

 

 


2. 도커 주요 명령어

2.1. 도커 이미지

#도커 이미지 조회
docker images

#도커 허브에서 이미지 찾기
docker search [이미지명]

#도커허브에서 이미지 내려받기
docker pull [이미지명]:[버전]

#도커 이미지 빌드
docker image build -t [이미지명]:[태그명] [Dockerfile]

#이미지 삭제
docker rmi [이미지명]

 

2.2. 도커 컨테이너

#실행중인 컨테이너 조회
docker ps
docker container ls -a

#모든 컨테이너 조회
docker ps -a

#컨테이너 생성
docker create [옵션] [이미지명]:[버전]

#컨테이너 실행
docker start [컨테이너명]

#컨테이너 정지
docker stop [컨테이너명]

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

#컨테이너 삭제
docker rm [컨테이너명]

 

 

2.3 도커 run 명령어 옵션

옵션명 설명
--interactive 또는  -i 표준 입력을 활성화
--tty 또는  -t tty 모드를 사용
--detach 또는  -d 데몬 모드, 백그라운드로 컨테이너 실행
--publish 또는  -p 포트 포워딩호스트와 컨테이너의 포트를 연결
--volume 또는  -v 데이터 볼륨 설정
--env 또는  -e 컨테이너 내에서 사용할 환경변수 설정
--user 또는 -u 컨테이너가 실행될 리눅스 사용자 계정 이름 또는 UID 설정
--hostname 또는 -h 컨테이너의 호스트 이름을 설정
--workdir 또는 -w 컨테이너 안의 프로세스가 실행될 디렉토리를 설정
--attach 또는 -a 컨테이너에 표준 입력, 표준 출력, 표준 에러를 연결
--memory 또는 -m 컨테이너가 사용 가능한 최대 메모리 설정
--cpu-shares 또는 -c CPU 자원 분배 설정
--name 컨테이너 이름을 설정
--privileged 시스템의 모든 장치에 접근할 수 있으며 커널의 기능을 대부분 사용 가능
--rm 프로세스 종료 시 컨테이너 자동 제거
--restart 컨테이너 종료 시 재시작 설정
--link 컨테이너 끼리 연결
--gpus 컨테이너에서 호스트의 NVIDIA GPU 사용 설정
--security-opt 보안 옵션으로 모든 시스템콜 함수를 허용하는 등 설정 가능

 

 

2.3. 도커 포트포워딩(포트 매핑)

docker run -p <host port>:<container port>/<protocol> [이미지명] [other options]

ex)
docker run -d --name jenkins --restart=on-failure \
-p 8080:8080 \
-v /var/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Seoul \
-u root \
--env JENKINS_OPTS=--httpPort=7070
jenkins/jenkins

 

 

2.4. 도커 볼륨

-v [컨테이너 외부 디렉토리]:[컨테이너 내부 디렉토리]

-> -v /var/jenkins_home:/var/jenkins_home

도커가 설치된 리눅스의 /var/jenkins_home 디렉토리와 컨테이너 내부의 /var/jenkins_home 디렉토리를 마운트함.

#볼륨 매핑
docker run -v [컨테이너 외부 디렉토리]:[컨테이너 내부 디렉토리] [이미지명]

#도커 볼륨 조회
docker volume ls

#도커 볼륨 세부정보 조회
docker volume inspect [볼륨명]

#도커 볼륨 생성
docker create volume [볼륨명]

 

2.5. 도커 로그 조회

docker logs [컨테이너명]