Docker
- 'GO'라는 언어로 개발됨
- 불변적, 무상태, 확장 가능
- Linux Base
- VM Ware 등의 가상 머신이랑 비슷하다고 보면 된다.
https://kibua20.tistory.com/135
Docker는 Client와 Server로 구성되어있다.
Docker Terms
- Docker Image and Container : 구성한 Container 구조를 Snapshot처럼 image로 저장하는 것을 의미. Image 하나가 Container하나를 의미.
- Docker Engine : Docker의 운영을 담당
하나의 윈도우에서 여러가지 OS 를 쓰고 싶은 경우 Linux, Mac .. 등등으로 분리한다. 이때 각각의 OS에 Window로 도커를 부팅한 다음 도커 엔진을 놓아서, Docker Compose를 진행한다.
- Docker Container : Image가 설치되어 메모리에 로딩된 인스턴스
- Docker Host OS : Container는 Docker Host OS를 기반으로 Docker가 운영된다.
- Docker Machine : Docker가 떠있는 모든 부분을 통칭해 부름
- Docker Compose : 여러 개의 컨테이너를 하나처럼 쓸 수 있도록 하는 것을 칭함.
- Docker Registry : docker container를 image화해서 등록 혹은 여러 개를 운영할 수 있다. 즉 Docker Image의 저장소, Docker hub
Image Build : Container의 Image를 따는 작업, 다른 PC에서 이 Dockerfile을 이용해 설치할 수 있다. Build된 이미지는 Docker Machine에 저장된다.
Image Ship : 저장된 이미지를 다른 PC에 공유하는 작업
Namespace 기능 : 머신 별로 독립적인 공간을 제공, 서로 충돌하지 않도록 하는 기능
- mnt : 파일 시스템 마운트
- pid : 프로세스
- net : 네트워크
- ipc : 프로세스 간의 통신통
- uts : hostname
- user : 사용자
Docker0 NIC(Network Interface controller)
- Auto eth0 사설 IP
- NAT : 사설 IP에 접근하기 위해 공인 Ip주소를 부여하고, 사설 PC와 연결하는 작업 (하나의 IP에 여러개의 port가 주어지는데, 이 Port도 공유된다. )
Docker
docker system df :
docker image ls : 실행 중인 웹 서버를 나타냄
docker container run --name webserver -d -p 80:80 nginx
: webserver라는 이름으로 -d (백그라운드로 돌린다.) -p (포트)는 80으로 지정하여 nginx(이미지)를 실행시킨다.
다른 포트로 실행시키고 싶으면 (포트번호):80 이렇게 하면 됨
docker container run -it --name "test" centos /bin/cal
: -it(화면 상에 입력을 받기 위한 옵션), 대화형으로 서버를 실행한다.
docker detach(Ctrl + P, Q), attach
: docker container에 접근하거나 잠시 나가는 명령어
docker stop, start
: docker container 서버 자체를 시작, 끝내는 명령어
exit
: attach 중인 상태에서, 해당 명령어를 작성하면 서버가 stop되고 detach 된다.
container 실행하기
centos로 만든 서버(name : cosh)가 COMMAND가 /bin/cal로 되어있었는데, docker start cosh 로 서버를 실행하니 실행되지 않는 문제가 생겼다.
docker run -i -t centos /bin/bash 이렇게 컨테이너를 실행해주니, Random한 이름과 함께 Docker 컨테이너가 실행되는 것을 볼 수 있었다. 근데 기존의 /bin/cal로 지정되어있는 컨테이너가 실행되는 것이 아니라 새로운 Container가 생성되는 것.. 아무튼 이렇게 해서 centos bash를 실행할 수 있다.
실행 중인 container의 bash로 들어가기 위해서,
docker exec -it <container-name> bash 이렇게 작성해야 한다.
file copy & share : 서버 간에 데이터/파일을 공유하는 기능
docker run -v <localpath>:<container-path>
for문을 사용해 여러개의 서버를 관리하는 방법
for i in `docker ps -q`; do echo $i; done
orcle, mysql 사용하기
1) image를 pull 받기
: docker pull oraclelinux, docekr pull mysql:5.7
2) oraclelinux의 이미지를 oracle이라는 이름으로 생성, mysql 인스턴스 생성
docker run -d -p --name oracle 8080:8080 -p 1521:1521 oraclelinux:7.9
docker run -d -p --name mysql 3306:3306 -e MYSQL_ROOT_PASSWORD=<password> --name mysql5 mysql:5.7
아래 mysql 을 실행하는 과정에서 3306 포트와 관련한 에러가 발생하였다.
이미 이 윈도우 서버에서 3306 포트를 사용하고 있기 때문에 오류가 발생하는 것 같다.
접속 시 기존 cmd와 비슷하게 mysql -u root -p를 치고 비밀번호를 입력하면 접속이 된다.
'Server > Docker' 카테고리의 다른 글
[ICE-LIFE] Docker MySQL 및 PHP 컨테이너 설치 및 연동 (0) | 2023.01.03 |
---|---|
[ICE-LIFE] Docker web server 설치 + 데스크탑 Ubuntu PC에 Jupyter Notebook 설치하기 (0) | 2022.11.02 |
Docker Container 시작하기, Docker Voulme 사용 (0) | 2022.07.14 |
Docker-compose에 Spring Boot, MariaDB 올리기 (0) | 2021.12.28 |
Docker SpringBoot, MariaDB 이미지 빌드하기 (0) | 2021.12.25 |