Alpine Linux 3.9.0에서 Docker Swarm 생성
소개이 안내서는 여러 개의 Alpine Linux 3.9.0 서버 및 Portainer를 사용하여 Docker 스웜을 생성 및 구성하는 방법을 보여줍니다. 그쪽으로 알아주십시오
PHP 응용 프로그램은 일반적으로 웹 서버, 관계형 데이터베이스 시스템 및 언어 인터프리터 자체로 구성됩니다. 이 튜토리얼에서는 docker를 사용하여 전체 PHP 응용 프로그램 스택을 활용합니다. 이것은 Nginx (웹 서버), MySQL (데이터베이스 시스템) 및 PHP 용 컨테이너를 빌드하고 조정하는 심층 튜토리얼입니다.
이 튜토리얼을 위해 데이터베이스에서 도시 목록을 읽고 웹 페이지에 표시하는 간단한 응용 프로그램을 작성하여 기본이지만 작동하는 PHP 응용 프로그램을 시연합니다.
이 안내서는 Docker-CE가 이미 설치되어 있고 최소한 도커에 대한 최소한의 실무 지식이 있다고 가정합니다. 그 문제에 대해서는 다음 자습서를 검토하십시오.
실제 도커 기반 응용 프로그램은 일반적으로 여러 컨테이너로 구성됩니다. 수동으로 관리하면 매우 번거롭고 번거로울 수 있습니다. 그것이 docker-compose가 작동하는 곳입니다. 간단한 yaml
구성 파일을 통해 여러 컨테이너를 관리하는 데 도움이 됩니다.
docker-compose를 설치하십시오.
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
이 예제에 필요한 모든 파일을 보관할 폴더를 만든 다음 폴더에 만듭니다 cd
. 이제부터는이 디렉토리가 작업 디렉토리이며 모든 명령이이 폴더 내에서 실행되고 모든 경로가 해당 디렉토리를 기준으로합니다. 이 폴더는 나중에로 참조 될 수 있습니다 WORKING_DIR
.
mkdir ~/docker
cd ~/docker
이제 세 개의 폴더를 더 만듭니다.
mkdir php nginx app
이 php
폴더는 사용자 정의 PHP 이미지를 빌드 할 위치이고, nginx
폴더는 사용자 정의 nginx 이미지에 필요한 파일을 보유하며 app
폴더는 샘플 응용 프로그램의 소스 코드와 구성을 넣을 위치입니다.
이 예에서는 php-fpm
Nginx 웹 서버에 연결하는 데 사용 합니다. 우리는 공식적인 PHP 기본 이미지를 사용할 것입니다. 그러나 데이터베이스에 액세스 할 수 있도록 일부 확장을 설치하고 활성화해야합니다. php
폴더 안에 이름이 지정된 파일을 만들고 Dockerfile
다음 내용을 파일에 넣습니다.
FROM php:7.1-fpm-alpine3.4
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
우리는 공식 PHP 이미지의 알파인 버전을 사용하고 있습니다. 알파인은 훨씬 작은 설치 공간을 제공하여 컨테이너를 대상으로하는 매우 작은 배포판입니다. 또한 docker-php-ext-install
공식 PHP 이미지는이 명령을 사용하여 PHP 확장을 쉽게 설치하고 구성 할 수 있도록이 명령을 제공합니다.
자,하자가 (우리의 내부에서 다음을 실행하여이 도커 이미지를 구축 WORKING_DIR
)
docker build -t vultr-php php/
docker-compose.yml
파일이미 언급했듯이 docker-compose
간단한 구성 파일을 통해 여러 컨테이너를 관리 할 수 있습니다. 이 구성 파일의 이름은 일반적으로 docker-compose.yml
입니다. app
폴더 안에이 파일을 작성하십시오 .
touch app/docker-compose.yml
이제이 파일에 다음 내용을 넣으십시오.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
이 구문을 설명하겠습니다. 먼저, 첫 번째 줄에 유의하십시오.
version: '2'
docker-compose.yml
사용되는 구성 파일 의 버전을 지정합니다 . 다음 줄은 프로비저닝 할 컨테이너 또는 서비스를 지정합니다.
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
모든 서비스에는 services
블록 내부에 특정 키가 있습니다 . 여기에 지정된 이름은 나중에이 특정 컨테이너를 참조하는 데 사용됩니다. 또한 php
구성 내에서 컨테이너를 실행하는 데 사용되는 이미지 (이것은 이전에 빌드 한 이미지)를 정의합니다. 볼륨 매핑도 정의합니다.
volumes:
- ./:/app
이 알려줍니다 docker-compose
(현재 디렉토리를 매핑 할 ./
받는 사람) /app
컨테이너 내부 디렉토리. 마지막 줄 /app
은 컨테이너 내부 의 폴더를 작업 디렉토리로 설정합니다 . 이는 컨테이너 내의 모든 향후 명령이 기본적으로 실행되는 폴더임을 의미합니다.
이제 컨테이너를 오케스트레이션 할 수 있습니다.
cd ~/docker/app
docker-compose up -d
다음 명령을 실행하여 PHP 컨테이너가 실행되었는지 확인할 수 있습니다.
docker ps
여전히 app
폴더 안에는 명령을 사용하여 정의 된 서비스 컨테이너 내에서 명령을 실행할 수 있습니다 docker-compose
.
docker-compose exec [service] [command]
[service]
자리는 서비스 키를 참조. 우리의 경우는이었다 php
. 컨테이너 내에서 명령을 실행하여 PHP 버전을 확인하십시오.
docker-compose exec php php -v
다음과 같은 결과가 나타납니다.
PHP 7.1.14 (cli) (built: Feb 7 2018 00:40:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
PHP 컨테이너와 마찬가지로 웹 서버에 대한 사용자 지정 이미지를 만들어야합니다. 그러나이 경우에는에 대한 구성 만 제공하면 virtual host
됩니다. 당신이 우리의 내부에 있는지 확인 WORKING_DIR
하고을 만들 Dockerfile
내부 nginx
폴더 :
cd ~/docker
touch nginx/Dockerfile
이제 다음 내용을 여기에 넣으십시오 Dockerfile
.
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
알파인 기반의 기본 Nginx 이미지를 사용하고 있습니다. 이 Docker 파일에서 구성 파일을 응용 프로그램 설정으로 복사하기 만하면됩니다. 이 이미지를 빌드하기 전에 구성 파일을 작성하십시오.
touch nginx/default.conf
이제이 컨텐츠로 채우십시오.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.php;
#server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
이 fastcgi_pass php:9000
줄에서 우리는 PHP 컨테이너를 구성 파일 의 service
블록 안에있는 이름으로 참조 docker-compose.yml
합니다. 내부적 docker-compose
으로 네트워크를 만들고 정의 된 각 서비스에 서비스 이름을 호스트 이름으로 할당합니다. 이제 Nginx 이미지를 만들 수 있습니다.
docker build -t vultr-nginx nginx/
docker-compose.yml
이제 app/docker-compose.yml
파일을 업데이트 하십시오.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
새로운 서비스 만 추가했습니다. 다음을 제외하고 구성은 거의 동일합니다.
depends_on:
- php
ports:
- 80:80
Nginx 컨테이너가 PHP 서비스를 완전히 초기화해야하는 경우 depends_on
옵션 에서이 요구 사항을 강제 적용합니다 . ports
구성 키는 여기에 우리가 포트 매핑, 컨테이너 포트에 호스트 포트 매핑 80
포트에 호스트에를 80
컨테이너한다.
이제 폴더 index.php
안에 파일을 만들고 app
다음을 넣습니다.
<?php phpinfo();
80
방화벽을 통해 포트 에 액세스 할 수 있는지 확인하고 다음을 실행하십시오.
cd ~/docker/app
docker-compose up -d
다시 한 번 서비스가 작동 중인지 다시 확인하십시오.
docker ps
브라우저를 열고에 액세스하십시오 [vultr-instance-ip]
. 다음을 실행하여 Vultr 인스턴스 IP 주소를 찾을 수 있습니다.
hostname -I
PHP 정보 페이지가 나타납니다.
공식 MySQL 이미지를 사용하면 간단한 환경 변수를 통해 컨테이너를 구성 할 수 있습니다. 이것은 environment
서비스 블록 정의 내부의 옵션 으로 수행 할 수 있습니다 . ~/docker/app/docker-compose.yml
파일을 다음으로 업데이트하십시오 .
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
mysql:
image: mysql:5.7.21
volumes:
- ./:/app
- dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=world
- MYSQL_ROOT_PASSWORD=root
working_dir: /app
volumes:
dbdata:
이제 데이터베이스에 대한 새로운 서비스를 정의했습니다. 줄을 확인하십시오 dbdata:/var/lib/mysql
. 이렇게하면 컨테이너의 경로 /var/lib/mysql
가 Docker가 관리하는 영구 볼륨 에 마운트되며 컨테이너를 제거한 후에 데이터베이스 데이터가 유지됩니다. 이 볼륨은 파일 끝에서 볼 수 있듯이 최상위 블록에서 정의해야합니다.
새 구성을 조정하기 전에 샘플 MySQL 데이터베이스를 다운로드하십시오. 공식 MySQL의 문서는 몇 가지 예제 데이터베이스를 제공합니다. 우리는 잘 알려진 세계 데이터베이스를 사용할 것입니다. 이 데이터베이스는 국가 및 도시 목록을 제공합니다. 이 샘플을 다운로드하려면 앱 폴더 내에서 다음을 실행하십시오.
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
이제 컨테이너를 조정하십시오.
docker-compose up -d
이미 알고 있듯이이 docker-compose up
명령은 아직 시작되지 않은 컨테이너 만 시작합니다. docker-compose.yml
파일과 현재 실행중인 컨테이너 구성의 차이점을 확인합니다 .
한 번 더, MySQL 컨테이너가 시작되었는지 확인하십시오.
docker ps
이제 세계 데이터베이스를 채 웁니다.
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
데이터베이스에서 직접 데이터를 선택하여 데이터베이스가 채워 졌는지 확인할 수 있습니다. 먼저 컨테이너 내부의 MySQL 프롬프트에 액세스하십시오.
docker-compose exec mysql mysql -uroot -proot world
MySQL 프롬프트에서 다음을 실행하십시오.
select * from city limit 10;
도시 목록이 나타납니다. 이제 MySQL 프롬프트를 종료하십시오.
mysql> exit
필요한 모든 컨테이너가 작동하고 실행되었으므로 샘플 애플리케이션에 집중할 수 있습니다. app/index.php
파일을 다음으로 업데이트하십시오 .
<?php
$pdo = new PDO('mysql:host=mysql;dbname=world;charset=utf8', 'root', 'root');
$stmt = $pdo->prepare("
select city.Name, city.District, country.Name as Country, city.Population
from city
left join country on city.CountryCode = country.Code
order by Population desc
limit 10
");
$stmt->execute();
$cities = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Vultr Rocks!</title>
</head>
<body>
<h2>Most Populous Cities In The World</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>District</th>
<th>Population</th>
</tr>
</thead>
<tbody>
<?php foreach($cities as $city): ?>
<tr>
<td><?=$city['Name']?></td>
<td><?=$city['Country']?></td>
<td><?=$city['District']?></td>
<td><?=number_format($city['Population'], 0)?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</body>
</html>
[vultr-instance-ip]
웹 브라우저에서 액세스 하면 세계에서 가장 인구가 많은 도시 목록이 표시됩니다. 축하합니다. docker를 사용하여 완전히 작동하는 PHP 응용 프로그램을 배포했습니다.
이 튜토리얼에서는 완전히 작동하는 PHP 응용 프로그램을 구성하는 방법을 단계별로 설명했습니다. 우리는 PHP와 Nginx를위한 커스텀 이미지를 만들고 컨테이너를 조정하기 위해 docker-compose를 구성했습니다. 매우 기본적이고 단순하지만이 설정은 실제 시나리오를 반영합니다.
이 가이드에서는 이미지를 로컬에 구축하고 태그를 지정했습니다. 보다 유연한 설정을 위해 이러한 이미지를 도커 레지스트리 로 푸시 할 수 있습니다 . 공식 도커 레지스트리로 푸시 하거나 자체 도커 레지스트리를 설정할 수도 있습니다. 어쨌든 한 호스트에서 이미지를 빌드하고 다른 호스트에서 이미지를 사용할 수 있습니다.
보다 자세한 사용법은 공식 문서를docker-compose
참조하십시오 .
응용 프로그램 요구 사항과 사용하는 PHP 프레임 워크에 따라 더 많은 확장을 추가 할 수 있습니다. Dockerfile
사용자 정의 PHP 이미지를 빌드 하는 데 사용되는 것을 수정하여 쉽게 수행 할 수 있습니다 . 그러나 일부 확장은 컨테이너에 추가 종속성을 설치해야합니다. 각 확장의 기본 요구 사항을 검토하려면 PHP 공식 문서 에서 확장 목록을 참조해야 합니다.
소개이 안내서는 여러 개의 Alpine Linux 3.9.0 서버 및 Portainer를 사용하여 Docker 스웜을 생성 및 구성하는 방법을 보여줍니다. 그쪽으로 알아주십시오
RancherOS는 시스템 서비스를 실행하기 위해 시스템 Docker 데몬을 PID 0으로 실행하는 매우 가벼운 운영 체제 (약 60MB)입니다.
소개 Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그래밍 언어로 작성되었습니다.
다른 시스템을 사용하십니까? Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그램에서 작성되었습니다.
이 기사에서는 Docker 컨테이너 내에 Node 응용 프로그램을 배포하는 방법을 보여줍니다. 참고 :이 튜토리얼은 Docker가 설치되어 있고 읽은 것으로 가정합니다.
Harbor는 Docker 이미지를 저장하고 배포하는 오픈 소스 엔터프라이즈 급 레지스트리 서버입니다. 하버, 오픈 소스 Docker Distribution b 확장
LXC 컨테이너 (Linux 컨테이너)는 단일 호스트에서 여러 개의 격리 된 Linux 시스템을 실행하는 데 사용할 수있는 Linux의 운영 체제 기능입니다. 그
Kubernetes는 서버 클러스터 전체에서 컨테이너화 된 애플리케이션을 관리하기 위해 Google에서 개발 한 오픈 소스 플랫폼입니다. 그것은 10 년을 기반으로하고
다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지
개요이 기사는 Kubernetes 클러스터를 kubeadm과 함께 시작하고 실행하는 데 도움을주기 위해 작성되었습니다. 이 가이드는 두 대의 서버를 배포합니다.
이 기사에서는 CoreOS에 docker-compose를 설치하는 방법에 대해 설명합니다. CoreOS에서는 / usr / 폴더를 변경할 수 없으므로 표준 / usr / local / bin 경로를 사용할 수 없습니다.
다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지
다른 시스템을 사용하십니까? Docker는 가상 컨테이너 내에 소프트웨어를 배포 할 수있는 응용 프로그램입니다. Go 프로그램에서 작성되었습니다.
다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환하여 확장 및 고 가용성을 용이하게합니다.
다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환합니다. 스케일링, 고 가용성
이 튜토리얼은 Docker 시작의 기본 사항을 설명합니다. Docker가 이미 설치되어 있다고 가정합니다. 이 튜토리얼의 단계는
웹 응용 프로그램을 실행할 때 일반적으로 멀티 스레딩을 사용하도록 소프트웨어를 변환하지 않고도 리소스를 최대한 활용하려고합니다.
우리는 여러 시스템에서 애플리케이션 컨테이너를 생성, 관리 및 배포 할 수있는 플랫폼 인 Docker를 알고 있습니다. Docker Inc.는 서비스를 제공합니다
전제 조건 Docker 엔진 1.8 이상. 최소 4GB의 디스크 공간. 최소 4GB의 RAM. 1 단계. Docker 설치 SQL-Server를 설치하려면 Docker mus
랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.
오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.
Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능
인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.
최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.
빅데이터의 13가지 상용 데이터 추출 도구
우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true
과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.
26가지 빅 데이터 분석 기법에 대한 통찰: 1부
의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.