도커 기본 설치 및 배포

부두 노동자

1 도커 프로필

1.1 가상화 란 무엇인가

컴퓨터에서 가상화 (영어 : 가상화) 자원 관리 기술은 다양한 개체가이다 등 서버, 네트워크, 메모리, 저장 장치 등 컴퓨터의 자원, 간 기업 구조를 깰 전환 이후 소개 된, 추상적 인 수하는 사용자가 이러한 리소스를 사용하는 원래의 더 나은 방법보다 구성 할 수 있도록 장애물, 컷 수 없습니다. 이 새로운 가상 자원의 대부분은 기존 자원을 설정하는 방법이 아니다, 지리적 또는 물리적 구성이 제한됩니다. 가상화 된 자원들은 일반적으로 컴퓨팅 파워 및 데이터 저장을 포함 함.

실제 생산 환경에서 가상화 기술은 주로 고성능 물리적 하드웨어 과잉을 해결하기 위해 사용되며, 기존의 기존의 하드웨어 용량은 물리적 하드웨어 자원의 사용을 최대화하기 위해 물리적 하드웨어의 기초가 너무 낮은 개편 재사용, 투명성 을 최대한 활용

그래서 소프트웨어 가상화 및 하드웨어 가상화, 메모리 가상화, 네트워크 가상화 (VIP), 데스크톱 가상화, 서비스 가상화, 가상 머신, 그리고 : 같은 가상화 기술의 많은 종류.

1.2 도커 무엇입니까

고정 표시기가,가 2013 년 초에 태어난 오픈 소스 프로젝트, 그것은 처음에 아마추어 프로젝트 내부 dotCloud 회사였다. 그것은 이동 언어의 구글의 출시를 기반으로합니다. 프로젝트는 나중에 리눅스 재단, 아파치 2.0 프로토콜 준수,에서 프로젝트 코드에 가입 GitHub의이 유지 보수를 수행합니다.

그림 삽입 설명 여기

dotCloud 회사 나중에 도커 주식 회사 이름이 변경되었다는 오픈 소스 광범위한 관심과 토론 이후 도커 구글은 또한 널리 PaaS를 제공에 사용되며, 레드햇은 자사 지원 도커 RHEL6.5을 집중하고있다.

부두 노동자 프로젝트의 목표는 경량 운영 체제 가상화 솔루션을 달성하는 것입니다. 고정 표시기 리눅스 컨테이너 (LXC) 기술의 기초입니다.

사용자가 작업을 더 쉽게, 컨테이너 관리에 대해 신경 쓸 필요가 없습니다 있도록 LXC 도커의 기준으로 추가 패키지이었다. 당신과 같은 사용자 작업 도커 용기는 쉽게로 빠른 경량의 가상 머신을한다.

왜 도커?

(1) 고속 칩.

사용자는 자신의 프로그램을 넣을 수 있습니다 단 몇 분을 필요로 "의 부두 노동자를." 고정 표시기에 따라 달라집니다 "기록 중 복사"(기록 중 복사) 모델이 매우 빠르게 응용 프로그램의 변경, 그것은 영역 "코드 변화 그 때문에 마음에"달성하기 위해 말할 수있다.

     随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。

논리적 분류 (2) 업무

사용 고정 표시기, 개발자들은 컨테이너에서 실행되는 응용 프로그램에 대해 우려해야하고, 운영 및 유지 보수 인력은 컨테이너를 관리하는 방법에 대해 우려 할 필요가있다. 부두 노동자의 설계 목적은 배포 할 수있는 쓰기 코드 개발 환경 및 응용 프로그램에 대한 프로덕션 환경의 일관성 개발자를 강화하는 것입니다. 이것의 종류를 감소 "모든 것이 정상입니다 개발 확실 운영 및 유지 보수 문제 (테스트 환경은 문제의 아웃 라인에, 정상 확실히 운영 및 유지 보수의 문제에 온다)."

(3) 신속하고 효율적인 개발 라이프 사이클

목표 중 하나는 응용 프로그램을 쉽게 구축, 쉽게 협업, 이동성을 가질 수 있도록, 연산주기 온라인, 배포 테스트, 도커 개발의 코드를 단축하는 것입니다. (인기있는 것은 도커 당신이 상자에서 가져온 조각이 필요없이, 이러한 개체가 직접적으로 큰 상자를 멀리 걸릴 수 있습니다 필요한 경우, 항목을 많이 보유 할 수있는 상자처럼 말할 수 있습니다.)

