본문 바로가기
MSA/MSA관련기술

도커 관련 정리 (도커 명령어 포함)

by 문자메일 2022. 10. 5.

Container Image

Container 실행에 필요한 설정 값

- 상태값x, Immutable

 

Image를 가지고 실체화해서 사용할 수 있는 것이 컨테이너이다. -> Container

 

 

이미지를 사용할 수 있는 컨테이너 서버를 도커 호스트라고 한다.

 

 

Dockerfile

Docker Image를 생성하기 위한 스크립트 파일

자체 DSL(Domain-Specific language) 언어 사용 -> 이미지 생성과정 기술

 

예시

FROM openjdk:17-ea-11-jdk-slim
VOLUME /tmp
COPY target/user-service-1.0.jar UserService.jar
ENTRYPOINT ["java","-jar","UserService.jar"]

 

 

FROM 도커허브에 업로드 된 이미지

 

 

docker container ls

docker container ls -a - 종료되어 있는 컨테이너도 확인 가능

docker image ls

docker pull ubuntu:16.04 - 우분투 16.04 설치

docker run ubuntu:16.04

docker container rm 컨테이너ID - 컨테이너 삭제

docker rmi 이미지ID - 이미지 삭제

docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7 - mysql 컨테이너 실행

docker exec -it mysql bash - 실행된 컨테이너에 추가 작업을 하고자 할 때 사용하는 커멘드docker logs 컨테이너이름

 

docker system prune - 모든 중지된 컨테이너, 하나의 컨테이너에서도 사용하지 않는 모든 네트워크, 이전 단계 이미지와 캐시 정보 삭제docker network ls - 현재 생성된 네트워크 정보 확인

docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 ecommerce-network - 도커 네트워크 생성 명령어

docker network inspect ecommerce-network - 생성한 네트워크의 상세 정보 컨테이너를 사용하기 위한 네트워크를 직접 생성해서 사용하면 좋은 점 :   일반적인 컨테이너는 하나의 guest OS, 각각의 guest OS마다 고유한 IP가 할당된다. 컨테이너 간에는 이러한 IP Address로 통신하게 되는데, 같은 네트워크에 포함된 Container 끼리는 IP Address 외에도 Container ID나 이름으로 통신이 가능하게 된다.Container ID나 이름으로 통신이 가능하게되면 장점은 각 서비스별 컨테이너가 재실행 되게 되면 서비스별 IP가 매번 변경될 수 있는데, 그러면 어떤 서버를 접근하는 다른 마이크로 서비스나 서버들에서 매번 해당 서버의 IP주소를 변경해 주어야 한다.

 

 

Docker Network

Bridge network

- docker network create [브릿지 이름]

Host network

- 네트워크를 호스트로 설정하면 호스트의 네트워크 환경을 그대로 사용

None network

- 네트워크를 사용하지 않음

- Io 네트워크만 사용, 외부와 단절

 

User 마이크로서비스 이미지 생성 

$ docker  build  -t  edowon0623/users-service:1.0  .  - 현재 위치의 dockerfile로 이미지를 만들어 달라는 것

$ docker push edowon0623/user-service:1.0

$ docker pull edowon0623/user-service:1.0

 

댓글