Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- JPA
- kotlin
- Java
- 생성
- 프로그래머스
- Git
- 오라클
- Spring
- aws
- 코틀린
- jquery
- 에러
- 방법
- JavaScript
- GitHub
- db
- 자바
- 알고리즘
- oracle
- IntelliJ
- Vue
- 쿼리
- error
- 시큐리티
- 넥사크로
- Eclipse
- mybatis
- 함수
- Security
- 스프링
Archives
- Today
- Total
송민준의 개발노트
도커 기본 명령어 본문
기본구조
docker run [OPTIONS] IMAGE:[:TAG|@DIGEST] [COMMAND][ARG...]
-d : detached mode(백그라운드 모드)
-p : 호스트와 컨테이너의포트를 연결(포워딩)
-v : 호스트와 컨테이너의 디렉토리를 연결(마운트)
-e : 컨테이너 내에서 사용할 환경변수 설정
--name : 컨테이너 이름 설정
--rm : 프로세스 종료시 컨테이너 자동 제거
-lt : -l와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
--link : 컨테이너 연결
--network : 네트워크 사용
- 도커 실행
// 생명 주기 : 생성 -> 시작 -> 실행
docker run 이름
- 도커 이미지 내부 파일 구조
docker run 이름 ls
- 도커 컨테이너 나열
docker ps
- 도커 컨테이너 원하는 항목만
docker ps --format 'table{{.Names}} \t table {{.Image}} \t table{{.Command}}'
- 모든 컨테이너 나열
docker ps -a
- 이미지 생성
// 생명 주기 : 생성 -> 시작
docker create 이름
- 이미지 시작
// 생명 주기 : 시작 -> 실행
docker start 이름
- 중지
// 2가지 방법
// stop은 그동안 하던 작업을 완료하고 컨테이너 중지
docker stop
// kill은 안기다리고 바로 중지
docker kill
- 도커 컨테이너 삭제
docker rm 컨테이너아이디
- 도커 컨테이너 전체 삭제
docker rm -f $(docker ps -a -q)
- 도커 이미지 삭제
docker rmi 이미지아이디
- 도커 컨테이너, 이미지, 네트워크 전체 삭제(실행중인 컨테이너에는 영향 X)
docker system prune
- 실행 중인 컨테이너에 명령어를 전달
( run 은 새로 컨테이너를 만드는 것이고 exec은 이미 실행중인 컨테이너에 명렁어 전달)
docker exec 컨테이너아이디 명령어
- 상호작용을 위한 명렁어 전달
// i - interactive , t - terminal
// it가 없다면 실행만하고 나와버림
docker exec -it 컨테이너아이디 명령어
// 지속적으로 명령어를 작성하고 싶다면...
docker exec -it 컨테이너아이디 sh
sh 를 종료하고 싶다면 control + D
- 도커 이미지 만들기
docker build ./
- 도커 이미지 만들 때 이름을 주는 것
docker build -t 나의도커아이디/저장소or프로젝트이름:버전 ./
ex)
docker build -t dkaskgkdua/config-service:1.0 .
- 도커 이미지 업로드
docker push 도커아이디/프로젝트이름:버전
ex) docker push dkaskgkdua/user-service:1.0
- 도커 네트워크
* bridge 네트워크는 하나의 호스트 컴퓨터 내에서 여러 컨테이너들이 서로 소통할 수 있도록 해준다.
* host 네트워크는 컨테이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너 돌리기 위해서 사용된다.
* overlay 네트워크는 여러 호스트에 분산되어 돌아가는 컨테이너들 간에 네트워킹을 위해서 사용된다.
# 네트워크 리스트
docker network ls
# 네트워크 생성
docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 com-network
# 네트워크 상세 정보
docker network inspect com-network
* 네트워크 연결 예제(rabbitmq)
docker run --name rabbitmq --network com-network --hostname=30e9638b016a --mac-address=02:42:ac:11:00:02 --env=PATH=/opt/rabbitmq/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=RABBITMQ_DATA_DIR=/var/lib/rabbitmq --env=RABBITMQ_VERSION=3.11.10 --env=RABBITMQ_PGP_KEY_ID=0x0A9AF2115F4687BD29803A206B73A36E6026DFCA --env=RABBITMQ_HOME=/opt/rabbitmq --env=HOME=/var/lib/rabbitmq --env=LANG=C.UTF-8 --env=LANGUAGE=C.UTF-8 --env=LC_ALL=C.UTF-8 --volume=/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -p 15671:15671 -p 5671:5671 -p 4369:4369 --label='org.opencontainers.image.ref.name=ubuntu' --label='org.opencontainers.image.version=20.04' --runtime=runc -d rabbitmq:3.11-management
Docker File
도커 이미지를 만들기 위한 설정 파일이다. 컨테이너가 실행해야 할 것에 대한 설정들이 정의되어 있다.
파일 만들기 순서(예시)
1. 베이스 이미지 명시(파일 스냅샷)
- <이미지 이름>:<태그> 형식으로 작성
- 태그를 안 붙이면 자동적으로 가장 최신것 다운
FROM baseImage
2. 추가적으로 필요한 파일을 다운 받기 위해 필요한 명령어를 명시함.(파일 스냅샷)
- 도커이미지가 생성되기 전에 수행할 쉘 명령어
RUN command
3. 컨테이너 시작시 실행될 명령어를 명시해줌(시작시 실행될 명령어)
- 해당 명령어는 DockerFile내 1회만 사용 가능
CMD [ "executable" ]
베이스 이미지란 무엇인가?
- 도커 이미지는 여러개의 레이어로 되어 있다. 그 중 베이스 이미지는 이 이미지의 기반이 되는 부분이다.(OS라고 생각하면 됨)
레이어는 중간 단계의 이미지라고 생각하면 된다.
- 도커 로그 확인
docker logs 컨테이너ID|컨테이너명
docker compose
도커파일을 만들기 위한 일련의 스크립트 모음
docker-compose -f 도커_컴포즈파일.yml up -d
# -f 파일
# up 실행
# down 종료
# -d 데몬모드