(4) 서비스 지향 아키텍처의 사용을 장려

고정 표시기는 서비스 지향 아키텍처와 마이크로 아키텍처 서비스를 권장합니다. 그래서, 고정 표시기는이 모델, 응용 프로그램에서 하나의 응용 프로그램이나 프로세스, 따라서 분산 응용 프로그램 모델을 형성을 실행하는 하나의 컨테이너를 추천 또는 서비스는 컨테이너 내부 상호 연결의 연속으로 표현 될 수있는 분산 배치 응용 프로그램은, 확장 또는 디버깅 응용 프로그램은 매우 간단하지만, 또한 프로그램의 성찰을 향상시킬 수 있습니다. (물론, 당신은 컨테이너에 여러 응용 프로그램을 실행할 수 있습니다)

1.3 가상 머신 컨테이너와 비교

이미지 아래 도커 가상화의 전통적인 방법의 차이를 비교하여, 가상화 용기 가시 직접 재사용 로컬 호스트 운영 체제이다는 운영 체제 레벨에서 하드웨어 레벨에서 구현되어 기존의 방법있다.

그림 삽입 설명 여기

기존의 가상 머신에 비해 도커의 장점은 소량을 복용, 빠른 시작으로 반영된다.

1.4 도커 성분

1.4.1 도커 서버 및 클라이언트

서버 (C / S) 아키텍처 프로그램 - 고정 표시기는 클라이언트입니다. 단지는 부두 노동자 도커 서버 또는 데몬에 필요 클라이언트는 서버 나 데몬이 모든 일을 할 것, 요청을하고 결과를 반환합니다. 고정 표시기는 명령 줄 도구 부두 노동자와의 RESTful API의 집합을 제공합니다. 당신은 같은 호스트에 도커 데몬 및 클라이언트를 실행할 수 있습니다, 당신은 또한 다른 호스트 시스템에서 원격 도커 도커 데몬을 실행하려면 로컬 클라이언트에서 연결할 수 있습니다.

그림 삽입 설명 여기

1.4.2 도커 미러 용기

미러링은 부두 노동자의의 초석입니다. 사용자는 자신의 컨테이너 기반의 미러링을 실행합니다. 거울도 도커 수명주기의 "빌드"부분. 미러 층 구조에 결합 된 파일 시스템의 일련의 명령을 구축 단계별에 기초한다. 예를 들면 :

파일을 추가;

명령을 실행;

창을 엽니 다.

용기는 또한 반영 될 수있다 "소스 코드를 포함 할 수있다." 거울, 아주 작은 아주 "휴대용"쉽게 공유, 저장 및 업데이트되었습니다.

고정 표시기 구축하고 배포 용기, 당신은 당신의 자신의 응용 프로그램이나 서비스가 용기에 포장 할 수있다 필요로 할 수 있습니다. 컨테이너는 부팅을 미러링 선박은 하나 개 이상의 프로세스를 실행할 수 있습니다. 우리는 거울이 내장되어 있거나 수명주기의 부두 노동자 단계를 포장 용기가 시작 또는 구현 단계하고 있다고 판단 할 수 있습니다. 미러 부팅 용기를 바탕으로, 시작이 완료되면 컨테이너는, 우리는 그들이 필요로하는 소프트웨어 나 서비스를 설치 컨테이너에 로그온 할 수 있습니다.

도커 용기는 그래서 :

화상 포맷;

일부 표준 운영 칼럼;

실행 환경을 제공합니다.

고정 표시기는 표준 컨테이너의 개념을 그립니다. 전 세계적으로 제공되는 표준 컨테이너화물, 부두 노동자들이 자신의 디자인에이 모델을 사용, 유일한 차이점은 : 제품, 운송 및 부두 노동자 소프트웨어의 컨테이너 수송.

     和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。

     Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

1.4.3 등록 (등록)

사용자와의 레지스트리 고정 표시기 내장 된 이미지를 저장합니다. 레지스트리는 공공 및 민간 이가지으로 구분된다. 도커 회사는 레지스트리가 고정 표시기 허브라는 대중를 운영하고 있습니다. 사용자 도커 허브, 주에서 계정에 가입하고 자신의 이미지 저장 (참고 : 도커 허브 거대한 느린 다운로드 이미지, 당신이 당신의 자신의 개인 레지스트리를 구축 할 수 있습니다) 할 수 있습니다.

