도커 컨테이너
도커 이미지를 실행할 수 있는 인스턴스이다. 개별 애플리케이션의 실행에 필요한 실행환경을 독립적으로 운용한다.
1. 컨테이너 생성
docker run [옵션] [저장소 이름/]<이미지 이름>[:버전]
ex) docker run -d --name myweb -p 80:8080 tomcat:8.5.72-jdk8
- 다운로드 받은 이미지가 없는 경우 자동으로 다운로드 받아 생성된다.
- 이미지 다운로드(pull)과 컨테이너 생성(create), 실행(start), 접속(attach)까지 한번에 수행된다.
- [옵션]
옵션 | 설명 |
-d | 백그라운드에서 컨테이너를 실행한다. |
-i -t | 컨테이너 내부로 진입하여 컨테이너와 상호 입출력한다. |
--name <이름> | 컨테이너에 이름을 지정한다.(지정하지 않으면 16진수 임의값으로 이름이 생성된다.) |
-p <호스트 포트>:<컨테이너 포트> | 외부에서 컨테이너 내부로 접근할 수 있게 호스트 포트와 컨테이너 내부 포트를 연결한다. |
-e <환경변수>=<값> | 환경변수를 설정한다. |
--link | 다른 컨테이너에 링크를 추가한다. |
2. 컨테이너 확인
docker ps [옵션]
ex) docker ps -a
- CONTAINER ID: 컨테이너에 자동 할당되는 고유 ID 중 일부를 출력
- IMAGE: 컨테이너 생성 시 사용된 이미지
- COMMAND: 컨테이너 시작 시 자동으로 실행될 명령어이며, 대부분 이미지에 미리 내장되어 있음
컨테이너 생성 시 변경이 가능
- CREATED: 컨테이너 생성 후 흐른 시간
- STATUS: 컨테이너 상태
- PORTS: 컨테이너에 개방된 포트, 호스트와 연결된 포트를 출력
- NAMES: 컨테이너 생성 시 지정한 이름(--name 옥션)
3. 컨테이너 상세 내용 조회
docker inspect <컨테이너 이름 or ID>
ex) docker inspect myweb
4. 컨테이너 실행 및 종료
docker start/stop/restart <컨테이너 이름 or ID>
ex) docker start myweb
docker stop myweb
docker restart myweb
5. 컨테이너로 파일 복사
경로가 컨테이너 내부일 경우 <컨테이너명:경로>로 지정한다.
docker cp [옵션] <원본파일경로> <복사할 경로>
ex) docker cp d:\test.txt myweb:/root
6. 컨테이너 명령어 실행
쉘(shell)을 실행하면 컨테이너에 접근할 수 있다. 쉘에 접근한 후 다양한 명령어를 사용할 수 있고, 종료 시 exit을 한다.
docker exec [옵션] <컨테이너 이름 or ID> <명령어>
ex) docker exec -it myweb /bin/bash
7. 컨테이너 삭제
docker rm [옵션] <컨테이너 이름 or ID> [컨테이너 이름 or ID ...]
ex) docker rm -fm myweb
war 파일 배포하기
1. Oracle DB 컨테이너 설치
(1) Oracle 이미지 검색
- 목록에서 이미지를 클릭한 후 상세설명을 확인한다.
(2) Oracle 컨테이너 설치
docker run -d --name mydb -p 40000:1521 -e TZ=Asia/Seoul oracleinanutshell/oracle-xe-11g
(3) Oracle 컨테이너로 쿼리파일 복사
- 일괄처리를 위해 미리 작성한 쿼리파일을 컨테이너로 복사한다.
docker cp d:\dockerweb\mydb.sql mydb:/root
2. DB 사용자 계정 생성 및 테이블 생성
Oracle 컨테이너에 접속한 후 테이블을 생성한다.
- 미리 복사한 sql 파일을 일괄 처리한다.
docker exec -it mydb /bin/bash
ls /root
sqlplus sys/oracle as sysdba @/root/mydb.sql
- 생성된 테이블을 확인한다.
SELECT * FROM 테이블명;
3. Tomcat Server 컨테이너 설치
docker run -d --name myweb -p 80:8080 -e TZ=Asia/Seoul --link mydb:db tomcat:8.5.72-jdk8
- --link <컨테이너 이름:별칭>: myweb 컨테이너에서 미리 생성한 mydb 컨테이너를 db라는 이름으로 불러서 사용하겠다는 설정이다.
4. War 파일 Tomcat에 배포
(1) tomcat 컨테이너로 war 파일 복사
docker cp d:\ROOT.war myweb:/usr/local/tomcat/webapps
docker restart myweb
(2) 호스트 PC IP주소로 웹 접속(http://IP주소/main)