Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 도커 #docker #docker-compose.yml #도커컴포즈 #배포 #spring #mysql #docker-compose
- /
- 도커 #Docker #배포 #Spring #MySQL #백엔드배포
Archives
- Today
- Total
개발자 데뷔!
[Docker] Docker 컨테이너 본문
Docker 공식 reference)
https://docs.docker.com/engine/reference/commandline/container/
Docker File -> (build) -> Docker Image -> (run) -> Docker Container
- Container 생성
- Container 실행
- Container 상태 확인
- Container 정지
- Container 재시작
- Container 삭제
컨테이너 명령어 모음
docker container run --name [컨테이너명 지정] -d [기반 이미지명] {컨테이너가 실행되었을 때 실행할 커맨드}
//docker container run --name ping_test -d centos /bin/ping localhost
docker container ps -a
// 특정 컨테이너 로그 확인하는 방법 (백그라운드로 실행 중인)
docker container logs [컨테이너 id or 컨테이너 이름]
// docker container logs -t ping_test
// -t 옵션은 => 시간정보 추가
docker container stop {컨테이너id 또는 컨테이너 명}
//docker container stop ping_test
docker container restart {컨테이너id 또는 컨테이너 명}
// docker container restart ping_test
docker container rm {컨테이너id 또는 컨테이너 명}
// docker container rm ping_test
// 실행 중인 컨테이너는 삭제 불가하므로, 컨테이너 stop 후 삭제 필요
// 단, -f, --force 옵션으로 강제 삭제 가능
// container 전체 삭제 (stop 중인 컨테이너만) (지양)
docker container prune
컨테이너 실행
- run은 다운로드, 실행 바로 되었지만 아래는 따로 하는 방법 ()
docker image pull ubuntu // 이미지 다운로드
docker container create -it --name myubuntu2 ubuntu // 다운로드한 이미지 기반으로 컨테이너 생성
docker container start myubuntu2 // 컨테이너 시작
docker container attach myubuntu2 // 컨테이너 내부 진입
컨테이너와 환경변수
옵션 | 의미 |
-e [환경변수명]=[환경변수값] | 환경변수 전달 옵션 |
코드프레소 실습 예제
아래는 '환경변수에 따라 연결된 port의 페이지 색이 변하게 만든 도커 이미지' 예제 중 하나이다.
그냥 환경변수를 전달해 변화가 있는지 여부만 확인해보면 된다.
실습예제)
- 이미지 hjhwang1/myweb_envtest:1.0 자체가 docker hub에서 다운받을 실습용 예제 이미지
- BGCOLOR =orange 라고 환경변수를 전달 후, 다른포트 5001에 연결 => 페이지 컬러가 바뀜
docekr container run --name test1 -d -p 5000:5000 hjhwang1/myweb_envtest:1.0 // 환경변수 전달 X
docekr container run --name test2 -d -e BGCOLOR=orange -p 5001:5000 hjhwang1/myweb_envtest:1.0 // 환경변수 전달 O
컨테이너와 포트
-p {host port}:{container port} 에서 host port와 container port 연결시켜 외부에 노출함
- 만약 이미 매핑된 host port를 다른 container port 와 다시 연결 지으려한다면,
- 아래와 같은 Binding 에러 발생
컨테이너와 볼륨
- 컨테이너를 삭제하면, 컨테이너 내부에 쌓인 데이터도 함께 삭제되는 단점 (복구 불가)
- Docker 컨테이너의 데이터 => 외부에 저장 & 제공받도록 설계하는 것이 안전 (stateless)
- host의 volume을 공유하여 사용하는 방식이 대표적
예제)
- host 도커 hub : /home/cys8829/mysql_db
- container 디렉토리 : /var/lib/mysql (mysql이 데이터를 저장할 때 사용하는 기본 디렉토리)
옵션 | 의미 |
-v [host 디렉토리]:[container 기본 디렉토리] | 볼륨 연결. - host디렉토리와 container 디렉토리를 마운팅 시켜 완전히 동일한 디렉토리로 동작시킴(동기화 X, 그냥 완전히 같다고 봄) 즉, container 디렉토리에 쌓이는 데이터는 바로 host디렉토리(remote)에도 저장됨 |
// mysql 컨테이너 생성
docker container run -d --name mysql_db\
-e MYSQL_ROOT_PASSWORD=1\
-e MYSQL_DATABASE=test\
-v /home/cys8829/mysql:/var/lib/mysql mysql
// mysql 컨테이너 접속
docker container exec -it {컨테이너명 or ID} bash // exec: 실행중인 컨테이너에 커맨드를 전달&실행
// mysql 내부 명령어
# mysql -u root -p
# show databases; // mysql 명령어
* \는 줄바꿈 표시 (명령어를 이어씀을 뜻함)
- 컨테이너가 삭제되어도 데이터 삭제되지 않음 !
- 다른 볼륨, 이미 사용중이던 container 디렉토리 연결하면, host에 있던 내용이 덮어씌워짐
'DevOps > Docker' 카테고리의 다른 글
Docker 배포1 (도커 이미지 생성 & 도커 허브 업로드) (0) | 2024.04.02 |
---|---|
Docker 기본 명령어 - image/container/network (0) | 2024.04.02 |
[Docker] Docker 이미지 (0) | 2023.11.30 |
[Docker] Redis 컨테이너 실행 (0) | 2023.11.30 |
[Docker] Nginx 웹 서버 컨테이너 실행 (0) | 2023.11.30 |