https://hub.docker.com/

2 도커 설치 및 시작

2.1 설치 도커

부두 노동자가 우분투 릴리스를 기반으로하기 때문에 고정 표시기 관계자는 우분투에 설치하는 것이 좋습니다,하지만 문제는 일반적으로 고정 표시기 우분투는 첫 번째 업데이트 나 패치 발생한다. CentOS는 여러 버전의 최신 패치 업데이트 패키지의 일부를 지원하지 않습니다.

우리가 학습 환경을 사용하고 있기 때문에 우리가 부두 노동자가에 CentOS에 설치됩니다, 그래서 여기에 CentOS입니다. 참고 :이 적어도 CentOS7.x 버전을 설치하는 것이 좋습니다, CentOS6.x 버전, 업데이트를 지원하지 않는 다른 환경과 도커 많은 많은 패치를 설치하기 전에 설치해야합니다.

직접 Centos7.x 거울을 지원하는 교육 과정을 마운트하십시오

(1) 최신 패키지 냠 갱신

sudo yum update

(2) 설치 패키지를 필요 얌 백분율 얌 구성 매니저 기능을 제공하며, 다른 두 종속 devicemapper를 구동

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

(3) 세트 냠 소스 클라우드 알리

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(4) 고정 표시기 장착

sudo yum install docker-ce

(5) 버전보기 고정 표시기를 설치 한 후

docker -v

2.2 설정 거울 USTC

USTC는 리눅스 미러 서비스 제공 업체의 베테랑이며, 지금까지 사용시 우분투 5.04 버전입니다. 빠르게 고정 표시기 미러 가속 속도 USTC. 장점 USTC 고정 표시기 미러 중 하나는, 등록 할 필요없는 진정한 공공 서비스입니다.

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

파일을 편집 :

vi /etc/docker/daemon.json  

파일에 다음을 입력합니다 :

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

2.3 도커 시작 및 정지

systemctl 명령은 명령 시스템 서비스 관리자입니다

고정 표시기 시작

systemctl start docker

정지 고정 표시기 :

systemctl stop docker

다시 시작 고정 표시기 :

systemctl restart docker

고정 표시기 상태보기 :

systemctl status docker

부팅 :

systemctl enable docker

보기 고정 표시기 요약 정보

docker info

보기 고정 표시기 도움말 문서

docker --help

3 공통 명령

3.1 미러링 명령

3.1.1 뷰 미러

docker images

REPOSITORY : 이미지 이름

TAG : 이미지 태그

이미지 ID : ID 미러링

만든 사람 : 작성일 미러 (거울하지 취득일)

SIZE : 이미지 크기

이러한 이미지는 호스트 도커은 / var / lib 디렉토리 / 고정 표시기 디렉토리에 저장됩니다

3.1.2 검색 미러

당신이 네트워크에서 원하는 이미지를 찾을해야하는 경우, 다음과 같은 명령으로 검색 할 수 있습니다

docker search 镜像名称

NAME : 창고 이름

설명 : 미러 설명

STARS : 사용자 평가, 반응 인기의 거울

공식 : 공식인가

자동화 된이 : 자동으로 미러가 자동으로 빌드 프로세스 도커 허브에 의해 만들어진 것을 나타내는 구축

3.1.3 풀 미러링

풀링 거울상 로컬 저장소에 중앙에서 다운로드

docker pull 镜像名称

예를 들어, 나는 거울 centos7 다운로드하려면

docker pull centos:7

미러를 제거 3.1.4

거울 ID Delete 키를 누릅니다

docker rmi 镜像ID

모든 미러 삭제

docker rmi `docker images -q`

3.2 배 관련 명령

3.2.1보기 컨테이너

보기 컨테이너 실행

docker ps

모든 컨테이너보기

docker ps –a

컨테이너의 마지막 실행보기

docker ps –l

확인 정지 용기

docker ps -f status=exited

3.2.2 작성 및 컨테이너를 시작

사용자 지정 컨테이너 매개 변수를 만듭니다

컨테이너 명령을 만듭니다 고정 표시기 실행

-i : 운영 컨테이너를 나타냅니다

-t : 후방 컨테이너 시작은 명령 줄을 입력합니다. 이 두 가지 매개 변수를 추가 한 후, 용기에 로그를 만들 수있을 것입니다. 즉, 의사 단말에 할당된다.

