Linux 도커(3)
Linux 도커(3)
도커
도커 컨테이너 관리
- 도커 컨테이너 생성
- docker create nginx
- docker create –name web -p 80:80 nginx
- 도커 컨테이너 생성 및 시작
- man docker run
- docker run -d –name web 80:80 web
- OPTIONS
- -it, –rm: 임시 생성(빠져나가면 자동 삭제), -d: 백그라운드
- OPTIONS
컨테이너 안의 프로세스는 반드시 foreground로 실행되어야 한다.
컨테이너는 일반적으로 백그라운드로 실행한다.
- 도커 컨테이너 시작/중지/재기동
- docker start 컨테이너_이름
- docker stop 컨테이너_이름
- docker restart 컨테이너_이름
- 도커 컨테이너 연결/해제
- docker attach CONTAINER
- “<CTRL + P + Q>
- 도커 컨테이너 프로세스 실행하기
- docker exec -it CONTAINER /bin/bash
- exit
- 컨테이너 프로세스 확인
- docker top CONTAINER > ps -ef
- docker top CONTAINER aux > ps aux
[참고] docker attack vs docker exec
| docker attach | docker exec |
|---|---|
| docker attach myos | docker attach -it myos /bin/bash |
| 그냥 들어가기 | 쉘이 있어야 들어가기 |
[참고] 포트번호 확인
Linux: netstat -antup grep 80 Windows: netstat -ano findstr 80
[참고] 대표 DB 포트 번호
| 서비스 이름 | 포트 번호 |
|---|---|
| MySQL/MariaDB | 3306 |
- 도커 컨테이너 이름 변경
- docker rename OLD NEW
- docker tag OLD NEW
- 도커 컨테이너 파일 전송
- (HostOS -> Container) # docker cp index.html myweb:/usr/share/nginx/html/index.html
- (Container -> HostOS) # docker cp myweb:/etc/nginx/nginx.conf /tmp/nginx.conf
- 도커 컨테이너 로그 확인
- docker logs CONTAINER
- /var/lib/doker/container/<CONTAINER’s ID>-json.log
- docker logs CONTAINER
도커 볼륨 관리
- 도커 볼륨
- 도커 볼륨이란 영구 볼륨 사용
- 도커 볼륨 종류
- volume
- bind mount
- 도커 볼륨 관리
- 도커 볼륨 생성
- docker volume create myvol
도커 볼륨 사용
- volume 방식
- docker run -d –name myweb -p 80:80 -v /usr/share/nginx/html nginx
- docker run -d –name myweb -p 80:80 -v vol:/usr/share/nginx/html nginx
- 생성이 안되어있는 볼륨의 경우 생성을 따로 해줌
- docker run -d –name myweb -p 80:80 -v myvol:/usr/share/nginx/html nginx
- 생성이 되어있는 볼륨 사용
- bind mount 방식
- docker run -d –name myweb -p 80:80 -v /www:/usr/share/nginx/html nginx
- docker run -d –name myweb -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
- volume 방식
- 도커 볼륨 확인
- docker volume ls
- docker volume inspect myvol
- 도커 볼륨 삭제
- docker volume rm myvol
- 도커 볼륨 생성
일반 환경 vs 컨테이너 mysql |온프레미스 mysql|컨테이너 mysql| |—————|————-| |yum -y install mysql-server mysql
systemctl enable –now mysql
mysql_secure_installlation
mysql -u root -p| docker run -d –name db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.7|
- 도커 이미지 & 도커 컨테이너 레이어 분석
- 도커 이미지 & 도커 이미지 레이어(Layer)
- var/lib/docker/overlay2
- docker image inspect ngix
- lowerdir > image layer
- upperdir > container layer
- mergedir > container mount
- workdir > 작업 폴더
도커 컨테이너 도커 컨테이너 레이어
도커 네트워크
- 도커 네트워크
- bridge
- host
- none
- user-defined network (mynet)
- 드라이버
bridge ⇒ docker0 (== VMnet 8)
host → (== VMent0)
null
bridge ⇒ br-# (==VMent)
도커 네트워크 관리
도커 네트워크 생성
1 2
# docker network create mynet # docker network create -d bridge mynet
도커 네트워크 사용
1 2 3 4 5 6 7 8
# docker run -d --name web -p 80:80 --network mynet nginx # docker run -d --name web -p 80:80 \ --network mynet \ --hostname www.test.com \ --ip 172.18.0.10 \ --dns 8.8.8.8 \ --add-host www.example.com:172.18.0.20 \ nginx
도커 네트워크 확인
1 2
# docker network ls # docker network inspect mynet
도커 네트워크 삭제
1 2
# docker network rm mynet # docker network rm $(docker network ls -q)
- 새로운 컨테이너 서비스를 기동하는 경우, 새로운 네트워크를 생성하고 연결해서 서비스 해야한다.
- 새로운 컨테이너 서비스를 기동하는 경우, bridge 네트워크를 사용하는 경우에는 “–link 이름:별칭” 옵션을 고려한다.
도커 이미지 생성
- 도커 이미지 생성
- docker CMD를 사용하여 도커 이미지 생성
- DockerFile를 사용하여 도커 이미지 생성
- 도커 이미지 생성 - 명령어 생성(commit 방식)
- docker commit CMD
- 도커 컨테이너 (꺼져있는 말든 상관없음)-> 도커 이미지
- docker commit CONTAINER IMAGE
- docker commit -a ‘AUTHOR’ -m ‘Message’ mycontainer myimage:1.0
- 도커 이미지 생성 과정 - 명령어 사용
- 베이스 이미지 다운로드 (ex. ubuntu, centos, 등)
- docker pull ubuntu:18.04
- 컨테이너 기동 및 접속
- docker run -it –name myweb ubuntu:18.04
- 선수 패키지 설치 및 소스 코드 빌드 작업
- apt-get update (new ver: apt update)
- apt-get install -y default-jdk git (centos의 경우, gitcore로 입력)
- 소스코드 받아오기
- 빌드 디렉토리로 이동
- ./filename build (빌드)
- startup.sh 스크립트 생성
- vi /startup.sh
1 2
#!/bin/bash java -jar /home/docker-swarm-lab/swarm-login-service/build/libs/login-service.jar
- chmod 755 /startup.sh -exit
- 컨테이너를 이미지로 생성
- docker commit -a ‘bsc’ -m ‘myimage’ myweb myweb-image
- docker run -d –name myweb -p 8080:8080 myweb-image /startup.sh
- 베이스 이미지 다운로드 (ex. ubuntu, centos, 등)
- docker commit CMD
- Docker export/import
- 용도 : 컨테이너 구조 파악하는 용도로 사용하면 좋다.
- Docker Export / Docker Import
- docker export mycontainer -o FS.tar
docker import FS.tar myimage:tag
docker export mycontainer tar xf - -C extractdir cat source.tar docker import - myimage:tag
- 용도 : 컨테이너 구조 파악하는 용도로 사용하면 좋다.
- Docker Save/Load
- 용도: 이미지 백업하고 복구하는 용도로 사용하면 좋다
- docker save/load
- 용도: 이미지 백업하고 복구하는 용도로 사용하면 좋다
This post is licensed under CC BY 4.0 by the author.