일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ai
- Analysis
- data
- 함수
- db
- 인공지능
- mysql
- Server
- Github
- Deep
- LIST
- Pattern
- git
- Linux
- mariaDB
- Python
- error
- framework
- Security
- Spring
- Web
- 자바
- centos
- interface
- SSH
- java
- DeepLearning
- javascript
- learning
- Numpy
- Today
- Total
PostIT
[Docker] Docker 설치 및 기본 실행하기 - 1 본문
# [Do4cker] Docker 설치 및 기본 실행하기 - 1
- OS : OSX Sierra (10.12.3)
- Docker : Docker version 17.06.0-ce, build 02c1d87
## 1. Docker에 대해서
VM .vs. Docker
VM : Linux 위에 가상화 환경을 처리한 Hypervisor가 뜨고, 그 위에 다시 Linux OS가 올라갑니다.
Docker : Linux 위에 Docker Engine이 있고 그 위에 OS 없이 바로 파일이 올라갑니다. ( 속도 빠름 )
VM에서의 가상머신은 항상 Guest OS가 올라가야 합니다. 하지만 Docker는 해당 OS에 '격리'를 통해 새로운 가상환경이 아닌 해당 OS의 격리를 통해 Guest OS를 설치하지 않아도 되는 이점을 챙겨갈 수 있습니다.
컨테이너를 통해 가상공간을 만들어 실행파일을 호스트에서 직접 실행합니다.
Docker Image
Docker Image는 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일 된 실행 파일을 묶은 형태입니다. (Linux(Host OS)위에 뜰 Linux File들의 집합입니다.)
해당 Docker 이미지는 수정이 불가능 한 Read Only 상태이다.
Docker 이미지를 이용하면, 똑같은 환경의 여러 Linux를 띄울 수 있다.
Github처럼 DockerHub를 사용해 해당 Image를 클라우드 중앙 저장소에 저장/관리 할 수 있습니다.
Docker Image는 Image를 처리할 때, 바뀐 부분만 Image로 재생성하며, Container로 실행할 때, 기존 것과 바뀐 것을 합처서 실행
Docker Container
- Docker Image를 실행시킨 상태입니다.(Host OS:Docker Engine) - (Image는 실행파일, Container는 프로세스 쉽게)
- 실제 동작중인 Docker 컨테이너에 접속하여 파일을 추가하거나, 삭제, 서버 실행 등을 할 수 있습니다.
- Docker 컨테이너에서, Apache 서버를 띄우게 되면, 그 프로세스는 실제로는 Host OS의 자원을 사용하게 됩니다.
- Docker 컨테이너가 종료되면, Docker 컨테이너에서 실행되던 모든 프로세스가 죽습니다.
- Docker 컨테이너가 종료된다고 해도, 편집된 파일들은 컨테이너에 그대로 유지 된됩니다.
- 종료된 Docker 컨테이너를 살릴 수도 있습니다. 살린 후 접속해 보면, 편집된 파일들이 유지 됨을 알 수 있습니다.
- 다만, 이전에 실행 되었던 모든 프로세스가 죽었으므로 다시 살려줘야 합니다.
- 컨테이너가 다시 살아 날 때 기본적으로 수행해야 하는 명령어를 설정해 줄 수 있습니다.
- 이를 이용해 컨테이너가 뜨자마자 서버를 실행하는 등의 작업을 할 수 있습니다.
## 2. 설치 순서
1. Docker Install
https://docs.docker.com/docker-for-mac/install/ : Official Docker Home
https://docs.docker.com/toolbox/overview/ : Toolbox
2. Docker Run(Check version)
다음 명령어를 실행 했을 때, 아래와 같이 버전이 나온다면 설치가 정확히 완료된 것입니다.
$ docker --version Docker version 17.03.0-ce, build 60ccb22 $ docker-compose --version docker-compose version 1.11.2, build dfed245 $ docker-machine --version docker-machine version 0.10.0, build 76ed2a6
3. Docker hello-world Image Test Run
$ docker run hello-world
To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces
the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
1. Docker 클라이언트가 Docker 데몬에 접속합니다.
2. Docker 데몬은 Docker Hub에서 "hello-world"이미지를 가져옵니다.
3. Docker 데몬은 해당 현재 읽고있는 결과물(output)를 생성하는 실행할 수 있는 파일에 이미지로부터 새 컨테이너를 작성합니다.
4. Docker 데몬이 해당 결과물(output)을 Docker 클라이언트로 스트리밍하여 Docker 클라이언트로 보냅니다.
4. Docker Test Run
다음 명령어를 통해 nginx를 가져오고 실행해보겠습니다.
docker ps -a 로 현재 Container들을 확인할 수 있습니다.
localhost를 클릭하여 확인해보세요.
$ docker run hello-world run -d -p 80:80 --name webserver nginx
$ docker ps -a
## 3. Github To Study
제 깃허브 주소입니다.
참고자료 보면서 정리하고 있어요.
https://github.com/Seolhun/docker-test
## 4. 참조
https://aws.amazon.com/ko/docker/