-name : 이름 컨테이너 만들었습니다.

-v : 디렉토리 매핑 관계를 (이전 호스트의 디렉토리에 매핑 된 호스트의 디렉토리입니다) 대표, 여러 디렉토리 또는 파일 매핑을 -v 여러 사용할 수 있습니다. 그것은 호스트의 변경, 매핑에 사용되는 디렉토리이며, 다음 컨테이너를 공유 :합니다.

-d : (이 컨테이너가 백그라운드에서 생성 된 후 -d 매개 변수 뒤에 실행이 컨테이너의 보호자를 만들 것입니다 자동으로 두 개의 매개 변수가 자동으로 생성 후에 갈 것입니다 경우 -i -t를 추가, 컨테이너를 기록하지 않습니다 컨테이너).

-p : 포트 매핑, 전자는 컨테이너의 포트에 매핑 된 호스트 포트이다. 당신은 더 많은 일을 여러 -p 포트 매핑을 사용할 수 있습니다

컨테이너 만들기 (1) 대화 형 모드

docker run -it --name=容器名称 镜像名称:标签 /bin/bash

그런 다음 우리는 당신이 선박의 출시를 볼 수 있습니다 발견되었다 ps 명령을 참조 상태는 상태를 시작합니다

현재 컨테이너를 종료

exit

(2) 컨테이너 형 가드 모드를 만들 :

docker run -di --name=容器名称 镜像名称:标签

보호자 컨테이너 방법 로그인 :

docker exec -it 容器名称 (或者容器ID)  /bin/bash

3.2.3 정지 및 컨테이너를 시작

컨테이너를 중지

docker stop 容器名称(或者容器ID)

시작 컨테이너 :

docker start 容器名称(或者容器ID)

3.2.4 파일 복사

우리가 용기에 파일을 복사해야하는 경우 cp 명령을 사용할 수 있습니다

docker cp 需要拷贝的文件或目录 容器名称:容器目录

파일은 컨테이너에서 복사 할 수 있습니다

docker cp 容器名称:容器目录 需要拷贝的文件或目录

3.2.5 디렉토리가 장착되어

우리가 컨테이너를 만들 수있을 때 우리는 컨테이너에 영향을 미칠하기 위해 디렉토리에 호스트 파일을 수정할 수 있도록, 디렉토리의 컨테이너 디렉토리, 호스트를 매핑됩니다.
예를 들어 컨테이너 : 컨테이너 추가 -v 매개 변수 호스트 디렉토리로 다시 만들기 :

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

당신은 다중 레벨 디렉토리를 공유하는 경우, 권한 부족 메시지가 나타날 수 있습니다.

우리는 매개 변수를 추가 할 필요 금지의 보안 모듈 SELinux가 CentOS7 기관, 그리고 --privileged 때문 권한 디렉토리를 설치하지 않고 문제를 해결하기 = 사실이다

3.2.6보기 IP 주소 용기

우리는 다음 명령을 다양한 데이터를 실행하는 선박을 볼 수 있습니다

docker inspect 容器名称(容器ID) 

또한 직접 출력 직접 IP 주소로 다음 명령을 수행 할 수 있습니다

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

3.2.7 삭제 용기

지정된 컨테이너를 제거합니다 :

docker rm 容器名称(容器ID)

(4) 애플리케이션 배포

4.1 MySQL을 배포

(1) 풀 미러의 MySQL

docker pull centos/mysql-57-centos7

(2) 용기를 만들

docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

은 -p 포트 매핑, 포트 매핑 형식 호스트 : 포트 컨테이너 런타임

-e 루트 사용자의 로그인 암호를 대신하여 환경 변수 MYSQL_ROOT_PASSWORD 추가

(3) 원격 로그인의 MySQL

지정된 포트 33306과 같은 호스트 IP를 연결

4.2 톰캣 배포

(1) 미러 풀

docker pull tomcat:7-jre7

(2) 용기를 만들

주소 매핑을 나타냅니다 -p 컨테이너 만들기

docker run -di --name=mytomcat -p 9000:8080 
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

4.3 Nginx에 배포

(1) 미러 풀

docker pull nginx

(2) 컨테이너의 Nginx를 만들

docker run -di --name=mynginx -p 80:80 nginx

4.4 레디 스 배포

(1) 미러 풀

docker pull redis

(2) 용기를 만들

