컨테이너

윤이령·2026년 4월 17일
  • 만들기 쉽고 가벼우므로 일회용으로 사용
  • 동작중인 컨테이너를 그대로 삭제할 순 없음

생성, 실행, 정지, 삭제

생성, 실행

# docker run (옵션) 이미지 (인자)
docker run(docker container run)
  • 옵션
    • --name 컨테이너_이름 : 컨테이너 이름 지정
    • -p 호스트_포트번호:컨테이너 포트번호 : 포트 번호 지정
    • -v 호스트디스크:컨테이너디렉터리: 볼륨 마운트
    • -net=네트워크_이름 : 컨테이너 네트워크에 연결
    • -e 환경변수_이름=값 : 환경변수 설정
    • -d: 백그라운드로 실행
    • -i: 컨테이너에 터머널 연결
    • -t: 특수 키를사용 가능하도록 함
    • -help: 사용방법 안내 메시지

정지

docker stop 컨테이너 이름

삭제

docker rm 컨테이너 이름

ps커맨드 - 목록 확인

# docker container ls
# docker ps (옵션)

docker ps -a # 전체 목록 확인
  • 항목
    • CONTAINER ID : 컨테이너 식별자. 무작위 문자열 할당
    • IMAGE : 컨테이너 만들 때 사용한 이미지 이름
    • COMMAND : 컨테이너 실행 시에 실행하도록 설정 된 프로그램의 이름
    • CREATED : 컨테이너 생성 후 경과된 시간
    • STATUS: 컨테이너 현재 상태. 실행중 'Up' 종료 'Exited'
    • PORTS : 컨테이너에 할당된 포트 번호
    • NAMES : 컨테이너 이름

통신

아파치

  • 웹 서버 기능을 제공하는 소프트웨어
  • 문제 : 컨테이너는 외부와 직접 연결되지 않은 상태 -> 웹 브라우저에서 접근 불가 -> 아파치가 80포트 대기해도 외부에서 접근할 수 없음
  • 해결 : 호스트 포트와 컨테이너 포트를 연결

포트 설정 방법

  • 어떤 컨테이너로 가야할 요청인지 구분할 수 있도록 포트번호 다르게 설정
#-p 호스트_포트_번호:컨테이너_포트_번호
-p 8080:80

docker run --name apa000ex2 -d -p 8080:80 httpd
//웹에서 http://localhost:8080/ 접속 시 It works! 나옴

다양한 유형 컨테이너

리눅스 운영체제

  • ubuntu / centos / debian / fedora / busybox / alpine
  • -d없이 -it옵션만 사용.
  • 인자로는 /bin/bash 등 셸 명령어 지정

웹 서버 / 데이터베이스 서버용

(DB는 기본적으로 루트 패스워드 지정)

이미지 이름컨테이너 내용옵션 및 인자
httpdApache-d 백그라운드 실행, -p로 포트 번호 지정
nginxNginx-d 백그라운드 실행, -p로 포트 번호 지정
mysqlMySQL-d사용. 실행시 -e MYSQL_ROOT_PASSWORD와 같이 루트 패스워드 지정
postgresPostgreSQL-d사용. 실행시 -e POSTGRES_ROOT_PASSWORD와 같이 루트 패스워드 지정
mariadbMariaDB-d사용. 실생시 -e MYSQL_ROOT_PASSWORD와 같이 루트 패스워드 지정

런타임 / 그외 소프트웨어

이미지 이름컨테이너 내용옵션 및 인자
openjdk자바 런타임-d를 사용하지 않고, 인자로 java명령 등을 지정해 도구 형태로 사용
python파이썬 런타임-d를 사용하지 않고, 인자로 python명령등을 지정해 도구 형태로 사용
phpPHP 런타임웹 서버가 포함된 것과 실행 명령만 포함된 것으로 나뉘어 제공
ruby루비 런타임웹 서버가 포함된 것과 실행 명령만 포함된 것으로 나뉘어 제공
perl펄 런타임-d사용하지 않고, 인자로 perl명령 등을 지정해 도구 형태로 사용
gccC/C++컴파일러-d사용하지 않고, 인자로 gcc명령 등을 지정해 도구 형태로 사용
nodeNode.js-d사용하지 않고, 인자고 app명령 등을 지정해 도구 형태로 사용
registry도커 레지스트리-d옵션 백그라운드 실행. -p옵션으로 포트 번호 지정
wordpressWordPress-d옵션 백그라운드 실행. -p옵션으로 포트번호 지정. MySQL, MariaDB필요. -e옵션으로 패스워드 지정
nextcloudNextClud-d옵션 백그라운드 실행. -p옵션 포트번호 지정
redmineRemine-d옵션 백그라운드 실행. -p옵션 포트번호 지정. PostgreSQL, MySQL필요

이미지 삭제

삭제 명령어

# 1개
docker image rm 이미지_이름
# 여러개
docker image rm 이미지_이름 이미지_이름 이미지_이름

목록

# -a옵션 사용 불가 : 컨테이너와 달리 실행중 종료 같은 상태를 가질 수 없음
docker image ls
  • 항목
    • REPOSITORY : 이미지 이름
    • TAG : 버전정보, 이미지를 내려받을 때 따로 지정하지 않으면 alstest(최신버전)를 내려받음
    • IMAGE ID : 이미지 식별자
    • CREATED : 이미지 생성 후 경과된 시간
    • SIZE : 이미지 전체 용량

0개의 댓글