기본 사용법
$ docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

레지스트리 : 도커 이미지를 관리하는 공간 ( 특별한 지정없으면, Docker Hub가 기본값 )
레포지토리 : 레지스트리 내에 도커 이미지가 저장되는 공간 ( 이미지 이름이 사용되기도 함 )
태그 : 이미지 버전 정보 입력 공간 ( 특별한 태그 없을 시, latest 태그를 붙인 이미지를 가져옴 )
명령어 옵션 : 도커 공식문서 참고 ( Docker docs )
// '레지스트리 = 도커허브 / 레포지토리 = whalesay : 태그 = latest' 인 이미지
docker/whalesay:latest
자주쓰는 도커 명령어
최신 이미지 받아오기
docker image pull docker/whalesay:latest
이미지 리스트 출력 및 용량 확인
docker image ls
이미지 삭제
docker/whalesay 이미지 지우기
컨테이너 생성 및 실행
1. 이미지로 컨테이너 생성 및 실행
docker container run --name 컨테이너_이름 docker/whalesay:latest cowsay boo
2. docker container run 명령어로 httpd 실행 (연결할 포트 : 연결될 상대 포트)
docker container run --name 컨테이너_이름 -p 818:80 httpd
컨테이너 리스트 출력
docker container ps -a
컨테이너 삭제
docker container rm 컨테이너_이름
현재 경로의 파일을, 뒷 경로에 복사
docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/
// 예시
//src/main/resource/template
docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/
//src/main/resource/static
docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/
구동한 도커 컨테이너를 이미지로 만듦
docker container commit 컨테이너_이름 my_pacman:1.0
생성된 이미지를 웹 서버로 구동
docker run --name my_web2 -p 900:80 my_pacman:1.0
Dockerfile 만들기 (이미지파일의 설명서)
1. 홈 디렉터리에 Dockerfile을 만들고, 아래의 내용을 넣는다.
nano Dockerfile
FROM httpd:2.4 # 베이스 이미지를 httpd:2.4 로 사용
COPY ./ /usr/local/apache2/htdocs/ # 호스트의 현재 경로에 있는 파일을, 생성할 이미지 /usr/local/apache2/htdocs/ 에 복사합니다.
2. 지정한 경로에 있는 Dockerfile을 찾아서 빌드
docker build --tag my_pacman:2.0 .
3. 생성된 이미지를 이용해 901 포트에 웹 서버 구동 (이름은 my_web3라고 한 상태)
docker run --name my_web3 -p 901:80 my_pacman:2.0
컨테이너 속 txt파일 안의 내용 보기
1. 컨테이너 안에서 bash shell 실행 => 결과
docker exec -it 컨테이너_이름 bash
$ root@538de4e5e997:/usr/local/apache2#
2. 루트 디렉토리로 이동(cd /) => 루트 디렉토리 내 확인(ls) => data폴더로 이동(cd data) => 파일확인(ls)
$ root@538de4e5e997:/usr/local/apache2# cd /
$ root@538de4e5e997:/# ls
$ root@538de4e5e997:/# cd data
$ root@538de4e5e997:/data# ls
3. 텍스트 에디터 설치 (nano 설치)
$ root@538de4e5e997:/data# apt update
$ root@538de4e5e997:/data# apt install nano
4. 에디터 접속을 통한 내용 확인
$ nano quiz2.txt
도커 서버 컨테이너 터미널 접속
docker exec -it server-spring bash
docker-compose사용을 위한 yml파일 생성 및 구동
1. nano로 yml파일 생성
$ nano docker-compose.yml
// 내용
version: '3.8'
services:
nginx:
image: sebcontents/client
restart: 'always'
ports:
- "8080:80"
container_name: client
spring:
image: 0xnsky/server-spring
restart: 'always'
ports:
- "4999:3000"
container_name: server-spring
2. 컨테이너 구동
$ docker-compose up -d
볼륨파일 생성
볼륨파일 : 컨테이너에서 생성 된 데이터의 영구적 보관 및 파일 시스템 공유 목적
* 컨테이너는 휘발성을 가지기 때문에 컨테이너 내부 데이터를 영구보관이 불가능
1. yml 파일 설정
1) M1 칩 외의 PC
version: '3.8'
services:
nginx:
image: sebcontents/client
restart: 'always'
ports:
- "8080:80"
container_name: client
spring:
image: 0xnsky/server-spring
restart: 'always'
ports:
- "4999:3000"
container_name: server-spring
volumes:
- "./volumefolder:/data"
mysql:
image: mysql:latest
restart: 'always'
ports:
- "3307:3306"
container_name: database
environment:
MYSQL_ROOT_PASSWORD: root_계정_비밀번호
MYSQL_DATABASE: 초기_생성_데이터베이스
MYSQL_USER: 유저_이름
MYSQL_PASSWORD: 유저_패스워드
2) M1 칩 사양의 노트북
version: '3.8'
services:
nginx:
image: sebcontents/client
restart: 'always'
ports:
- "8080:80"
container_name: client
spring:
image: 0xnsky/server-spring
restart: 'always'
ports:
- "4999:3000"
container_name: server-spring
volumes:
- "./volumefolder:/data"
mysql:
image: amd64/mysql
restart: 'always'
ports:
- "3307:3306"
container_name: database
environment:
MYSQL_ROOT_PASSWORD: root_계정_비밀번호
MYSQL_DATABASE: 초기_생성_데이터베이스
MYSQL_USER: 유저_이름
MYSQL_PASSWORD: 유저_패스워드
2. 도커 볼륨 생성
$ docker volume create {볼륨이름}
3. 도커 볼륨 리스트 확인
$ docker volume is
4. 도커 볼륨 상세 정보 확인
$ docker volume inspect {볼륨이름}
5. 도커 볼륨 마운트
$ docker run --mount source={볼륨이름},destination={컨테이너 경로} {도커이미지}
//예시
$ docker run --it --name=volume01 --mount source=data,destination=/data ubuntu
6. 도커 볼륨 공유
// 샘플 파일 생성 (touch 텍스트이름.txt)
볼륨경로:/data# touch sample01.txt
// 컨테이너 종료 (exit)
볼륨경로:/data# exit
// 동일한 데이터 볼륨으로 새 컨테이너 생성
$ docker run -it --name={새볼륨이름} --mount source=data,destination=/data ubuntu
// 확인
새볼륨경로# ls -al
새볼륨경로# df -h
새볼륨경로# ls -al /data
7. 도커 볼륨 삭제
$ docker volume rm {볼륨이름}
// 전체 삭제
$ docker volume prune
도커 컴포즈(Docker-Compose) 주요 서브 명령어
서브명령 | 설명 |
up | 컨테이너 생성/시작 |
ps | 컨테이너 목록 표시 |
logs | 컨테이너 로그 출력 |
run | 컨테이너 실행 |
start | 컨테이너 시작 |
stop | 컨테이너 정지 |
restart | 컨테이너 재시작 |
pause | 컨테이너 일시 정지 |
unpause | 컨테이너 재개 |
port | 공개 포트 표시 |
config | 구성 확인 |
kill | 실행 중인 컨테이너 강제 정지 |
rm | 컨테이너 삭제 |
down | 리소스 삭제 |
'Codestates [Back-end] > 데일리 로그 [TIL]' 카테고리의 다른 글
22.10.06 Cloud - 배포 자동화 [Step 2. AWS Pipeline] (0) | 2022.10.06 |
---|---|
22.10.06 Cloud - 배포 자동화 [Step 1. 개념] (0) | 2022.10.06 |
22.10.05 Docker - 개념 (0) | 2022.10.05 |
22.10.04 Step 3. 데이터베이스 연결 [ RDS ] (0) | 2022.10.01 |
22.10.02 Step 2. 클라이언트 배포 [ S3 ] (0) | 2022.10.01 |