docker run -di --name=myredis -p 6379:6379 redis

5 마이그레이션 및 백업

이미지 저장 용기는 5.1이다

우리는 거울에 대해 다음 명령 용기를 절약 할 수 있습니다

docker commit mynginx mynginx_i

5.2 이미지 백업

우리는 tar 파일로 다음 명령을 사용하여 이미지를 저장할 수 있습니다

docker  save -o mynginx.tar mynginx_i

5.3 영상 복구 및 마이그레이션

처음에 우리는 mynginx_img 거울을 제거하고 다음 명령을 복원 할 실행

docker load -i mynginx.tar

-I 입력 파일

다시보기 거울에 수행 한 후, 당신은 이미지가 복원되었습니다 볼 수 있습니다

6 Dockerfile

6.1 Dockerfile 무엇입니까

Dockerfile 스크립트 명령과 매개 변수 일련의 기본 이미지에 이러한 명령을 구성하고 궁극적으로 새로운 이미지를 만들 수 있습니다.

; 개발자 1. 개발 팀에 대한 일관성있는 개발 환경을 제공
당신은 개발할 때 구성된 직접 미러 이미지를 사용하거나 작업을 시작 Dockerfile 파일에 새로운 이미지를 구축 할 수 있습니다; 테스터를위한 2,
3, 교통 및 유지 보수 담당자 : 배포시에, 응용 프로그램의 원활한 마이그레이션을 가능하게한다.

6.2 공통 명령

명령 효과
여기서 image_name FROM : 태그 기본 이미지의 사용은 건물의 프로세스를 시작하는 정의합니다
유지 관리자 사용자 _ 면책 조항 거울 작성자
ENV 키 값 설정 환경 변수 (여러 쓸 수 있습니다)
RUN 명령 Dockerfile은 핵심 부분입니다 (여러 쓸 수 있습니다)
ADD의 SOURCE_DIR / 파일 DEST_DIR / 파일 이 압축 파일 인 경우, 자동으로 복제 한 후 추출합니다, 컨테이너의 호스트로 파일을 복사
복사 SOURCE_DIR / 파일 DEST_DIR / 파일 그리고 ADD와 같은, 그러나 압축 된 파일의 압축을 풀고없는 경우
WORKDIR의 path_dir 작업 디렉토리 설정

6.3 미러를 생성하는 스크립트를 사용하여

단계 :

(1) 디렉토리를 작성

mkdir –p /usr/local/dockerjdk8

는 / usr / 지방 /의 dockerjdk8 디렉토리 (2) 다운로드 JDK-8u171 - 리눅스 - x64.tar.gz 서버 (가상 머신)에 업로드

(3) 파일 Dockerfile을 만들 vi Dockerfile

#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER ITCAST
#切换工作目录
WORKDIR /usr
RUN mkdir  /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

미러 실행 (4) 건설

docker build -t='jdk1.8' .

공간과 포인트의 뒷면을 참고 생략하지 않습니다

완전한 뷰 미러를 설정할지 여부 (5)

docker images

7 부두 노동자 개인 창고

7.1 개인 창고 및 구성을 설정

(1) 풀 개인 하우스 이미지 (이 단계는 생략)

docker pull registry

(2) 시작 개인 컨테이너 창고

docker run -di --name=registry -p 5000:5000 registry

(3) 브라우저를 열고 주소 http://192.168.184.141:5000/v2/_catalog 참조 입력 {"repositories":[]}개인 창고의 표현을 성공적인 내용이 비어 구축

(4) 변형 daemon.json

vi /etc/docker/daemon.json

저장하고 종료, 다음과 같은 내용을 추가합니다.

{"insecure-registries":["192.168.184.141:5000"]} 

이 단계는 개인 창고 주소에 대한 고정 표시기의 신뢰를 할 수 있습니다

(5) 다시 시작 고정 표시기 서비스

systemctl restart docker

7.2 미러링 전용 창고에 업로드

(1)이 개인 거울상 창고로 표시된

docker tag jdk1.8 192.168.184.141:5000/jdk1.8

(2) 컨테이너는 PW 다시 시작

docker start registry

(3)에 표시된 화상 업로드

docker push 192.168.184.141:5000/jdk1.8
게시 50 개 원래 기사 · 원의 찬양 (21) · 전망 3706

추천

출처blog.csdn.net/wmlwml0000/article/details/104626233