Docker-빠른 가이드
Docker는 컨테이너 관리 서비스입니다. Docker의 키워드는develop, ship 과 run어딘가에. Docker의 전체 아이디어는 개발자가 애플리케이션을 쉽게 개발하고 컨테이너로 전달한 다음 어디서나 배포 할 수 있도록하는 것입니다.
Docker의 초기 릴리스는 2013 년 3 월에 있었고 그 이후로 특히 Agile 기반 프로젝트에서 현대 세계 개발의 유행어가되었습니다.
Docker의 기능
Docker는 컨테이너를 통해 운영 체제의 작은 설치 공간을 제공하여 개발 규모를 줄일 수 있습니다.
컨테이너를 사용하면 개발, QA 및 운영과 같은 다양한 단위의 팀이 애플리케이션간에 원활하게 작업 할 수 있습니다.
모든 물리적 및 가상 머신, 심지어 클라우드에서도 Docker 컨테이너를 어디에나 배포 할 수 있습니다.
Docker 컨테이너는 매우 가볍기 때문에 매우 쉽게 확장 할 수 있습니다.
Docker의 구성 요소
Docker에는 다음 구성 요소가 있습니다.
Docker for Mac − Mac OS에서 Docker 컨테이너를 실행할 수 있습니다.
Docker for Linux − Linux OS에서 Docker 컨테이너를 실행할 수 있습니다.
Docker for Windows − Windows OS에서 Docker 컨테이너를 실행할 수 있습니다.
Docker Engine − Docker 이미지를 빌드하고 Docker 컨테이너를 만드는 데 사용됩니다.
Docker Hub − 다양한 Docker 이미지를 호스팅하는 데 사용되는 레지스트리입니다.
Docker Compose − 여러 Docker 컨테이너를 사용하여 애플리케이션을 정의하는 데 사용됩니다.
다음 장에서 이러한 모든 구성 요소에 대해 자세히 설명합니다.
Docker의 공식 사이트는 https://www.docker.com/이 사이트에는 Docker 소프트웨어에 대한 모든 정보와 문서가 있습니다. 또한 다양한 운영 체제에 대한 다운로드 링크가 있습니다.
Docker 설치를 시작하기 위해 Ubuntu 인스턴스를 사용할 것입니다. Oracle Virtual Box를 사용하여 가상 Linux 인스턴스가 아직없는 경우를 설정할 수 있습니다.
다음 스크린 샷은 Oracle Virtual Box에 설치된 간단한 Ubuntu 서버를 보여줍니다. 라는 OS 사용자가 있습니다.demo 서버에 대한 전체 루트 액세스 권한이있는 시스템에 정의되어 있습니다.
Docker를 설치하려면 아래 단계를 따라야합니다.
Step 1− Docker를 설치하기 전에 먼저 올바른 Linux 커널 버전이 실행 중인지 확인해야합니다. Docker는 Linux 커널 버전 3.8 이상에서만 실행되도록 설계되었습니다. 다음 명령을 실행하여이를 수행 할 수 있습니다.
Uname
이 메서드는 Linux 시스템에 대한 시스템 정보를 반환합니다.
통사론
uname -a
옵션
a − 이것은 시스템 정보가 반환되도록하는 데 사용됩니다.
반환 값
이 메소드는 Linux 시스템에서 다음 정보를 반환합니다.
- 커널 이름
- 노드 이름
- 커널 릴리스
- 커널 버전
- machine
- processor
- 하드웨어 플랫폼
- 운영 체제
예
uname –a
산출
위의 명령을 실행하면 다음과 같은 결과가 나타납니다.
출력에서 Linux 커널 버전이 버전 3.8보다 높은 4.2.0-27임을 알 수 있으므로 계속 진행할 수 있습니다.
Step 2 − 다음 명령을 통해 수행 할 수있는 최신 패키지로 OS를 업데이트해야합니다.
apt-get
이 방법은 인터넷에서 Linux 시스템으로 패키지를 설치합니다.
통사론
sudo apt-get 업데이트
옵션
sudo − sudo 명령은 루트 액세스로 명령이 실행되도록하는 데 사용됩니다.
update − update 옵션을 사용하면 모든 패키지가 Linux 시스템에서 업데이트되었는지 확인합니다.
반환 값
없음
예
sudo apt-get update
산출
위의 명령을 실행하면 다음과 같은 결과가 나옵니다.
이 명령은 인터넷에 연결하고 Ubuntu 용 최신 시스템 패키지를 다운로드합니다.
Step 3− 다음 단계는 필요한 Docker 패키지를 다운로드하기 위해 나중에 Docker 사이트에서 작업하는 데 필요한 필수 인증서를 설치하는 것입니다. 다음 명령으로 수행 할 수 있습니다.
sudo apt-get install apt-transport-https ca-certificates
Step 4− 다음 단계는 새 GPG 키를 추가하는 것입니다. 이 키는 Docker에 필요한 패키지를 다운로드 할 때 모든 데이터를 암호화하는 데 필요합니다.
다음 명령은 ID가 58118E89F3A912897C070ADBF76221572C52609D 인 키를 keyserver hkp : //ha.pool.sks-keyservers.net : 80 및 adv키 체인. 이 특정 키는 필요한 Docker 패키지를 다운로드하는 데 필요합니다.
Step 5 − 다음으로, 가지고있는 Ubuntu 버전에 따라 관련 사이트를 추가해야합니다. docker.list 에 대한 apt package manager, Docker 사이트에서 Docker 패키지를 감지하고 그에 따라 다운로드 할 수 있습니다.
정확한 12.04 (LTS) ─ deb https://apt.dockerproject.org/repo우분투 정밀 메인
Trusty 14.04 (LTS) ─ deb https://apt.dockerproject.org/repo/ 우분투 트러스티 메인
Wily 15.10 ─ deb https://apt.dockerproject.org/repo 우분투 와일리 메인
Xenial 16.04 (LTS)- https://apt.dockerproject.org/repo 우분투 제니 얼 메인
OS는 Ubuntu 14.04이므로 저장소 이름을 "deb https://apt.dockerproject.org/repoubuntu-trusty main”.
그런 다음이 저장소를 docker.list 상술 한 바와 같이.
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main”
| sudo tee /etc/apt/sources.list.d/docker.list
Step 6 − 다음으로, 우리는 apt-get update command Ubuntu 시스템에서 패키지를 업데이트합니다.
Step 7 − 패키지 관리자가 올바른 저장소를 가리키고 있는지 확인하려면 다음을 발행하여 수행 할 수 있습니다. apt-cache command.
apt-cache policy docker-engine
출력에서 다음 링크를 얻을 수 있습니다. https://apt.dockerproject.org/repo/
Step 8 − 발행 apt-get update command 로컬 시스템의 모든 패키지가 최신 상태인지 확인합니다.
Step 9 − Ubuntu Trusty, Wily 및 Xenial의 경우 linux-image-extra- * 커널 패키지를 설치해야합니다. aufs storage driver. 이 드라이버는 최신 버전의 Docker에서 사용됩니다.
다음 명령을 사용하여 수행 할 수 있습니다.
sudo apt-get install linux-image-extra-$(uname -r)
linux-image-extra-virtual
Step 10 − 마지막 단계는 Docker를 설치하는 것이며 다음 명령으로이를 수행 할 수 있습니다.
sudo apt-get install –y docker-engine
여기, apt-get 설치 옵션을 사용하여 Docker 웹 사이트에서 Docker 엔진 이미지를 다운로드하고 Docker를 설치합니다.
Docker-engine은 Ubuntu 기반 시스템 용 Docker Corporation의 공식 패키지입니다.
다음 섹션에서는 설치된 Docker 버전을 확인하는 방법을 살펴 봅니다.
Docker 버전
실행중인 Docker 버전을 확인하려면 다음 명령을 실행할 수 있습니다.
통사론
docker version
옵션
version − Docker 명령이 설치된 Docker 버전을 반환하는지 확인하는 데 사용됩니다.
반환 값
출력은 시스템에 설치된 Docker 버전의 다양한 세부 정보를 제공합니다.
예
sudo docker version
산출
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
Docker 정보
시스템에서 실행되는 Docker에 대한 자세한 정보를 보려면 다음 명령을 실행할 수 있습니다.
통사론
docker info
옵션
info − Docker 명령이 설치된 Docker 서비스에 대한 자세한 정보를 반환하는지 확인하는 데 사용됩니다.
반환 값
출력은 다음과 같이 시스템에 설치된 Docker의 다양한 세부 정보를 제공합니다.
- 컨테이너 수
- 이미지 수
- Docker에서 사용하는 스토리지 드라이버
- Docker에서 사용하는 루트 디렉터리
- Docker에서 사용하는 실행 드라이버
예
sudo docker info
산출
위의 명령을 실행하면 다음과 같은 결과가 나옵니다.
Windows 용 Docker
Docker는 Windows에 대한 기본 지원을 제공하지만 Windows 용 Docker를 설치하려면 다음 구성이 필요합니다.
시스템 요구 사항
Windows OS | Windows 10 64 비트 |
기억 | 2GB RAM (권장) |
Windows 용 Docker를 다운로드 할 수 있습니다. https://docs.docker.com/docker-for-windows/
Docker 도구 상자
Docker ToolBox는 Windows 8.1 및 Windows 7과 같은 이전 버전의 Windows 용으로 설계되었습니다. Windows 용 Docker를 설치하려면 다음 구성이 필요합니다.
시스템 요구 사항
Windows OS | Windows 7, 8, 8.1 |
기억 | 2GB RAM (권장) |
가상화 | 이것은 활성화되어야합니다. |
Docker ToolBox를 다운로드 할 수 있습니다. https://www.docker.com/products/docker-toolbox
각 제품의 설치 과정을 살펴 보겠습니다.
Windows 용 Docker
설치 프로그램이 다운로드되면 두 번 클릭하여 설치 프로그램을 시작한 다음 아래 단계를 따릅니다.
Step 1 − 계약 조건을 클릭 한 다음 설치 버튼을 클릭하여 설치를 진행하십시오.
Step 2 − 완료되면 마침 버튼을 클릭하여 설치를 완료합니다.
Docker 도구 상자
설치 프로그램이 다운로드되면 두 번 클릭하여 설치 프로그램을 시작한 다음 아래 단계를 따릅니다.
Step 1 − 시작 화면에서 다음 버튼을 클릭합니다.
Step 2 − 다음 화면에서 기본 위치를 유지하고 다음 버튼을 클릭합니다.
Step 3 − 기본 구성 요소를 유지하고 다음 버튼을 클릭하여 계속합니다.
Step 4 − 추가 작업을 그대로 유지하고 다음 버튼을 클릭합니다.
Step 5 − 마지막 화면에서 설치 버튼을 클릭합니다.
Docker Toolbox 작업
이제 Docker Toolbox를 사용하여 Windows에서 Docker 컨테이너를 사용하는 방법을 살펴 보겠습니다. 첫 번째 단계는 Docker 도구 상자 설치를 수행 할 때 바탕 화면에 바로 가기가 생성되는 Docker 도구 상자 응용 프로그램을 시작하는 것입니다.
다음으로 Docker 도구 상자가 시작될 때 수행되는 구성을 볼 수 있습니다.
완료되면 Docker가 구성되고 시작된 것을 볼 수 있습니다. Docker 용 대화 형 셸이 제공됩니다.
Docker가 제대로 실행되는지 테스트하기 위해 Docker를 사용할 수 있습니다. run command 간단한 다운로드 및 실행 HelloWorld Docker container.
Docker의 작동 run command 아래에 주어진다-
docker run
이 명령은 Docker 컨테이너에서 명령을 실행하는 데 사용됩니다.
통사론
docker run image
옵션
Image − 컨테이너를 실행하는 데 사용되는 이미지의 이름입니다.
반환 값
출력은 원하는 컨테이너에서 명령을 실행합니다.
예
sudo docker run hello-world
이 명령은 hello-world 이미 존재하지 않는 경우 이미지를 실행하고 hello-world 컨테이너로.
산출
위의 명령을 실행하면 다음과 같은 결과가 나옵니다.
Windows에서 Ubuntu OS를 실행하려면 다음 명령을 사용하여 Ubuntu 이미지를 다운로드 할 수 있습니다.
Docker run –it ubuntu bash
여기에서는 Docker에 다음을 통해 대화 형 모드에서 명령을 실행하도록 –it 선택권.
출력에서 Ubuntu 이미지가 다운로드되고 실행 된 것을 볼 수 있으며 Ubuntu 컨테이너에 루트 사용자로 로그인됩니다.
Docker Hub는 다른 커뮤니티에서 빌드 한 Docker 이미지를 다운로드 할 수있는 클라우드의 레지스트리 서비스입니다. 고유 한 Docker 빌드 이미지를 Docker 허브에 업로드 할 수도 있습니다. 이 장에서는 Docker 허브에서 Jenkins Docker 이미지를 다운로드하고 사용하는 방법을 살펴 봅니다.
Docker 허브의 공식 사이트는- https://www.docker.com/community-edition#/add_ons
Step 1 − 먼저 Docker 허브에서 간단한 가입을해야합니다.
Step 2 − 가입하면 Docker Hub에 로그인됩니다.
Step 3 − 다음으로 Jenkins 이미지를 찾아 보겠습니다.
Step 4 − 같은 페이지에서 아래로 스크롤하면 Docker를 볼 수 있습니다. pull명령. Jenkins 이미지를 로컬 Ubuntu 서버에 다운로드하는 데 사용됩니다.
Step 5 − 이제 Ubuntu 서버로 이동하여 다음 명령을 실행합니다. −
sudo docker pull jenkins
Jenkins를 실행하려면 다음 명령을 실행해야합니다.
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
위 사항에 대해 다음 사항에 유의하십시오. sudo 명령-
우리는 sudo 명령을 사용하여 루트 액세스로 실행되는지 확인하십시오.
여기, jenkins Docker 허브에서 다운로드하고 Ubuntu 시스템에 설치하려는 이미지의 이름입니다.
-p 컨테이너에 적절하게 액세스 할 수 있도록 내부 Docker 이미지의 포트 번호를 기본 Ubuntu 서버에 매핑하는 데 사용됩니다.
그러면 Jenkins가 Ubuntu 머신에서 컨테이너로 성공적으로 실행됩니다.
Docker에서는 모든 것이 이미지를 기반으로합니다. 이미지는 파일 시스템과 매개 변수의 조합입니다. Docker에서 다음 명령의 예를 들어 보겠습니다.
docker run hello-world
Docker 명령은 구체적이며 운영 체제의 Docker 프로그램에 수행해야 할 작업을 알려줍니다.
그만큼 run 명령은 이미지의 인스턴스를 만들고 싶다는 것을 언급하는 데 사용됩니다. container.
마지막으로 "hello-world"는 컨테이너가 만들어지는 이미지를 나타냅니다.
이제 Docker Hub에서 사용 가능한 CentOS 이미지를 사용하여 Ubuntu 머신에서 CentOS를 실행하는 방법을 살펴 보겠습니다. Ubuntu 컴퓨터에서 다음 명령을 실행하여이를 수행 할 수 있습니다.
sudo docker run centos –it /bin/bash
위 사항에 대해 다음 사항에 유의하십시오. sudo 명령-
우리는 sudo 다음과 함께 실행되는지 확인하는 명령 root 접속하다.
여기, centos Docker Hub에서 다운로드하고 Ubuntu 시스템에 설치하려는 이미지의 이름입니다.
─it 우리가 실행하고 싶다는 것을 언급하는 데 사용됩니다. interactive mode.
/bin/bash CentOS가 실행되고 실행되면 bash 쉘을 실행하는 데 사용됩니다.
Docker 이미지 표시
시스템에서 Docker 이미지 목록을 보려면 다음 명령을 실행할 수 있습니다.
docker images
이 명령은 현재 시스템에 설치된 모든 이미지를 표시하는 데 사용됩니다.
통사론
docker images
옵션
없음
반환 값
출력은 시스템의 이미지 목록을 제공합니다.
예
sudo docker images
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
위의 출력에서 서버에 세 개의 이미지가 있음을 알 수 있습니다. centos, newcentos, 과 jenkins. 각 이미지에는 다음과 같은 속성이 있습니다.
TAG − 이미지에 논리적으로 태그를 지정하는 데 사용됩니다.
Image ID − 이미지를 고유하게 식별하는 데 사용됩니다.
Created − 이미지가 생성 된 이후의 일수.
Virtual Size − 이미지의 크기.
Docker 이미지 다운로드
Docker를 사용하여 Docker Hub에서 이미지를 다운로드 할 수 있습니다. run명령. 어떻게 할 수 있는지 자세히 살펴 보겠습니다.
통사론
다음 구문은 Docker 컨테이너에서 명령을 실행하는 데 사용됩니다.
docker run image
옵션
Image − 컨테이너를 실행하는 데 사용되는 이미지의 이름입니다.
반환 값
출력은 원하는 컨테이너에서 명령을 실행합니다.
예
sudo docker run centos
이 명령은 centos 이미지가없는 경우 OS를 컨테이너로 실행합니다.
산출
위의 명령을 실행하면 다음과 같은 결과가 나옵니다.
이제 CentOS Docker 이미지가 다운로드 된 것을 볼 수 있습니다. 이제 Docker를 실행하면images 시스템에있는 이미지 목록을 보려면 명령을 실행해야합니다. centos 이미지도 있습니다.
Docker 이미지 제거
시스템의 Docker 이미지는 다음을 통해 제거 할 수 있습니다. docker rmi명령. 이 명령을 더 자세히 살펴 보겠습니다.
docker rmi
이 명령은 Docker 이미지를 제거하는 데 사용됩니다.
통사론
docker rmi ImageID
옵션
ImageID − 제거해야하는 이미지의 ID입니다.
반환 값
출력은 삭제 된 이미지의 이미지 ID를 제공합니다.
예
sudo docker rmi 7a86f8ffcb25
여기, 7a86f8ffcb25 의 이미지 ID입니다. newcentos 영상.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
이미지에 대한 몇 가지 Docker 명령을 더 살펴 보겠습니다.
도커 이미지 -q
이 명령은 이미지의 이미지 ID 만 반환하는 데 사용됩니다.
통사론
docker images
옵션
q − Docker 명령에 이미지 ID 만 반환하도록 지시합니다.
반환 값
출력에는 Docker 호스트에있는 이미지의 이미지 ID 만 표시됩니다.
예
sudo docker images -q
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 검사
이 명령은 이미지 또는 컨테이너의 세부 정보를 참조하는 데 사용됩니다.
통사론
docker inspect Repository
옵션
Repository − 이것은 이미지의 이름입니다.
반환 값
출력은 이미지에 대한 자세한 정보를 표시합니다.
예
sudo docker inspect jenkins
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
컨테이너는 Docker run 명령을 사용하여 실행할 수있는 Docker 이미지의 인스턴스입니다. Docker의 기본 목적은 컨테이너를 실행하는 것입니다. 컨테이너 작업 방법에 대해 논의 해 보겠습니다.
컨테이너 실행
컨테이너 실행은 Docker로 관리됩니다. run명령. 대화 형 모드에서 컨테이너를 실행하려면 먼저 Docker 컨테이너를 시작하십시오.
sudo docker run –it centos /bin/bash
그런 다음 Crtl + p를 누르면 OS 셸로 돌아갑니다.
그런 다음 Ubuntu 서버의 CentOS 시스템 인스턴스에서 실행됩니다.
컨테이너 목록
하나는 다음을 통해 기계의 모든 컨테이너를 나열 할 수 있습니다. docker ps명령. 이 명령은 현재 실행중인 컨테이너를 반환하는 데 사용됩니다.
docker ps
통사론
docker ps
옵션
없음
반환 값
출력에는 현재 실행중인 컨테이너가 표시됩니다.
예
sudo docker ps
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
더 많은 변형을 보자 docker ps 명령.
도커 ps -a
이 명령은 시스템의 모든 컨테이너를 나열하는 데 사용됩니다.
통사론
docker ps -a
옵션
─a − 그것은 docker ps 시스템의 모든 컨테이너를 나열하는 명령.
반환 값
출력에 모든 컨테이너가 표시됩니다.
예
sudo docker ps -a
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 역사
이 명령을 사용하면 컨테이너를 통해 이미지와 함께 실행 된 모든 명령을 볼 수 있습니다.
통사론
docker history ImageID
옵션
ImageID − 이것은 그것에 대해 실행 된 모든 명령을보고자하는 이미지 ID입니다.
반환 값
출력에는 해당 이미지에 대해 실행되는 모든 명령이 표시됩니다.
예
sudo docker history centos
위의 명령은에 대해 실행 된 모든 명령을 표시합니다. centos 영상.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
이 장에서는 컨테이너로 할 수있는 작업을 자세히 살펴 보겠습니다.
도커 탑
이 명령을 사용하면 컨테이너 내의 상위 프로세스를 볼 수 있습니다.
통사론
docker top ContainerID
옵션
ContainerID − 상위 프로세스를 보려는 컨테이너 ID입니다.
반환 값
출력에는 컨테이너 내의 최상위 프로세스가 표시됩니다.
예
sudo docker top 9f215ed0b0d3
위의 명령은 컨테이너 내의 최상위 프로세스를 보여줍니다.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 중지
이 명령은 실행중인 컨테이너를 중지하는 데 사용됩니다.
통사론
docker stop ContainerID
옵션
ContainerID − 중지해야하는 컨테이너 ID입니다.
반환 값
출력은 중지 된 컨테이너의 ID를 제공합니다.
예
sudo docker stop 9f215ed0b0d3
위의 명령은 Docker 컨테이너를 중지합니다. 9f215ed0b0d3.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 rm
이 명령은 컨테이너를 삭제하는 데 사용됩니다.
통사론
docker rm ContainerID
옵션
ContainerID − 제거해야하는 컨테이너 ID입니다.
반환 값
출력은 제거 된 컨테이너의 ID를 제공합니다.
예
sudo docker rm 9f215ed0b0d3
위의 명령은 Docker 컨테이너를 제거합니다. 9f215ed0b0d3.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 통계
이 명령은 실행중인 컨테이너의 통계를 제공하는 데 사용됩니다.
통사론
docker stats ContainerID
옵션
ContainerID − 통계를 제공해야하는 컨테이너 ID입니다.
반환 값
출력에는 컨테이너의 CPU 및 메모리 사용률이 표시됩니다.
예
sudo docker stats 9f215ed0b0d3
위의 명령은 컨테이너의 CPU 및 메모리 사용률을 제공합니다. 9f215ed0b0d3.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 연결
이 명령은 실행중인 컨테이너에 연결하는 데 사용됩니다.
통사론
docker attach ContainerID
옵션
ContainerID − 연결해야하는 컨테이너 ID입니다.
반환 값
없음
예
sudo docker attach 07b0b6f434fe
위의 명령은 Docker 컨테이너에 연결됩니다. 07b0b6f434fe.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
Docker 컨테이너에 연결하면 위의 명령을 실행하여 해당 Docker 컨테이너의 프로세스 사용률을 확인할 수 있습니다.
도커 일시 중지
이 명령은 실행중인 컨테이너에서 프로세스를 일시 중지하는 데 사용됩니다.
통사론
docker pause ContainerID
옵션
ContainerID − 이것은 컨테이너에서 프로세스를 일시 중지해야하는 컨테이너 ID입니다.
반환 값
일시 중지 된 컨테이너의 ContainerID입니다.
예
sudo docker pause 07b0b6f434fe
위의 명령은 실행중인 컨테이너의 프로세스를 일시 중지합니다. 07b0b6f434fe.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 일시 중지 해제
이 명령은 unpause 실행중인 컨테이너의 프로세스.
통사론
docker unpause ContainerID
옵션
ContainerID − 이것은 컨테이너의 프로세스를 일시 중지 해제해야하는 컨테이너 ID입니다.
반환 값
실행중인 컨테이너의 ContainerID입니다.
예
sudo docker unpause 07b0b6f434fe
위의 명령은 실행중인 컨테이너의 프로세스를 일시 중지 해제합니다 : 07b0b6f434fe
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
도커 킬
이 명령은 실행중인 컨테이너에서 프로세스를 종료하는 데 사용됩니다.
통사론
docker kill ContainerID
옵션
ContainerID − 이것은 컨테이너의 프로세스를 종료하는 데 필요한 컨테이너 ID입니다.
반환 값
실행중인 컨테이너의 ContainerID입니다.
예
sudo docker kill 07b0b6f434fe
위의 명령은 실행중인 컨테이너의 프로세스를 종료합니다. 07b0b6f434fe.
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
Docker – 컨테이너 수명주기
다음 그림은 Docker 컨테이너의 전체 수명주기를 설명합니다.
처음에는 Docker 컨테이너가 created 상태.
그런 다음 Docker 컨테이너는 Docker가 실행 중 상태가됩니다. run 명령이 사용됩니다.
Docker kill 명령은 기존 Docker 컨테이너를 종료하는 데 사용됩니다.
Docker pause 명령은 기존 Docker 컨테이너를 일시 중지하는 데 사용됩니다.
Docker stop 명령은 기존 Docker 컨테이너를 일시 중지하는 데 사용됩니다.
Docker run 명령은 컨테이너를 다시 stopped 상태 running 상태.
다음 이미지는 표준 및 기존 아키텍처를 보여줍니다. virtualization.
서버는 여러 가상 머신을 호스팅하는 데 사용되는 물리적 서버입니다.
호스트 OS는 Linux 또는 Windows와 같은 기본 시스템입니다.
하이퍼 바이저는 가상 머신을 호스팅하는 데 사용되는 VMWare 또는 Windows Hyper V입니다.
그런 다음 게스트 OS로 기존 하이퍼 바이저 위에 가상 머신으로 여러 운영 체제를 설치합니다.
그런 다음 각 게스트 OS 위에 애플리케이션을 호스팅합니다.
다음 이미지는 Dockers를 통해 활성화 된 차세대 가상화를 보여줍니다. 다양한 레이어를 살펴 보겠습니다.
서버는 여러 가상 머신을 호스팅하는 데 사용되는 물리적 서버입니다. 따라서이 레이어는 동일하게 유지됩니다.
호스트 OS는 Linux 또는 Windows와 같은 기본 시스템입니다. 따라서이 레이어는 동일하게 유지됩니다.
이제 Docker 엔진 인 새로운 세대가 나옵니다. 이는 이전에 Docker 컨테이너로 가상 머신이었던 운영 체제를 실행하는 데 사용됩니다.
이제 모든 앱이 Docker 컨테이너로 실행됩니다.
이 아키텍처의 분명한 이점은 게스트 OS를위한 추가 하드웨어가 필요하지 않다는 것입니다. 모든 것이 Docker 컨테이너로 작동합니다.
Docker 엔진의 좋은 점은 다양한 운영 체제에서 작동하도록 설계되었다는 것입니다. 우리는 이미 Windows에서 설치를 보았고 Linux 시스템에서 모든 Docker 명령을 확인했습니다. 이제 Windows OS에서 다양한 Docker 명령을 살펴 보겠습니다.
Docker 이미지
Docker를 실행 해 보겠습니다. images Windows 호스트에서 명령.
여기에서 두 개의 이미지가 있음을 알 수 있습니다. ubuntu 과 hello-world.
컨테이너 실행
이제 Windows Docker 호스트에서 컨테이너를 실행 해 보겠습니다.
컨테이너를 실행하여 이제 Windows 호스트에서 Ubuntu 컨테이너를 실행할 수 있음을 알 수 있습니다.
모든 컨테이너 나열
Windows 호스트의 모든 컨테이너를 나열 해 보겠습니다.
컨테이너 중지
이제 Windows 호스트에서 실행중인 컨테이너를 중지하겠습니다.
따라서 Docker 엔진은 다른 Docker 호스트와 관련하여 매우 일관되고 Linux에서 작동하는 것과 동일한 방식으로 Windows에서 작동한다는 것을 알 수 있습니다.
이 장에서는 Docker를 구성하는 다양한 옵션을 살펴 보겠습니다.
서비스 도커 중지
이 명령은 Docker를 중지하는 데 사용됩니다. daemon 방법.
통사론
service docker stop
옵션
없음
반환 값
Docker 프로세스가 중지되었음을 보여주는 메시지입니다.
예
sudo service docker stop
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
서비스 도커 시작
이 명령은 Docker 데몬 프로세스를 시작하는 데 사용됩니다.
통사론
service docker start
옵션
없음
반환 값
Docker 프로세스가 시작되었음을 나타내는 메시지입니다.
예
sudo service docker start
산출
위의 명령을 실행하면 다음 결과가 생성됩니다.
기본적으로 컨테이너를 시작할 때 shell command아래와 같이 컨테이너를 시작하는 동안. 이것은 우리가 컨테이너로 작업 할 때 이전 장에서 본 것입니다.
위의 스크린 샷에서 다음 명령을 실행했음을 알 수 있습니다.
sudo docker run –it centos /bin/bash
이 명령을 사용하여 새 컨테이너를 만든 다음 Ctrl + P + Q 명령을 사용하여 컨테이너를 종료했습니다. 컨테이너에서 나온 후에도 컨테이너가 여전히 존재하도록합니다.
Docker를 사용하여 컨테이너가 여전히 존재하는지 확인할 수 있습니다. ps명령. 컨테이너에서 직접 나가야한다면 컨테이너 자체가 파괴 될 것입니다.
이제 컨테이너에 부착하고 파괴 할 필요없이 깨끗하게 배출하는 더 쉬운 방법이 있습니다. 이를 달성하는 한 가지 방법은nsenter 명령.
실행하기 전에 nsenter 명령을 내리려면 먼저 nsenter영상. 다음 명령을 사용하여 수행 할 수 있습니다-
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
우리가 사용하기 전에 nsenter 명령을 사용하려면 컨테이너의 프로세스 ID를 가져와야합니다. nsenter명령. Docker를 통해 프로세스 ID를 얻을 수 있습니다.inspect command 그리고 그것을 통해 필터링 Pid.
위의 스크린 샷에서 볼 수 있듯이 먼저 docker ps명령을 실행하여 실행중인 컨테이너를 확인합니다. ID가 ef42a4c5e663 인 실행중인 컨테이너가 하나 있음을 알 수 있습니다.
그런 다음 Docker를 사용합니다. inspect 명령을 사용하여이 컨테이너의 구성을 검사 한 다음 grep명령을 사용하여 프로세스 ID를 필터링합니다. 출력에서 프로세스 ID가 2978임을 알 수 있습니다.
이제 프로세스 ID를 얻었으므로 계속 진행하여 nsenter Docker 컨테이너에 연결하는 명령.
nsenter
이 방법을 사용하면 컨테이너에서 나가지 않고도 컨테이너에 연결할 수 있습니다.
통사론
nsenter –m –u –n –p –i –t containerID 명령
옵션
-u 언급하는 데 사용됩니다 Uts namespace
-m 언급하는 데 사용됩니다 mount namespace
-n 언급하는 데 사용됩니다 network namespace
-p 언급하는 데 사용됩니다 process namespace
-i s를 사용하여 컨테이너를 대화 형 모드로 실행합니다.
-t 컨테이너의 I / O 스트림을 호스트 OS에 연결하는 데 사용됩니다.
containerID − 컨테이너의 ID입니다.
Command − 컨테이너 내에서 실행하는 명령입니다.
반환 값
없음
예
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
산출
출력에서 다음과 같은 점을 관찰 할 수 있습니다.
프롬프트가 bash shell 우리가 발행 할 때 직접 nsenter 명령.
그런 다음 exit명령. 이제 일반적으로 사용하지 않았다면nsenter명령을 내리면 컨테이너가 파괴됩니다. 그러나 우리가 실행할 때nsenter 명령을 실행하면 컨테이너가 계속 실행되고 있습니다.
이전 장에서 우리는 Centos와 같은 다양한 이미지 파일을 보았습니다. Docker hub컨테이너를 회전시킬 수 있습니다. 아래에 예가 다시 표시됩니다.
Docker를 사용하는 경우 images명령을 사용하면 시스템의 기존 이미지를 볼 수 있습니다. 위의 스크린 샷에서 두 개의 이미지가 있음을 알 수 있습니다.centos 과 nsenter.
그러나 Docker는 고유 한 Docker 이미지를 생성 할 수있는 기능도 제공하며 다음의 도움으로 수행 할 수 있습니다. Docker Files. Docker 파일은 이미지 빌드 방법에 대한 지침이 포함 된 간단한 텍스트 파일입니다.
다음 단계에서는 Docker 파일을 만드는 방법을 설명합니다.
Step 1 −라는 파일을 만듭니다. Docker File 다음을 사용하여 편집하십시오. vim. 파일 이름은 "D"가 대문자 인 "Dockerfile"이어야합니다.
Step 2 − 다음 지침에 따라 Docker 파일을 빌드하십시오.
#This is a sample Image
FROM ubuntu
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install –y nginx
CMD [“echo”,”Image created”]
위 파일에 대해 다음 사항에 유의해야합니다.
첫 번째 줄 "#This is a sample Image"는 주석입니다. 다음의 도움으로 Docker 파일에 주석을 추가 할 수 있습니다.# 명령
다음 줄은 FROM예어. Docker에게 이미지를 기반으로 할 기본 이미지를 알려줍니다. 이 예에서 우리는ubuntu 영상.
다음 명령은이 이미지를 유지할 사람입니다. 여기에서MAINTAINER 키워드를 입력하고 이메일 ID를 언급하십시오.
그만큼 RUN명령은 이미지에 대한 지침을 실행하는 데 사용됩니다. 우리의 경우 먼저 Ubuntu 시스템을 업데이트 한 다음 nginx 서버를ubuntu 영상.
마지막 명령은 사용자에게 메시지를 표시하는 데 사용됩니다.
Step 3− 파일을 저장합니다. 다음 장에서는 이미지를 빌드하는 방법에 대해 설명합니다.
지난 장에서 Docker 파일을 만들었습니다. 이제 Docker 파일을 빌드 할 시간입니다. Docker 파일은 다음 명령으로 빌드 할 수 있습니다.
docker build
이 명령에 대해 자세히 알아 보겠습니다.
도커 빌드
이 방법을 사용하면 사용자가 자신의 Docker 이미지를 빌드 할 수 있습니다.
통사론
docker build -t ImageName:TagName dir
옵션
-t − 이미지에 태그를 언급하는 것
ImageName − 이것은 이미지에 부여 할 이름입니다.
TagName − 이것은 이미지에 부여 할 태그입니다.
Dir − Docker 파일이있는 디렉토리.
반환 값
없음
예
sudo docker build –t myimage:0.1.
여기, myimage 이미지에 부여하는 이름이며 0.1 이미지에 부여하는 태그 번호입니다.
Docker 파일이 현재 작업 디렉토리에 있으므로 "."를 사용했습니다. 명령 끝에 현재 작업 디렉토리를 나타냅니다.
산출
컴퓨터에서 로컬로 사용할 수있는 이미지가 없기 때문에 출력에서 Ubuntu 이미지가 Docker Hub에서 다운로드되는 것을 먼저 확인할 수 있습니다.
마지막으로 빌드가 완료되면 필요한 모든 명령이 이미지에서 실행됩니다.
그러면 성공적으로 빌드 된 메시지와 새 이미지의 ID가 표시됩니다. Docker를 실행할 때images command, 그러면 새 이미지를 볼 수 있습니다.
이제 새 이미지에서 컨테이너를 빌드 할 수 있습니다.
공용 리포지토리를 사용하여 다른 모든 사람이 사용할 수있는 Docker 이미지를 호스팅 할 수 있습니다. 예는 Docker Hub에서 사용할 수있는 이미지입니다. Centos, Ubuntu 및 Jenkins와 같은 대부분의 이미지는 모두 공개적으로 사용할 수 있습니다. Docker Hub의 공용 저장소에 게시하여 이미지를 사용할 수도 있습니다.
예를 들어, 우리는 myimage"Docker 파일 빌드"장에서 빌드하고 해당 이미지를 Docker Hub에 업로드하십시오. 먼저 Docker 호스트의 이미지를 검토하여 Docker 레지스트리로 푸시 할 수있는 항목을 살펴 보겠습니다.
여기, 우리는 myimage:0.1"Docker 파일 빌드"장의 일부로 생성 된 이미지입니다. 이것을 사용하여 Docker 공용 저장소에 업로드하겠습니다.
다음 단계는 이미지를 공용 저장소에 업로드하는 방법을 설명합니다.
Step 1− Docker Hub에 로그인하고 저장소를 생성합니다. 이미지가 저장 될 저장소입니다. 이동https://hub.docker.com/ 자격 증명으로 로그인하십시오.
Step 2 − 위 화면에서 "저장소 생성"버튼을 클릭하고 이름으로 저장소를 생성합니다. demorep. 저장소의 가시성이 공개되어 있는지 확인하십시오.
저장소가 생성되면 pull 저장소에 첨부 된 명령.
그만큼 pull 우리 저장소에서 사용할 명령은 다음과 같습니다.
docker pull demousr/demorep
Step 3− 이제 Docker 호스트로 돌아갑니다. 여기에 태그를 지정해야합니다.myimageDocker Hub에서 생성 된 새 저장소에 추가합니다. Docker를 통해이 작업을 수행 할 수 있습니다.tag command.
우리는 이것에 대해 더 배울 것입니다 tag command 이 장의 뒷부분에 있습니다.
Step 4− Docker 로그인 명령을 실행하여 명령 프롬프트에서 Docker Hub 저장소에 로그인합니다. Docker 로그인 명령은 Docker Hub 저장소에 대한 사용자 이름과 암호를 입력하라는 메시지를 표시합니다.
Step 5− 이미지에 태그가 지정되면 이제 이미지를 Docker Hub 저장소로 푸시 할 차례입니다. Docker를 통해이 작업을 수행 할 수 있습니다.push명령. 이 장의 뒷부분에서이 명령에 대해 자세히 알아볼 것입니다.
도커 태그
이 방법을 사용하면 관련 저장소에 이미지에 태그를 지정할 수 있습니다.
통사론
docker tag imageID Repositoryname
옵션
imageID − 저장소에 태그를 지정해야하는 ImageID입니다.
Repositoryname − ImageID를 태그해야하는 저장소 이름입니다.
반환 값
없음
예
sudo docker tag ab0c1d3744dd demousr/demorep:1.0
산출
위 예의 샘플 출력은 다음과 같습니다.
도커 푸시
이 방법을 사용하면 이미지를 Docker Hub로 푸시 할 수 있습니다.
통사론
docker push Repositoryname
옵션
Repositoryname − Docker Hub에 푸시해야하는 저장소 이름입니다.
반환 값
Docker Hub에 푸시 된 저장소의 긴 ID입니다.
예
sudo docker push demousr/demorep:1.0
산출
Docker Hub 페이지로 돌아가서 저장소로 이동하면 저장소에 태그 이름이 표시됩니다.
이제 Docker 호스트에 업로드 한 저장소를 가져 오겠습니다. 먼저 이미지를 삭제하겠습니다.myimage:0.1 과 demousr/demorep:1.0, 로컬 Docker 호스트에서. Docker를 사용합시다pull command Docker Hub에서 저장소를 가져옵니다.
위의 스크린 샷에서 Docker가 pull 명령은 Docker Hub에서 새 저장소를 가져 와서 컴퓨터에 배치했습니다.
Docker에서 컨테이너 자체는 포트에서 실행되는 애플리케이션을 가질 수 있습니다. 컨테이너를 실행할 때 포트 번호를 통해 컨테이너의 애플리케이션에 액세스하려면 컨테이너의 포트 번호를 Docker 호스트의 포트 번호에 매핑해야합니다. 이것이 어떻게 달성 될 수 있는지에 대한 예를 살펴 보겠습니다.
이 예에서는 Docker Hub에서 Jenkins 컨테이너를 다운로드합니다. 그런 다음 Jenkins 포트 번호를 Docker 호스트의 포트 번호에 매핑합니다.
Step 1 − 먼저 Docker Hub에서 간단한 가입을해야합니다.
Step 2 − 가입하면 Docker Hub에 로그인됩니다.
Step 3 − 다음으로 Jenkins 이미지를 찾아 보겠습니다.
Step 4 − 같은 페이지에서 아래로 스크롤하면 Docker를 볼 수 있습니다. pull명령. Jenkins 이미지를 로컬 Ubuntu 서버에 다운로드하는 데 사용됩니다.
Step 5 − 이제 Ubuntu 서버로 이동하여 명령을 실행합니다 −
sudo docker pull jenkins
Step 6 − 컨테이너에 의해 노출되는 포트를 이해하려면 Docker를 사용해야합니다. inspect command 이미지를 검사합니다.
이제 이것에 대해 더 배우자 inspect 명령.
도커 검사
이 메서드를 사용하면 컨테이너 또는 이미지에 대한 하위 수준 정보를 반환 할 수 있습니다.
통사론
docker inspect Container/Image
옵션
Container/Image − 검사 할 컨테이너 또는 이미지
반환 값
JSON 형식의 이미지 또는 컨테이너에 대한 하위 수준 정보입니다.
예
sudo docker inspect jenkins
산출
의 출력 inspect명령은 JSON 출력을 제공합니다. 출력을 관찰하면 "ExposedPorts"섹션이 있고 언급 된 두 개의 포트가 있음을 알 수 있습니다. 하나는data port 8080이고 다른 하나는 control port 50000의.
Jenkins를 실행하고 포트를 매핑하려면 Docker를 변경해야합니다. run명령을 실행하고 포트 매핑을 지정하는 'p'옵션을 추가합니다. 따라서 다음 명령을 실행해야합니다.
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
포트 번호 매핑의 왼쪽은 매핑 할 Docker 호스트 포트이고 오른쪽은 Docker 컨테이너 포트 번호입니다.
브라우저를 열고 포트 8080에서 Docker 호스트로 이동하면 Jenkins가 실행중인 것을 볼 수 있습니다.
자신의 개인 저장소가 필요할 수 있습니다. Docker Hub에서 리포지토리를 호스팅하지 않을 수 있습니다. 이를 위해 Docker의 저장소 컨테이너 자체가 있습니다. 레지스트리 용 컨테이너를 다운로드하고 사용하는 방법을 살펴 보겠습니다.
Step 1 − Docker 사용 run명령을 사용하여 개인 레지스트리를 다운로드하십시오. 다음 명령을 사용하여 수행 할 수 있습니다.
sudo docker run –d –p 5000:5000 –-name registry registry:2
위의 명령에 대해 다음 사항에 유의해야합니다.
Registry 비공개 저장소를 호스팅하는 데 사용할 수있는 Docker에서 관리하는 컨테이너입니다.
컨테이너에 의해 노출되는 포트 번호는 5000입니다. 따라서 –p command, 동일한 포트 번호를 로컬 호스트의 5000 포트 번호에 매핑합니다.
Docker 호스트에서 구별하기 위해 레지스트리 컨테이너를 "2"로 태그 지정하고 있습니다.
그만큼 –d옵션은 분리 모드에서 컨테이너를 실행하는 데 사용됩니다. 컨테이너가 백그라운드에서 실행될 수 있도록하기위한 것입니다.
Step 2 −하자 docker ps 레지스트리 컨테이너가 실제로 실행되고 있는지 확인합니다.
이제 레지스트리 컨테이너가 실제로 실행되고 있음을 확인했습니다.
Step 3− 이제 기존 이미지 중 하나에 태그를 지정하여 로컬 저장소로 푸시 할 수 있습니다. 이 예에서는centos 로컬에서 사용할 수있는 이미지, 개인 저장소에 태그를 지정하고 태그 이름을 추가합니다. centos.
sudo docker tag 67591570dd29 localhost:5000/centos
위의 명령에 대해 다음 사항에 유의해야합니다.
67591570dd29 에 대한 이미지 ID를 나타냅니다. centos 영상.
localhost:5000 개인 저장소의 위치입니다.
저장소 이름에 다음과 같이 태그를 지정합니다. centos 개인 저장소에 있습니다.
Step 4 − Now let’s use the Docker push command to push the repository to our private repository.
sudo docker push localhost:5000/centos
Here, we are pushing the centos image to the private repository hosted at localhost:5000.
Step 5 − Now let’s delete the local images we have for centos using the docker rmi commands. We can then download the required centos image from our private repository.
sudo docker rmi centos:latest
sudo docker rmi 67591570dd29
Step 6 − Now that we don’t have any centos images on our local machine, we can now use the following Docker pull command to pull the centos image from our private repository.
sudo docker pull localhost:5000/centos
Here, we are pulling the centos image to the private repository hosted at localhost:5000.
If you now see the images on your system, you will see the centos image as well.
We have already learnt how to use Docker File to build our own custom images. Now let’s see how we can build a web server image which can be used to build containers.
In our example, we are going to use the Apache Web Server on Ubuntu to build our image. Let’s follow the steps given below, to build our web server Docker file.
Step 1 − The first step is to build our Docker File. Let’s use vim and create a Docker File with the following information.
FROM ubuntu
RUN apt-get update
RUN apt-get install –y apache2
RUN apt-get install –y apache2-utils
RUN apt-get clean
EXPOSE 80 CMD [“apache2ctl”, “-D”, “FOREGROUND”]
The following points need to be noted about the above statements −
We are first creating our image to be from the Ubuntu base image.
Next, we are going to use the RUN command to update all the packages on the Ubuntu system.
Next, we use the RUN command to install apache2 on our image.
Next, we use the RUN command to install the necessary utility apache2 packages on our image.
Next, we use the RUN command to clean any unnecessary files from the system.
The EXPOSE command is used to expose port 80 of Apache in the container to the Docker host.
Finally, the CMD command is used to run apache2 in the background.
이제 파일 세부 사항을 입력 했으므로 파일을 저장하십시오.
Step 2 − Docker 실행 buildDocker 파일을 빌드하는 명령입니다. 다음 명령을 사용하여 수행 할 수 있습니다-
sudo docker build –t=”mywebserver” .
이미지에 태그를 지정합니다. mywebserver. 이미지가 빌드되면 파일이 빌드되었다는 성공적인 메시지가 표시됩니다.
Step 3− 이제 웹 서버 파일이 구축되었으므로 이제 이미지에서 컨테이너를 생성 할 차례입니다. Docker로이를 수행 할 수 있습니다.run 명령.
sudo docker run –d –p 80:80 mywebserver
위의 명령에 대해 다음 사항에 유의해야합니다.
컨테이너에 의해 노출되는 포트 번호는 80입니다. 따라서 –p 명령을 실행하면 동일한 포트 번호를 로컬 호스트의 80 포트 번호에 매핑합니다.
그만큼 –d옵션은 분리 모드에서 컨테이너를 실행하는 데 사용됩니다. 이는 컨테이너가 백그라운드에서 실행될 수 있도록하기위한 것입니다.
웹 브라우저에서 Docker 호스트의 포트 80으로 이동하면 이제 Apache가 실행 중임을 알 수 있습니다.
Docker에는 다양한 명령 명령이 있습니다. 이들은 Docker 파일에있는 명령입니다. 사용 가능한 항목을 살펴 보겠습니다.
CMD 명령
이 명령은 컨테이너가 실행될 때 런타임에 명령을 실행하는 데 사용됩니다.
통사론
CMD command param1
옵션
command − 컨테이너가 시작될 때 실행할 명령입니다.
param1 − 이것은 명령에 입력 된 매개 변수입니다.
반환 값
그에 따라 명령이 실행됩니다.
예
이 예에서는 간단한 Hello World Docker 파일에 에코하고 이미지를 만들고 여기에서 컨테이너를 시작합니다.
Step 1 − 다음 명령을 사용하여 Docker 파일을 빌드합니다.
FROM ubuntu
MAINTAINER [email protected]
CMD [“echo” , “hello world”]
여기서 CMD는 인쇄에 사용됩니다. hello world.
Step 2 − Docker를 사용하여 이미지 빌드 build 명령.
Step 3 − 이미지에서 컨테이너를 실행합니다.
진입 지점
이 명령은 컨테이너에 대해 런타임에 명령을 실행하는데도 사용할 수 있습니다. 그러나 ENTRYPOINT 명령을 사용하면 더 유연해질 수 있습니다.
통사론
ENTRYPOINT command param1
옵션
command − 컨테이너가 시작될 때 실행할 명령입니다.
param1 − 이것은 명령에 입력 된 매개 변수입니다.
반환 값
그에 따라 명령이 실행됩니다.
예
ENTRYPOINT에 대해 더 많이 이해하기 위해 예제를 살펴 보겠습니다. 이 예에서는 간단한echo Docker 파일에서 명령을 실행하고 이미지를 만들고 여기에서 컨테이너를 시작합니다.
Step 1 − 다음 명령을 사용하여 Docker 파일을 빌드합니다.
FROM ubuntu
MAINTAINER [email protected]
ENTRYPOINT [“echo”]
Step 2 − Docker를 사용하여 이미지 빌드 build 명령.
Step 3 − 이미지에서 컨테이너를 실행합니다.
ENV
이 명령은 컨테이너에서 환경 변수를 설정하는 데 사용됩니다.
통사론
ENV key value
옵션
Key − 이것은 환경 변수의 키입니다.
value − 이것은 환경 변수의 값입니다.
반환 값
그에 따라 명령이 실행됩니다.
예
이 예에서는 간단한 echo Docker 파일에서 명령을 실행하고 이미지를 만들고 여기에서 컨테이너를 시작합니다.
Step 1 − 다음 명령을 사용하여 Docker 파일을 빌드합니다.
FROM ubuntu
MAINTAINER [email protected]
ENV var1=Tutorial var2=point
Step 2 − Docker를 사용하여 이미지 빌드 build 명령.
Step 3 − 이미지에서 컨테이너를 실행합니다.
Step 4 − 마지막으로 env 명령을 사용하여 환경 변수를 확인하십시오.
WORKDIR
이 명령은 컨테이너의 작업 디렉토리를 설정하는 데 사용됩니다.
통사론
WORKDIR dirname
옵션
dirname− 새로운 작업 디렉토리. 디렉토리가 없으면 추가됩니다.
반환 값
그에 따라 명령이 실행됩니다.
예
이 예에서는 간단한 echo Docker 파일에서 명령을 실행하고 이미지를 만들고 여기에서 컨테이너를 시작합니다.
Step 1 − 다음 명령을 사용하여 Docker 파일을 빌드합니다.
FROM ubuntu
MAINTAINER [email protected]
WORKDIR /newtemp
CMD pwd
Step 2 − Docker를 사용하여 이미지 빌드 build 명령.
Step 3 − 이미지에서 컨테이너를 실행합니다.
컨테이너 연결을 사용하면 여러 컨테이너를 서로 연결할 수 있습니다. 포트를 노출하는 것보다 더 나은 옵션입니다. 단계별로 가서 어떻게 작동하는지 알아 보겠습니다.
Step 1 − 아직없는 경우 Jenkins를 사용하여 Jenkins 이미지를 다운로드합니다. pull 명령.
Step 2 − 이미지를 사용할 수있게되면 컨테이너를 실행하되 이번에는 다음을 사용하여 컨테이너에 이름을 지정할 수 있습니다. –-name선택권. 이것은 우리가 될 것입니다source container.
Step 3− 다음으로 대상 컨테이너를 시작할 시간이지만 이번에는 소스 컨테이너와 연결합니다. 대상 컨테이너의 경우 표준 Ubuntu 이미지를 사용합니다.
당신이 할 때 docker ps, 두 컨테이너가 모두 실행중인 것을 볼 수 있습니다.
Step 4 − 이제 수납 용기에 부착합니다.
그런 다음 env명령. 소스 컨테이너와 연결하기위한 새 변수를 확인할 수 있습니다.
스토리지 드라이버
Docker에는 기본 스토리지 장치와 함께 작동 할 수있는 여러 스토리지 드라이버가 있습니다. 다음 표는 스토리지 드라이버에 사용되는 기술과 함께 다양한 스토리지 드라이버를 보여줍니다.
과학 기술 | 스토리지 드라이버 |
---|---|
OverlayFS | overlay 또는 overlay2 |
AUFS | aufs |
BTRFS | brtfs |
기기 관리자 | 기기 관리자 |
VFS | vfs |
ZFS | zfs |
이제 다양한 스토리지 드라이버를 사용하는 몇 가지 예를 살펴 보겠습니다.
AUFS
이것은 안정적인 드라이버입니다. 프로덕션 준비 애플리케이션에 사용할 수 있습니다.
메모리 사용량이 좋으며 컨테이너에 대한 원활한 Docker 경험을 보장하는 데 좋습니다.
고려해야 할이 드라이버와 관련된 높은 쓰기 활동이 있습니다.
Platform as a Service 유형의 시스템에 적합합니다.
Devicemapper
이것은 안정적인 드라이버입니다. 원활한 Docker 경험을 보장합니다.
이 드라이버는 실험실에서 응용 프로그램을 테스트하는 데 적합합니다.
이 드라이버는 주요 Linux 커널 기능과 일치합니다.
BTRFS
이 드라이버는 주요 Linux 커널 기능과 일치합니다.
고려해야 할이 드라이버와 관련된 높은 쓰기 활동이 있습니다.
이 드라이버는 여러 빌드 풀을 유지하는 인스턴스에 적합합니다.
Ovelay
이것은 안정적인 드라이버이며 주요 Linux 커널 기능과 일치합니다.
메모리 사용량이 좋습니다.
이 드라이버는 실험실에서 응용 프로그램을 테스트하는 데 적합합니다.
ZFS
이것은 안정적인 드라이버이며 실험실에서 응용 프로그램을 테스트하는 데 좋습니다.
Platform-as-a-Service 유형의 시스템에 적합합니다.
사용중인 스토리지 드라이버를 확인하려면 docker info 명령.
통사론
docker info
옵션
없음
반환 값
이 명령은 Docker 호스트에 설치된 Docker 구성 요소에 대한 모든 관련 정보를 제공합니다.
예
sudo docker info
산출
다음 출력은 사용 된 기본 드라이버가 aufs 드라이버와 루트 디렉토리가 /var/lib/docker/aufs.
데이터 볼륨
Docker에는 컨테이너간에 공유 할 수있는 별도의 볼륨이 있습니다. 이것들은data volumes. 데이터 볼륨의 일부 기능은-
- 컨테이너가 생성 될 때 초기화됩니다.
- 여러 컨테이너에서 공유하고 재사용 할 수도 있습니다.
- 볼륨 자체를 직접 변경할 수 있습니다.
- 컨테이너가 삭제 된 후에도 존재합니다.
Jenkins 컨테이너를 살펴 보겠습니다. 하자docker inspect이 이미지의 세부 사항을 보려면. 다음 명령을 실행하여docker inspect 명령을 텍스트 파일에 추가 한 다음 그에 따라 파일을 봅니다.
sudo docker inspect Jenkins > tmp.txt
텍스트 파일을 볼 때 more command, 항목이 다음과 같이 표시됩니다. JENKINS_HOME=/var/Jenkins_home.
이것은 Jenkins 이미지를 통해 컨테이너 내에서 수행되는 매핑입니다.
이제 컨테이너의 볼륨을 로컬 볼륨에 매핑하려는 경우 컨테이너를 시작할 때 –v 옵션을 지정해야합니다. 아래에 예가 나와 있습니다.
sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
–v 옵션은 다음과 같은 컨테이너의 볼륨을 매핑하는 데 사용됩니다. /var/jenkins_home Docker 호스트의 위치에 /home/demo.
이제 당신이 가면 /home/demo 컨테이너를 시작한 후 Docker 호스트의 위치를 확인하면 모든 컨테이너 파일이 표시됩니다.
컨테이너의 스토리지 드라이버 변경
컨테이너에 사용되는 스토리지 드라이버를 변경하려는 경우 컨테이너를 시작할 때 변경할 수 있습니다. 이것은 다음을 사용하여 수행 할 수 있습니다.–volume-driver 매개 변수를 사용할 때 docker run명령. 아래에 예가 나와 있습니다.
sudo docker run –d --volume-driver=flocker
–v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
그만큼 –volume-driver 옵션은 컨테이너에 대한 다른 스토리지 드라이버를 지정하는 데 사용됩니다.
드라이버가 변경되었는지 확인하려면 먼저 docker ps명령을 실행하여 실행중인 컨테이너를 확인하고 컨테이너 ID를 가져옵니다. 따라서 먼저 다음 명령을 실행하십시오.
sudo docker ps
그런 다음 docker inspect 컨테이너에 대해 명령을 사용하여 출력을 텍스트 파일에 넣습니다.
sudo docker inspect 9bffb1bfebee > temp.txt
텍스트 파일을 검색하고 다음 줄로 이동하면 VolumeDriver, 드라이버 이름이 변경된 것을 볼 수 있습니다.
볼륨 생성
볼륨은 다음을 사용하여 미리 생성 할 수 있습니다. docker명령. 이 명령에 대해 자세히 알아 보겠습니다.
통사론
docker volume create –-name=volumename –-opt options
옵션
name − 생성해야하는 볼륨의 이름입니다.
opt − 볼륨을 생성하는 동안 제공 할 수있는 옵션입니다.
반환 값
이 명령은 생성 된 볼륨의 이름을 출력합니다.
예
sudo docker volume create –-name = demo –opt o = size = 100m
위의 명령에서는 크기가 100MB이고 이름이 demo 인 볼륨을 생성합니다.
산출
위 명령의 출력은 다음과 같습니다.
모든 볼륨 나열
또한 모든 docker volumes 에 docker host. 이 명령에 대한 자세한 내용은 다음과 같습니다.
통사론
docker volume ls
옵션
없음
반환 값
이 명령은 모든 볼륨을 출력합니다. docker host.
예
sudo docker volume ls
산출
위 명령의 출력은 다음과 같습니다.
Docker는 컨테이너가 다른 컨테이너 및 Docker 호스트와 통신 할 수 있도록 네트워킹 측면을 처리합니다. 당신이 할 경우ifconfigDocker 호스트에서 Docker 이더넷 어댑터를 볼 수 있습니다. 이 어댑터는 Docker가 Docker 호스트에 설치 될 때 생성됩니다.
이것은 Docker 호스트와 Linux 호스트 사이의 다리입니다. 이제 Docker의 네트워킹과 관련된 몇 가지 명령을 살펴 보겠습니다.
모든 Docker 네트워크 나열
이 명령은 호스트의 Docker와 연결된 모든 네트워크를 나열하는 데 사용할 수 있습니다.
통사론
docker network ls
옵션
없음
반환 값
이 명령은 Docker 호스트의 모든 네트워크를 출력합니다.
예
sudo docker network ls
산출
위 명령의 출력은 다음과 같습니다.
Docker 네트워크 검사
Docker와 관련된 네트워크에 대한 자세한 내용을 보려면 Docker를 사용할 수 있습니다. network inspect 명령.
통사론
docker network inspect networkname
옵션
networkname − 이것은 검사해야하는 네트워크의 이름입니다.
반환 값
이 명령은 네트워크에 대한 모든 세부 정보를 출력합니다.
예
sudo docker network inspect bridge
산출
위 명령의 출력은 다음과 같습니다.
이제 컨테이너를 실행하고 네트워크를 다시 검사 할 때 어떤 일이 발생하는지 살펴 보겠습니다. 다음 명령을 사용하여 Ubuntu 컨테이너를 회전 해 보겠습니다.
sudo docker run –it ubuntu:latest /bin/bash
이제 다음 명령을 통해 네트워크 이름을 검사하면 컨테이너가 브리지에 연결되어 있음을 알 수 있습니다.
sudo docker network inspect bridge
나만의 새 네트워크 만들기
컨테이너를 시작하기 전에 Docker에서 네트워크를 만들 수 있습니다. 이것은 다음 명령으로 수행 할 수 있습니다-
통사론
docker network create –-driver drivername name
옵션
drivername − 네트워크 드라이버에 사용되는 이름입니다.
name − 이것은 네트워크에 부여 된 이름입니다.
반환 값
이 명령은 새 네트워크에 대한 긴 ID를 출력합니다.
예
sudo docker network create –-driver bridge new_nw
산출
위 명령의 출력은 다음과 같습니다.
이제 컨테이너를 시작할 때 새 네트워크를 연결할 수 있습니다. 이제 다음 명령을 사용하여 Ubuntu 컨테이너를 회전 해 보겠습니다.
sudo docker run –it –network=new_nw ubuntu:latest /bin/bash
이제 다음 명령을 통해 네트워크를 검사하면 네트워크에 연결된 컨테이너를 볼 수 있습니다.
sudo docker network inspect new_nw
Node.js는 서버 측 애플리케이션 개발에 사용되는 JavaScript 프레임 워크입니다. 다양한 운영 체제에서 실행되도록 개발 된 오픈 소스 프레임 워크입니다. Node.js는 개발에 널리 사용되는 프레임 워크이므로 Docker는 Node.js 애플리케이션에 대한 지원도 보장했습니다.
이제 Node.js 용 Docker 컨테이너를 시작하고 실행하기위한 다양한 단계를 살펴 보겠습니다.
Step 1− 첫 번째 단계는 Docker Hub에서 이미지를 가져 오는 것입니다. Docker Hub에 로그인하면 아래와 같이 Node.js의 이미지를 검색하고 볼 수 있습니다. 검색 창에 노드를 입력하고 검색 결과에 나타나는 노드 (공식) 링크를 클릭하면됩니다.
Step 2 − Docker가 pull Docker Hub의 리포지토리 세부 정보에서 노드에 대한 명령.
Step 3 − Docker 호스트에서 Docker를 사용합니다. pull Docker Hub에서 최신 노드 이미지를 다운로드하려면 위와 같이 명령을 실행하십시오.
일단 pull 완료되면 다음 단계를 진행할 수 있습니다.
Step 4 − Docker 호스트에서 vim편집기를 열고 하나의 Node.js 예제 파일을 만듭니다. 이 파일에서 "HelloWorld"를 명령 프롬프트에 표시하는 간단한 명령을 추가합니다.
Node.js 파일에서 다음 문을 추가해 보겠습니다.
Console.log(‘Hello World’);
그러면 Node.js를 통해 실행할 때 "Hello World"구문이 출력됩니다.
파일을 저장했는지 확인하고 다음 단계로 진행하십시오.
Step 5 − Node Docker 컨테이너를 사용하여 Node.js 스크립트를 실행하려면 다음 문을 실행해야합니다.
sudo docker run –it –rm –name = HelloWorld –v “$PWD”:/usr/src/app
–w /usr/src/app node node HelloWorld.js
위의 명령에 대해 다음 사항에 유의해야합니다.
그만큼 –rm 옵션은 실행 후 컨테이너를 제거하는 데 사용됩니다.
"HelloWorld"라는 컨테이너에 이름을 지정합니다.
우리는 컨테이너의 볼륨을 매핑하기 위해 언급하고 있습니다. /usr/src/app현재 현재 작업 디렉토리에. 이것은 노드 컨테이너가 Docker 호스트의 작업 디렉토리에있는 HelloWorld.js 스크립트를 선택하도록 수행됩니다.
그만큼 –w 옵션은 Node.js가 사용하는 작업 디렉토리를 지정하는 데 사용됩니다.
첫 번째 노드 옵션은 노드 이미지 실행을 지정하는 데 사용됩니다.
두 번째 노드 옵션은 노드 컨테이너에서 node 명령을 실행하기 위해 언급하는 데 사용됩니다.
마지막으로 스크립트 이름을 언급합니다.
그러면 다음과 같은 출력이 표시됩니다. 출력에서 Node 컨테이너가 컨테이너로 실행되고 HelloWorld.js 스크립트를 실행했음을 분명히 알 수 있습니다.
MongoDB는 많은 현대 웹 애플리케이션에서 사용되는 유명한 문서 지향 데이터베이스입니다. MongoDB는 개발에 널리 사용되는 데이터베이스이므로 Docker는 MongoDB에 대한 지원도 보장했습니다.
이제 MongoDB 용 Docker 컨테이너를 시작하고 실행하기위한 다양한 단계를 살펴 보겠습니다.
Step 1− 첫 번째 단계는 Docker Hub에서 이미지를 가져 오는 것입니다. Docker Hub에 로그인하면 아래와 같이 Mongo에 대한 이미지를 검색하고 볼 수 있습니다. 검색 창에 Mongo를 입력하고 검색 결과에 나타나는 Mongo (공식) 링크를 클릭하세요.
Step 2 − Docker가 pull Docker Hub의 리포지토리 세부 정보에서 Mongo에 대한 명령.
Step 3 − Docker 호스트에서 Docker를 사용합니다. pull Docker Hub에서 최신 Mongo 이미지를 다운로드하려면 위의 명령을 사용하십시오.
Step 4− 이제 Mongo 용 이미지가 생겼으므로 먼저 MongoDB 용 인스턴스가 될 MongoDB 컨테이너를 실행 해 보겠습니다. 이를 위해 다음 명령을 실행합니다.
sudo docker run -it -d mongo
위의 명령에 대해 다음 사항을 확인할 수 있습니다.
그만큼 –it 옵션은 대화 형 모드에서 컨테이너를 실행하는 데 사용됩니다.
그만큼 –d 옵션은 컨테이너를 데몬 프로세스로 실행하는 데 사용됩니다.
마지막으로 Mongo 이미지에서 컨테이너를 만듭니다.
그런 다음 docker ps 실행중인 컨테이너를 확인하는 명령-
다음 사항에 유의하십시오.
컨테이너의 이름은 tender_poitras. 컨테이너를 회전 할 때 컨테이너 이름이 계속 변경되므로이 이름은 달라집니다. 하지만 실행 한 컨테이너를 기록해 두십시오.
다음으로 실행중인 포트 번호도 확인하십시오. 27017의 TCP 포트에서 수신 대기 중입니다.
Step 5− 이제 MongoDB 데이터베이스에 연결하는 데 사용할 클라이언트 역할을 할 다른 컨테이너를 가동 해 보겠습니다. 이를 위해 다음 명령을 실행 해 보겠습니다.
sudo docker run –it –link=tender_poitras:mongo mongo /bin/bash
위의 명령에 대해 다음 사항을 확인할 수 있습니다.
그만큼 –it 옵션은 대화 형 모드에서 컨테이너를 실행하는 데 사용됩니다.
이제 새 컨테이너를 이미 출시 된 MongoDB 서버 컨테이너에 연결하고 있습니다. 여기에서 이미 시작된 컨테이너의 이름을 언급해야합니다.
그런 다음 Mongo 컨테이너를 클라이언트로 시작한 다음 bin/bash 새 컨테이너에 쉘을 넣습니다.
이제 새 컨테이너에있게됩니다.
Step 6 − 실행 env MongoDB 서버 컨테이너에 연결하는 방법에 대한 세부 정보를 보려면 새 컨테이너에서 명령을 실행하십시오.
Step 6− 이제 클라이언트 컨테이너에서 MongoDB 서버에 연결할 때입니다. 다음 명령을 통해이 작업을 수행 할 수 있습니다.
mongo 172.17.0.2:27017
위 명령에 대해 다음 사항에 유의해야합니다.
그만큼 mongo 명령은 클라이언트입니다 mongo MongoDB 데이터베이스에 연결하는 데 사용되는 명령입니다.
IP 및 포트 번호는 env 명령.
명령을 실행하면 MongoDB 데이터베이스에 연결됩니다.
그런 다음 명령 프롬프트에서 MongoDB 명령을 실행할 수 있습니다. 이 예에서는 다음 명령을 실행합니다.
use demo
이 명령은 데이터베이스 이름으로 전환하는 데 사용되는 MongoDB 명령입니다. demo. 데이터베이스를 사용할 수없는 경우 생성됩니다.
이제 클라이언트 및 서버 MongoDB 컨테이너를 성공적으로 만들었습니다.
NGINX는 서버 측 애플리케이션 개발에 사용되는 널리 사용되는 경량 웹 애플리케이션입니다. 다양한 운영 체제에서 실행되도록 개발 된 오픈 소스 웹 서버입니다. 이후nginx 개발 용으로 널리 사용되는 웹 서버이며 Docker는 nginx.
이제 Docker 컨테이너를 가져 오는 다양한 단계를 살펴 보겠습니다. nginx 실행 중입니다.
Step 1− 첫 번째 단계는 Docker Hub에서 이미지를 가져 오는 것입니다. Docker Hub에 로그인하면 다음에 대한 이미지를 검색하고 볼 수 있습니다.nginx아래 그림과 같이. 검색 창에 nginx를 입력하고nginx 검색 결과에 나타나는 (공식) 링크.
Step 2 − Docker가 pull 명령 nginx Docker Hub의 저장소 세부 정보에서.
Step 3 − Docker 호스트에서 Docker를 사용합니다. pull Docker Hub에서 최신 nginx 이미지를 다운로드하려면 위의 명령을 사용하십시오.
Step 4 − 이제 nginx 다음 명령을 통해 컨테이너.
sudo docker run –p 8080:80 –d nginx
우리는에 포트를 노출하고 있습니다 nginx 포트 80에서 Docker 호스트의 포트 8080으로 연결되는 서버.
명령을 실행 한 후 URL로 이동하면 다음 출력이 표시됩니다. http://dockerhost:8080. 이것은nginx 컨테이너가 실행 중입니다.
Step 5 − 간단한 웹 페이지를 호스팅 할 수있는 또 다른 예를 살펴 보겠습니다. ngnix컨테이너. 이 예에서는 간단한HelloWorld.html 파일 및 호스팅 nginx 컨테이너.
먼저 HTML 파일을 만들어 보겠습니다. HelloWorld.html
HTML 파일에 Hello World의 간단한 줄을 추가해 보겠습니다.
그런 다음 다음 Docker 명령을 실행 해 보겠습니다.
sudo docker run –p 8080:80 –v
“$PWD”:/usr/share/nginx/html:ro –d nginx
위의 명령에 대해 다음 사항에 유의해야합니다.
우리는에 포트를 노출하고 있습니다 nginx 포트 80에서 Docker 호스트의 포트 8080으로 연결되는 서버.
다음으로 컨테이너에 볼륨을 연결합니다. /usr/share/nginx/html현재 작업 디렉토리에. 여기에 HelloWorld.html 파일이 저장됩니다.
이제 URL로 이동하면 http://dockerhost:8080/HelloWorld.html 예상대로 다음과 같은 출력을 얻습니다.
소개 장에서 Windows에 Docker 도구 상자를 설치하는 방법을 살펴 보았습니다. Docker 도구 상자는 Windows 및 MacOS에서 Docker 컨테이너를 실행할 수 있도록 개발되었습니다. Windows의 도구 상자 사이트는https://docs.docker.com/docker-for-windows/
Windows의 경우 Hyper-V가 활성화 된 Windows 10 또는 Windows Server 2016이 있어야합니다.
도구 상자는 다음 구성 요소로 구성됩니다.
Docker Engine − Docker 컨테이너를 실행하는 데 사용되는 기본 엔진 또는 Docker 데몬으로 사용됩니다.
Docker Machine − Docker 머신 명령 실행 용.
Docker Compose Docker compose 명령을 실행합니다.
Kinematic − Windows 및 Mac OS 용으로 구축 된 Docker GUI입니다.
Oracle virtualbox
이제 Docker 도구 상자로 가능한 다양한 유형의 활동에 대해 설명하겠습니다.
Powershell에서 실행
Windows 10의 Docker 도구 상자를 사용하여 이제 Docker 명령을 실행할 수 있습니다. powershell. Windows에서 powershell을 열고 Docker 버전의 명령을 입력하면 설치된 Docker 버전에 대한 모든 필수 세부 정보를 얻을 수 있습니다.
이미지 가져 오기 및 컨테이너 실행
이제 Linux 에서처럼 Docker Hub에서 이미지를 가져오고 powershell에서 컨테이너를 실행할 수도 있습니다. 다음 예제는 Ubuntu 이미지를 다운로드하고 이미지에서 컨테이너를 실행하는 방법을 간략하게 보여줍니다.
첫 번째 단계는 Docker를 사용하는 것입니다. pull Docker Hub에서 Ubuntu 이미지를 가져 오는 명령.
다음 단계는 다음을 사용하여 Docker 이미지를 실행하는 것입니다. run 명령-
docker run –it ubuntu /bin/bash
명령이 Linux에서와 동일하다는 것을 알 수 있습니다.
연
이것은 Windows의 Docker에 해당하는 GUI입니다. 이 GUI를 열려면 작업 표시 줄로 이동하고 Docker 아이콘에서 마우스 오른쪽 버튼을 클릭하고 Kitematic을 열도록 선택합니다.
Kitematic GUI를 다운로드하라는 메시지가 표시됩니다. 다운로드가 완료되면 콘텐츠의 압축을 풉니 다. 라는 파일이 있습니다.Kitematic.exe. 이 exe 파일을 두 번 클릭하여 GUI 인터페이스를 엽니 다.
그런 다음 Docker Hub에 로그인하고 GUI를 통해 입력하라는 메시지가 표시됩니다. 필요한 사용자 이름과 비밀번호를 입력 한 다음 로그인 버튼을 클릭하면됩니다.
로그인하면 인터페이스 왼쪽에서 시스템에 다운로드 된 모든 이미지를 볼 수 있습니다.
오른쪽에는 Docker Hub에서 사용할 수있는 모든 이미지가 있습니다.
Kitematic을 사용하여 Docker Hub에서 노드 이미지를 다운로드하는 방법을 이해하는 예제를 살펴 보겠습니다.
Step 1 − 검색 기준에 노드의 키워드를 입력합니다.
Step 2 − 클릭 create공식 Node 이미지의 버튼. 그러면 이미지가 다운로드되는 것을 볼 수 있습니다.
이미지가 다운로드되면 노드 컨테이너 실행이 시작됩니다.
Step 3 − 당신이 settings 탭에서 아래와 같이 추가 설정 옵션으로 드릴 다운 할 수 있습니다.
General settings −이 탭에서 컨테이너 이름을 지정하고 경로 설정을 변경하고 컨테이너를 삭제할 수 있습니다.
Ports− 여기에서 다른 포트 매핑을 볼 수 있습니다. 원하는 경우 고유 한 포트 매핑을 만들 수 있습니다.
Volumes − 여기에서 다른 볼륨 매핑을 볼 수 있습니다.
Advanced − 컨테이너에 대한 고급 설정이 포함되어 있습니다.
ASP.Net은 서버 측 응용 프로그램을 개발하기 위해 Microsoft에서 제공하는 표준 웹 개발 프레임 워크입니다. ASP.Net은 개발을 위해 꽤 오랫동안 사용되어 왔기 때문에 Docker는 ASP.Net에 대한 지원을 보장했습니다.
이 장에서는 ASP.Net 용 Docker 컨테이너를 시작하고 실행하기위한 다양한 단계를 살펴 봅니다.
전제 조건
ASP.Net을 실행하려면 먼저 다음 단계를 수행해야합니다.
Step 1 − Windows 시스템에서만 실행할 수 있으므로 먼저 Windows 10 또는 Window Server 2016이 있는지 확인해야합니다.
Step 2− 다음으로 Windows 시스템에 Hyper-V가 설치되어 있고 컨테이너가 설치되어 있는지 확인합니다. Hyper–V 및 컨테이너를 설치하려면 Windows 기능 켜기 또는 끄기로 이동하면됩니다. 그런 다음 Hyper-V 옵션과 컨테이너가 선택되어 있는지 확인하고 확인 버튼을 클릭합니다.
이 작업 후에 시스템을 다시 시작해야 할 수 있습니다.
Step 3 − 다음으로 다음 Powershell 명령을 사용하여 1.13.0rc4Docker 버전. 다음 명령은 이것을 다운로드하여 임시 위치에 저장합니다.
Invoke-WebRequest "https://test.docker.com/builds/Windows/x86_64/docker-1.13.0-
rc4.zip" -OutFile "$env:TEMP\docker-1.13.0-rc4.zip" –UseBasicParsing
Step 4 − 다음으로 다음을 사용하여 아카이브를 확장해야합니다. powershell 명령.
Expand-Archive -Path "$env:TEMP\docker-1.13.0-rc4.zip" -DestinationPath $env:ProgramFiles
Step 5 − 다음으로 다음을 사용하여 환경 변수에 Docker 파일을 추가해야합니다. powershell 명령.
$env:path += ";$env:ProgramFiles\Docker"
Step 6 − 다음으로 다음을 사용하여 Docker Daemon Service를 등록해야합니다. powershell 명령.
dockerd --register-service
Step 7 − 마지막으로 docker daemon 다음 명령을 사용하십시오.
Start-Service Docker
사용 docker version 명령 powershell 확인하기 위해 docker daemon 일하고있다
ASP.Net 컨테이너 설치
ASP.Net 컨테이너를 설치하는 방법을 살펴 보겠습니다.
Step 1− 첫 번째 단계는 Docker Hub에서 이미지를 가져 오는 것입니다. Docker Hub에 로그인하면 다음에 대한 이미지를 검색하고 볼 수 있습니다.Microsoft/aspnet아래 그림과 같이. 그냥 입력asp 검색 상자에서 검색 결과에 나타나는 Microsoft / aspnet 링크를 클릭합니다.
Step 2 − Docker가 pull Docker Hub의 저장소 세부 정보에서 ASP.Net에 대한 명령.
Step 3 − Docker 호스트로 이동하여 Docker를 실행하십시오. pullmicrosoft / aspnet 이미지에 대한 명령입니다. 이미지는 4.2GB에 가까운 상당히 큽니다.
Step 4 − 이제 다음 위치로 이동 https://github.com/Microsoft/aspnet-docker 전체 Git 저장소를 다운로드합니다.
Step 5 −라는 폴더를 만듭니다. AppC 드라이브에서. 그런 다음4.6.2/sample폴더를 C 드라이브에 추가합니다. 샘플 디렉토리의 Docker 파일로 이동하여 다음 명령을 실행하십시오.
docker build –t aspnet-site-new –build-arg site_root=/
위의 명령에 대해 다음 사항에 유의해야합니다.
- 라는 새 이미지를 만듭니다. aspnet-site-new Docker 파일에서.
- 루트 경로는 localpath 폴더로 설정됩니다.
Step 6− 이제 컨테이너를 실행할 시간입니다. 다음 명령을 사용하여 수행 할 수 있습니다-
docker run –d –p 8000:80 –name my-running-site-new aspnet-site-new
Step 7− 이제 Docker 컨테이너에서 IIS가 실행됩니다. Docker 컨테이너의 IP 주소를 찾으려면 Docker를 발행 할 수 있습니다.inspect 아래와 같이 명령.
Docker Cloud는 Docker에서 제공하는 서비스로 다음 작업을 수행 할 수 있습니다.
Nodes − Docker Cloud를 Azure 및 AWS와 같은 기존 클라우드 공급자에 연결하여 이러한 환경에서 컨테이너를 가동 할 수 있습니다.
Cloud Repository − 자신의 저장소를 저장할 수있는 장소를 제공합니다.
Continuous Integration − 연결 Github 지속적인 통합 파이프 라인을 구축합니다.
Application Deployment − 인프라와 컨테이너를 배포하고 확장합니다.
Continuous Deployment − 배포를 자동화 할 수 있습니다.
시작하기
Docker Cloud를 시작하려면 다음 링크로 이동할 수 있습니다. https://cloud.docker.com/
로그인하면 다음과 같은 기본 인터페이스가 제공됩니다.
클라우드 공급자에 연결
첫 번째 단계는 기존 클라우드 제공 업체에 연결하는 것입니다. 다음 단계는 Amazon Cloud 공급자와 연결하는 방법을 보여줍니다.
Step 1− 첫 번째 단계는 올바른 AWS 키가 있는지 확인하는 것입니다. 이것은에서 가져올 수 있습니다aws콘솔. 귀하의aws 다음 링크를 사용하여 계정-
Step 2− 로그인 한 후 보안 자격 증명 섹션으로 이동합니다. Docker Hub에서 사용될 액세스 키를 기록해 둡니다.
Step 3 − 다음으로, 다음에서 정책을 생성해야합니다. aws그러면 Docker가 EC2 인스턴스를 볼 수 있습니다. 의 프로필 섹션으로 이동aws. 클릭Create Policy 단추.
Step 4 − 'Create Your Own Policy'를 클릭하고 정책 이름을 다음과 같이 지정하십시오. dockercloudpolicy 및 정책 정의는 아래와 같습니다.
{
"Version": "2012-10-17",
"Statement": [ {
"Action": [
"ec2:*",
"iam:ListInstanceProfiles"
],
"Effect": "Allow",
"Resource": "*"
} ]
}
다음으로 Create Policy 단추
Step 5 − 다음으로, roleDocker가 AWS에서 노드를 스핀 업하는 데 사용됩니다. 이를 위해Roles 섹션을 클릭하고 Create New Role 선택권.
Step 6 − 역할 이름을 다음과 같이 지정하십시오. dockercloud-role.
Step 7 − 다음 화면에서 'Role for Cross Account Access'로 이동하여 "Provide access between your account and a third party AWS account"를 선택합니다.
Step 8 − 다음 화면에서 다음 정보를 입력하세요 −
- 계정 ID 필드에 Docker 클라우드 서비스의 ID : 689684103426을 입력하십시오.
- 외부 ID 필드에 Docker Cloud 사용자 이름을 입력합니다.
Step 9 − 그런 다음 Next Step 버튼을 누르고 다음 화면에서 이전 단계에서 생성 한 정책을 첨부합니다.
Step 10 − 마지막으로 역할이 생성 된 마지막 화면에서 arn 생성 된 역할.
arn:aws:iam::085363624145:role/dockercloud-role
Step 11 − 이제 돌아 가기 Docker Cloud, 고르다 Cloud Providers을 클릭하고 plug symbol Amazon Web Services 옆에 있습니다.
들어가다 arn 역할을 클릭하고 Save 단추.
저장되면 AWS와의 통합이 완료됩니다.
노드 설정
AWS와의 통합이 완료되면 다음 단계는 노드를 설정하는 것입니다. Docker Cloud의 노드 섹션으로 이동하십시오. 노드를 설정하면 먼저 노드 클러스터가 자동으로 설정됩니다.
Step 1 − Docker Cloud의 노드 섹션으로 이동합니다.
Step 2 − 다음으로 AWS에서 설정할 노드의 세부 정보를 제공 할 수 있습니다.
그런 다음 화면 하단에있는 Launch Node 클러스터를 클릭 할 수 있습니다. 노드가 배포되면 노드 클러스터 화면에 알림이 표시됩니다.
서비스 배포
노드 배포 후 다음 단계는 서비스를 배포하는 것입니다. 이렇게하려면 다음 단계를 수행해야합니다.
Step 1 − 다음으로 이동 Services SectionDocker Cloud에서. 클릭Create 단추
Step 2− 필요한 서비스를 선택하십시오. 우리의 경우 선택합시다mongo.
Step 3 − 다음 화면에서 Create & Deploy선택권. 배포가 시작됩니다.Mongo 노드 클러스터의 컨테이너.
배포되면 실행중인 상태의 컨테이너를 볼 수 있습니다.
Docker에는 문제가 발생할 때 문제를 디버깅하는 데 사용할 수있는 로깅 메커니즘이 있습니다. 에 로깅이 있습니다daemon level 그리고 container level. 다양한 로깅 수준을 살펴 보겠습니다.
데몬 로깅
데몬 로깅 수준에서는 4 가지 수준의 로깅을 사용할 수 있습니다.
Debug − 데몬 프로세스에서 처리 할 수있는 모든 정보를 자세히 설명합니다.
Info − 모든 오류 + 데몬 프로세스에서 처리하는 정보를 자세히 설명합니다.
Errors − 데몬 프로세스에서 처리 한 모든 오류에 대해 자세히 설명합니다.
Fatal − 데몬 프로세스에서 처리 한 모든 치명적인 오류 만 자세히 설명합니다.
로깅을 활성화하는 방법을 알아 보려면 다음 단계를 따르십시오.
Step 1 − 먼저 docker daemon process, 이미 실행중인 경우. 다음 명령을 사용하여 수행 할 수 있습니다-
sudo service docker stop
Step 2 − 이제 우리는 docker daemon process. 하지만 이번에는–l로깅 옵션을 지정하는 매개 변수. 따라서 시작할 때 다음 명령을 실행하겠습니다.docker daemon process.
sudo dockerd –l debug &
위의 명령에 대해 다음 사항에 유의해야합니다.
dockerd 에 대한 실행 파일입니다 docker daemon process.
그만큼 –l옵션은 로깅 수준을 지정하는 데 사용됩니다. 우리의 경우에는 이것을 디버그
& 로깅이 활성화 된 후 명령 프롬프트로 돌아 오는 데 사용됩니다.
로깅을 사용하여 Docker 프로세스를 시작하면 이제 Debug Logs 콘솔로 전송됩니다.
이제 다음과 같은 Docker 명령을 실행하면 docker images, 디버그 정보도 콘솔로 전송됩니다.
컨테이너 로깅
로깅은 컨테이너 수준에서도 사용할 수 있습니다. 따라서이 예에서는 먼저 Ubuntu 컨테이너를 회전 해 보겠습니다. 다음 명령을 사용하여 수행 할 수 있습니다.
sudo docker run –it ubuntu /bin/bash
이제 우리는 docker log command 컨테이너의 로그를 확인합니다.
통사론
Docker logs containerID
매개 변수
containerID − 이것은 로그를 확인해야하는 컨테이너의 ID입니다.
예
Docker 호스트에서 다음 명령을 실행 해 보겠습니다. 그 전에 컨테이너에있는 동안 몇 가지 명령을 실행할 수 있습니다.
sudo docker logs 6bfb1271fcdd
산출
출력에서 컨테이너에서 실행 된 명령이 로그에 표시되는 것을 볼 수 있습니다.
Docker Compose여러 컨테이너를 단일 서비스로 실행하는 데 사용됩니다. 예를 들어, NGNIX 및 MySQL이 필요한 애플리케이션이 있다고 가정하면 각 컨테이너를 개별적으로 시작할 필요없이 두 컨테이너를 서비스로 시작하는 하나의 파일을 만들 수 있습니다.
이 장에서는 Docker Compose를 시작하는 방법을 알아 봅니다. 그런 다음 Docker Compose를 사용하여 MySQL 및 NGNIX를 사용하여 간단한 서비스를 시작하고 실행하는 방법을 살펴 보겠습니다.
Docker Compose ─ 설치
Docker Compose를 시작하고 실행하려면 다음 단계를 따라야합니다.
Step 1 − 필요한 파일을 github 다음 명령을 사용하여-
curl -L "https://github.com/docker/compose/releases/download/1.10.0-rc2/dockercompose
-$(uname -s) -$(uname -m)" -o /home/demo/docker-compose
위의 명령은이 기사를 작성하는 시점에 최신 버전의 Docker Compose를 다운로드합니다. 1.10.0-rc2. 그런 다음 디렉토리에 저장합니다./home/demo/.
Step 2 − 다음으로, 우리는 execute privileges 다음 명령을 사용하여 다운로드 한 Docker Compose 파일에 추가합니다.
chmod +x /home/demo/docker-compose
그런 다음 다음 명령을 사용하여 compose 버전.
통사론
docker-compose version
매개 변수
version − 이것은 버전의 세부 정보를 원함을 지정하는 데 사용됩니다. Docker Compose.
산출
Docker Compose의 버전 세부 정보가 표시됩니다.
예
다음 예는 docker-compose 버전.
sudo ./docker-compose -version
산출
그러면 다음 출력이 표시됩니다.
첫 번째 Docker-Compose 파일 생성
이제 첫 번째 Docker Compose 파일을 만들어 보겠습니다. 모든 Docker Compose 파일은 YAML 파일입니다. vim 편집기를 사용하여 만들 수 있습니다. 따라서 다음 명령을 실행하여compose 파일-
sudo vim docker-compose.yml
이 파일의 다양한 세부 사항을 자세히 살펴 보겠습니다.
그만큼 database 과 web키워드는 두 개의 개별 서비스를 정의하는 데 사용됩니다. 하나는 우리를 실행할 것입니다mysql 데이터베이스와 다른 하나는 nginx 웹 서버.
그만큼 image 키워드는 이미지를 지정하는 데 사용됩니다. dockerhub 우리를 위해 mysql 과 nginx 용기
데이터베이스의 경우 포트 키워드를 사용하여 노출해야하는 포트를 언급합니다. mysql.
그리고 다음에 대한 환경 변수도 지정합니다. mysql 실행에 필요한 mysql.
이제 다음 명령을 사용하여 Docker Compose 파일을 실행 해 보겠습니다.
sudo ./docker-compose up
이 명령은 docker-compose.yml 로컬 디렉토리에 파일을 저장하고 컨테이너 빌드를 시작하십시오.
실행되면 모든 이미지가 다운로드를 시작하고 컨테이너가 자동으로 시작됩니다.
그리고 당신이 할 때 docker ps, 컨테이너가 실제로 실행되고 있음을 알 수 있습니다.
Docker는 다음과 같은 널리 사용되는 CI 도구를 포함하는 많은 지속적 통합 도구와 통합되어 있습니다. Jenkins. Jenkins 내에는 컨테이너 작업에 사용할 수있는 플러그인이 있습니다. 이제 Jenkins 도구에 사용할 수있는 Docker 플러그인을 빠르게 살펴 보겠습니다.
단계별로 가서 Docker 컨테이너 용 Jenkins에서 사용할 수있는 기능을 살펴 보겠습니다.
Step 1 − Jenkins 대시 보드로 이동하여 Manage Jenkins.
Step 2 − 이동 Manage Plugins.
Step 3− Docker 플러그인을 검색합니다. Docker 플러그인을 선택하고Install without restart 단추.
Step 4− 설치가 완료되면 Jenkins 대시 보드의 작업으로 이동합니다. 이 예에서 우리는Demo.
Step 5 − 작업에서 빌드 단계로 이동하면 이제 컨테이너를 시작 및 중지하는 옵션을 볼 수 있습니다.
Step 6− 간단한 예로, 빌드가 완료되면 컨테이너를 중지하는 추가 옵션을 선택할 수 있습니다. 그런 다음Save 단추.
이제 Jenkins에서 작업을 실행하십시오. 이제 콘솔 출력에서 모든 컨테이너 중지 명령이 실행되었음을 확인할 수 있습니다.
Kubernetes는 컨테이너를 외부 세계에 서비스로 노출하는 데 도움이되는 Docker 컨테이너 용 오케스트레이션 프레임 워크입니다. 예를 들어, 두 개의 서비스를 가질 수 있습니다. 하나의 서비스에는nginx 과 mongoDB, 다른 서비스에는 nginx 과 redis. 각 서비스는 다른 응용 프로그램에서 연결할 수있는 IP 또는 서비스 지점을 가질 수 있습니다. 그런 다음 Kubernetes를 사용하여 이러한 서비스를 관리합니다.
다음 다이어그램은 아키텍처 관점에서 Kubernetes가 작동하는 방식을 단순한 형식으로 보여줍니다.
그만큼 minion모든 서비스가 실행되는 노드입니다. 한 번에 여러 미니언을 실행할 수 있습니다. 각 미니언은 하나 이상의 POD를 호스팅합니다. 마다POD서비스를 호스팅하는 것과 같습니다. 그러면 각 POD에는 Docker 컨테이너가 포함됩니다. 각 POD는 서로 다른 Docker 컨테이너 세트를 호스팅 할 수 있습니다. 그런 다음 프록시는 이러한 서비스가 외부에 노출되는 것을 제어하는 데 사용됩니다.
Kubernetes에는 아키텍처에 여러 구성 요소가 있습니다. 각 구성 요소의 역할은 아래에 설명되어 있습니다. & mius;
etcd −이 구성 요소는 고 가용성입니다. key-value 저장에 사용되는 상점 shared configuration 과 service discovery. 여기에서 다양한 애플리케이션은 다음을 통해 서비스에 연결할 수 있습니다.discovery service.
Flannel − 컨테이너에 필요한 백엔드 네트워크입니다.
kube-apiserver − Docker 컨테이너를 조정하는 데 사용할 수있는 API입니다.
kube-controller-manager − 이것은 제어하는 데 사용됩니다 Kubernetes services.
kube-scheduler − 호스트에서 컨테이너를 예약하는 데 사용됩니다.
Kubelet − 이것은 다음을 통해 컨테이너 발사를 제어하는 데 사용됩니다. manifest files.
kube-proxy − 외부에 네트워크 프록시 서비스를 제공하기 위해 사용됩니다.
이 장에서는 설치 방법을 살펴 보겠습니다. Kubenetes 통하다 kubeadm. 이것은 Kubernetes 설치를 돕는 도구입니다. 단계별로 가서 Kubernetes를 설치하는 방법을 알아 보겠습니다.
Step 1 − Ubuntu server version 당신이 작업하고있는 것은 16.04.
Step 2 − 다음을 생성해야합니다. ssh 사용할 수있는 키 ssh로그인. 다음 명령을 사용하여이를 수행 할 수 있습니다.
ssh-keygen
그러면 키가 생성됩니다. home folder 아래 그림과 같이.
Step 3 − 다음으로, 가지고있는 Ubuntu 버전에 따라 관련 사이트를 추가해야합니다. docker.list 에 대한 apt package manager, 감지 할 수 있도록 Kubernetes packages ~로부터 kubernetes 사이트에서 다운로드하십시오.
다음 명령을 사용하여 수행 할 수 있습니다.
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/docker.list
Step 4 − 그런 다음 apt-get 업데이트를 발행하여 모든 패키지가 Ubuntu 서버에 다운로드되었는지 확인합니다.
Step 5 − 이전 장에서 설명한대로 Docker 패키지를 설치합니다.
Step 6 − 이제 설치할 시간입니다. kubernetes 다음 패키지를 설치하여-
apt-get install –y kubelet kubeadm kubectl kubernetes-cni
Step 7 − 일단 kubernetes 패키지가 다운로드되면 다음 명령을 사용하여 kubernetes 컨트롤러를 시작할 시간입니다.
kubeadm init
완료되면 마스터가 실행 중이며 이제 노드가 클러스터에 참여할 수 있다는 성공적인 메시지가 표시됩니다.