도커 컨테이너는 기본적으로 격리된 환경에서 실행되는 프로세스이며, 각 컨테이너는 고유한 파일 시스템을 사용하여 호스트와 다른 컨테이너로부터 분리됩니다. 이 문서에서는 도커 컨테이너의 생성, 시작, 중지, 삭제 등 다양한 명령어를 다루고, 실제 예제를 통해 컨테이너의 활용 방법을 설명합니다.
도커 컨테이너의 기본 조작
1. 컨테이너 생성 (create)
도커 컨테이너를 생성하려면 `docker create` 명령어를 사용할 수 있습니다. `-i` 옵션은 표준 입력을 열어주고, `-t` 옵션은 터미널을 할당합니다.
[root@server ~]# docker create -it centos:8
b7f4c9d2e6a8c5f9a7d0e8f9c8d2e6a8c5f9a7d0e8f9c8d2e6a8c5f9a7d0e8f9
[root@server ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7f4c9d2e6a8 centos:8 "/bin/bash" 10 seconds ago Created amazing_hamilton
2. 컨테이너 시작 (start)
생성된 컨테이너를 시작하려면 `docker start` 명령어를 사용합니다.
[root@server ~]# docker start b7f4c9d2e6a8
b7f4c9d2e6a8
[root@server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7f4c9d2e6a8 centos:8 "/bin/bash" 1 minute ago Up 2 seconds amazing_hamilton
3. 컨테이너 생성 및 실행 (run)
컨테이너를 한 번에 생성하고 실행하려면 `docker run` 명령어를 사용합니다.
[root@server ~]# docker run -it centos:8
[root@f4c9d2e6a8b7 /]#
4. 컨테이너 중지 (stop)
실행 중인 컨테이너를 중지하려면 `docker stop` 명령어를 사용합니다.
[root@server ~]# docker stop f4c9d2e6a8b7
f4c9d2e6a8b7
[root@server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5. 컨테이너 삭제 (rm)
중지된 컨테이너를 삭제하려면 `docker rm` 명령어를 사용합니다. 실행 중인 컨테이너를 강제로 삭제하려면 `-f` 옵션을 추가합니다.
[root@server ~]# docker rm mycontainer
mycontainer
[root@server ~]# docker rm -f runningcontainer
runningcontainer
도커 컨테이너의 고급 활용
1. 포트 매핑
웹 서버 컨테이너를 실행하면서 호스트의 임의 포트 또는 특정 포트로 매핑할 수 있습니다. `-P` 옵션은 임의 포트로, `-p` 옵션은 특정 포트로 매핑합니다.
[root@server ~]# docker run -itd --name webserver -P nginx:latest
[root@server ~]# docker run -itd --name webserver2 -p 8080:80 nginx:latest
2. 디렉토리 매핑
호스트의 디렉토리를 컨테이너 내부 디렉토리와 매핑할 수 있습니다. 이를 통해 웹 서버의 HTML 파일이나 로그 파일 등을 호스트에 저장할 수 있습니다.
[root@server ~]# mkdir /webdata
[root@server ~]# docker run -itd --name webserver3 -p 8081:80 -v /webdata:/usr/share/nginx/html nginx:latest
3. 로그 확인
컨테이너의 로그를 확인하려면 `docker logs` 명령어를 사용합니다.
[root@server ~]# docker logs webserver3
4. 상세 정보 조회
컨테이너의 상세 정보를 확인하려면 `docker inspect` 명령어를 사용합니다.
[root@server ~]# docker inspect webserver3
5. Nginx 컨테이너 배포 사례
Nginx 컨테이너를 배포하여 호스트의 80번 포트를 통해 접근할 수 있도록 설정하는 예제입니다.- /root/nginx/www -> /usr/share/nginx/html
- /root/nginx/logs -> /var/log/nginx
- /root/nginx/conf/nginx.conf -> /etc/nginx/nginx.conf
[root@server ~]# mkdir -p /root/nginx/{www,logs,conf}
[root@server ~]# docker cp nginx_container:/etc/nginx/nginx.conf /root/nginx/conf/
[root@server ~]# echo "Welcome to Docker!" > /root/nginx/www/index.html
[root@server ~]# docker run -itd --name nginx_web -p 80:80 -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/logs:/var/log/nginx -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx:latest