0. 컨테이너와 이미지 모두 삭제하기
개발 중이나 실습 후에 남은 컨테이너와 이미지를 깔끔하게 정리하고 싶을 때, 아래 명령어를 사용하면 모든 컨테이너와 이미지를 손쉽게 삭제할 수 있다.
- 모든 컨테이너 중지: `docker stop $(docker ps -a -q)`
- 모든 컨테이너 삭제: `docker rm $(docker ps -a -q)`
- 모든 이미지 삭제: `docker rmi $(docker images -q)`
1. Apache Web Server 컨테이너 생성
Docker로 Apache(httpd) 웹 서버를 실행하려면 간단한 명령어 하나로 가능하다. 이 과정에서 Apache 서버가 80번 포트를 사용하기 때문에, 로컬에서 포트 8001로 접근할 수 있도록 설정해준다.
기본 정보
- 이미지 이름: httpd
- 포트번호: 80
컨테이너 생성 및 실행:
docker run --name apachewebserver -d -p 8001:80 httpd
확인 방법:
- 컨테이너 구동 상태 확인: `docker ps`
- 브라우저에서 확인: http://localhost:8001
- 명령어로 확인: `curl localhost:8001`

2. Docker 환경변수 설정 (e 옵션)
> 환경 변수를 설정하는 옵션
MySQL과 같은 컨테이너는 실행할 때 환경변수(e 옵션)를 사용하여 초기 설정을 할 수 있다.
예를 들어, MySQL 5.7 이미지를 사용할 때 root 비밀번호나 초기 데이터베이스를 설정하려면 다음과 같은 환경 변수를 사용하면 된다.
MySQL 5.7 버전과 같은 경우는 관리자 비밀번호와 초기 데이터베이스 생성 그리고 유저와 유저 비밀번호 등을 설정할 수 있는 환경변수를 제공한다.
MySQL 5.7 환경변수:
- MYSQL_ROOT_PASSWORD: 관리자 비밀번호
- MYSQL_DATABASE: 생성할 데이터베이스 이름
- MYSQL_USER: 생성할 유저 이름
- MYSQL_PASSWORD: 유저 비밀번호
MySQL 컨테이너 생성:
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=ys1234 -e MYSQL_DATABASE=itstudy mysql:5.7

3. 호스트 컴퓨터와 컨테이너 사이의 파일 복사
컨테이너 내부에서 파일을 수정하거나 설정 파일을 변경할 때, 직접 쉘에 접속해서 수정하는 방법도 있지만, 외부에서 작성한 파일을 복사해서 사용하는 것이 더 편리하다. Docker에서는 `docker cp` 명령어로 호스트와 컨테이너 간 파일을 쉽게 복사할 수 있다.
명령어
docker cp source경로 destination경로
- 컨테이너를 설정할 때 컨테이너이름:파일경로
- 파일 경로를 작성할 때 파일 이름을 생략하면 파일 이름은 동일하게 복사
설정 파일을 수정해서 사용해야 하는 경우, 쉘에 접속해서 직접 수정하려고 하는 경우
⇒ 번거롭기도 하고 vi 와 같은 텍스트 에디터가 존재하지 않는 경우도 있어서 외부에서 만든 후 복사하는 것이 편리
실습: Apache 컨테이너에서 Welcome 페이지 수정
1. 컨테이너에서 호스트로 파일 복사:
docker cp apachewebserver:/usr/local/apache2/htdocs/index.html ./index.html
- httpd 이미지의 컨테이너에서 보이는 welcome 파일의 경로로: `/usr/local/apache2/htdocs/index.html`
2. 호스트에서 수정 후 컨테이너로 다시 복사:
호스트 컴퓨터의 `index.html` 을 수정해서 컨테이너로 복사
docker cp ./index.html apachewebserver:/usr/local/apache2/htdocs/index.html
이 과정을 통해 웹 서버의 메인 화면을 원하는 대로 수정할 수 있다.

4. 컨테이너 모니터링 도구
컨테이너를 운영하다 보면 CPU, 메모리 사용량, 네트워크 트래픽 등의 모니터링 하면서 특이사항이 있을 때 대응해야 한다.
하지만, 컨테이너 환경에서는 기존의 모니터링 도구를 사용하는 것이 어렵다.
이를 위해 Google이 제공하는 cAdvisor라는 도구를 사용하면, 각 컨테이너의 리소스 사용량을 쉽게 확인할 수 있다.
설치 방법
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor gcr.io/cadvisor/cadvisor:v0.39.3
모니터링 방법
브라우저에서 http://localhost:8080 으로 접속하면 각 컨테이너의 리소스 사용량을 실시간으로 확인할 수 있다.

모니터링
브라우저에서 http://localhost:8080 으로 접속하면 각 컨테이너의 리소스 사용량을 실시간으로 확인할 수 있다.

이 글에서는 Docker의 기본적인 명령어 사용법부터 컨테이너 모니터링 도구인 cAdvisor까지 알아보았다. 실습을 통해 Docker의 기초적인 활용법을 익히고, 필요한 부분을 수정하거나 추가 설정하는 방법도 확인할 수 있었다.