일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MySQL
- 2 > /dev/null
- 검색
- 외부키
- querydsl
- subquery
- ubuntu
- AuthenticationEntryPoint
- 적용우선순위
- 테스트메소드
- foreignkey
- 테스트
- appspec.yml
- application.yml
- ㅔㄴ션
- 예약
- 커밋메세지수정
- EC2
- WeNews
- 서브쿼리
- appspec
- 추후정리
- 메세지수정
- 네이티브쿼리
- 메소드명
- 컨테이너실행
- docker명령어
- 포트
- Query
- 참조키
Archives
- Today
- Total
제뉴어리의 모든것
[Udemy] Docker - Java 개발자를 위한 완벽 실습 과정 - 4,5장 본문
Docker 주요 명령어
- 컨테이너 실행
docker container run [이미지명]
만약 내 PC에 해당 이미지가 존재하지 않는다면 Docker 내부에 정의되어 있는 이미지 저장소에서 해당 이미지를 찾아서 내려 받고 해당 이미지의 컨테이너 인스턴스를 생성하여 컨테이너를 실행시킨다.
docker container run -p [공용 Port]:[컨테이너 내부에서 사용되는 Port] [이미지명] : 내 PC의 공용 Port와 컨테이너 내부에서 사용되는 Port를 매핑 시켜 컨테이너 구동시킴.
즉, docker container run -p 80:8080 ubuntu 라면 내 피시의 80포트로 접속하는 요청을 컨테이너 내부의 8080포트를 사용하는 프로그램에게 보내준다고 생각하면 됨
docker container run -d -p [이미지명] : 컨테이너가 작동되면서 발생되는 로그를 콘솔창에 띄우지 않고 컨테이너를 백그라운드에서 데몬처럼 작동시킨다. (detached(분리됨)란 의미의 옵션) - 이미지 내려받기
docker image pull [이미지명] - 컨테이너 리스트 출력
docker container ls : 현재 구동중인 컨테이너 목록 출력 (docker ps와 동일)
docker container ls -a : 이전에 중지된 컨테이너까지 모두 출력 - 컨테이너 중지
docker container stop [컨테이너ID]
컨테이너 ID 여러 글자 중 다른 ID들과 식별 가능한 앞 몇글자만 적어도 된다.
심지어 식별이 가능하다면 한글자만 적어도 된다. - 중지 된 컨테이너 재실행
docker container start [컨테이너ID]
docker container ls -a 또는 docker ps -a로 조회되는 중지 된 컨테이너를 재 구동 시켜준다. - 컨테이너를 대화형 터미널로 연결하여 실행시킴
docker container run -it [이미지명]
docker container run -it ubuntu 라고 한다면 ubuntu가 설치된 컨테이너가 실행되면서 ubuntu 터미널에 연결되어 컨테이너가 종료되지 않는다. 하지만 -it 옵션이 없으면 컨테이너를 실행시켰다가 터미널 연결이 되어 있지 않기 때문에 컨테이너는 바로 종료된다. - 중지 된 컨테이너 완전히 삭제
docker container rm [컨테이너ID] - 중지 된 모든 컨테이너 삭제
docker container prune - 백그라운드에서 작동중인 컨테이너의 로그를 확인
docker container logs [컨테이너ID] - 실행중인 컨테이너에 명령어 날리기
docker container exec
EX :
docker container exec -it [컨테이너ID] bash : 컨테이너에 bash 명령어를 실행해라. (터미널을 열어라)
해당 명령어로 실행중인 컨테이너의 로그를 확인한다던가 하는 행위가 가능하다.
중지된 컨테이너에 대해
docker container ls -a 또는
docker ps -a로 검색되는 중지 된 도커 컨테이너들은 메모리의 일부분을 사용하게 된다.
그러므로 앞으로 사용하지 않을 중지 된 도커 컨테이너들은 삭제해두는 것이 좋다.
컨테이너간 포트 범위를 공유
컨테이들은 전체 포트 범위를 공유하여 사용한다.
예를 들어
docker container run -p 8080:8080 A
라는 명령어로 구동 된 컨테이너는 HOST PC에 8080으로 들어오는 요청들을
컨테이너의 8080포트를 매핑받게 된다.
그런데 이 상태에서
docker container run -p 80:8080 B
라는 명령어를 입력하면
에러가 발생하게 된다.
앞서서는 공용포트 8080 포트를 매핑해주는것이고
이번에는 80포트를 매핑해주는것인데 왜 에러가 발생하는 것일까 싶지만,
docker container는 리눅스 커널을 공유하여 작동되기 때문에 같은 포트 범위를 갖게 된다.
그래서 앞서서 이미 8080 포트를 매핑하여 사용하고 있기 때문에 80포트를 8080포트로 매핑할 수 없는것이다.
실습 과제
- 과제 주제
tomcat 이미지를 컨테이너로 구동시켜서 HOST PC 웹브라우저에서 localhost 를 입력하여 tomcat 기본 페이지를 출력시켜라 - 해결 방법
1. docker container run -d -p 80:8080 tomcat -> 톰캣 이미지를 다운받아 컨테이너로 구동시키는데 HOST PC의 80포트를 컨테이너의 8080포트로 매핑시킴. 그리고 해당 컨테이너를 터미널상에서 백그라운드로 실행시킴.
2. winpty docker container exec -it 0af1b bash : 실행중인 컨테이너(컨테이너 ID : 0af1b) 에 bash라는 명령어를 실행시킴. 즉 컨테이너의 터미널을 열겠다는 의미임. 그리고 맨앞에 winpty 명령어의 경우 윈도우즈 환경에서만 입력이 필요한 명령어.
3. cd /usr/local/tomcat -> :/usr/local/tomcat 경로로 이동 (tomcat의 ROOT 폴더가 /usr/local
4. cp -R webapps.dist/* webapps -> webapps.dist 폴더 안에 있는 모든 내용물들을 webapps로 이동시킴
5. HOST PC에서 localhost 로 입력하면 톰캣 기본 페이지가 잘 출력 됨.
참조 : https://engineering-skcc.github.io/cloud/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-Docker-%EA%B8%B0%EB%B3%B8-(3)/
'Docker' 카테고리의 다른 글
Docker 컨테이너 실행하자마자 종료될 때 확인 법 (1) | 2023.03.22 |
---|---|
[Udemy] Docker - Java 개발자를 위한 완벽 실습 과정 - 1,2,3장 (0) | 2023.02.28 |