내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Compose는 Docker Company에서 출시한 도구 소프트웨어로, 여러 Docker 컨테이너를 관리하여 애플리케이션을 구성할 수 있습니다. YAML 형식으로 구성 파일 docker-compose.yml을 정의하고 여러 컨테이너 간의 호출 관계를 작성해야 합니다.그런 다음 단 하나의 명령으로 이러한 컨테이너를 동시에 시작/중지할 수 있습니다.
Docker는 각 컨테이너에서 하나의 서비스만 실행할 것을 권장합니다. Docker 컨테이너 자체는 리소스를 거의 차지하지 않기 때문에 각 서비스를 별도로 분리하는 것이 가장 좋습니다. 그러면 또 다른 문제가 발생할까요?
동시에 여러 서비스를 배포해야 하는 경우 각 서비스에 대해 별도의 Dockerfile을 작성한 다음 이미지와 컨테이너를 빌드해야 합니까? 이는 매우 힘든 일이므로 docker는 공식적으로 docker-compose 다중 서비스 배포 도구를 제공합니다. .
예를 들어 웹 마이크로서비스 프로젝트를 구현하려면 웹 서비스 컨테이너 자체 외에도 백엔드 데이터베이스 mysql 서비스 컨테이너, redis 서버, 등록 센터 유레카, 로드 밸런싱 컨테이너 등을 추가해야 하는 경우가 많습니다. . . . . .
Compose를 사용하면 사용자는 별도의 docker-compose.yml 템플릿 파일(YAML 형식)을 통해 연결된 애플리케이션 컨테이너 세트를 프로젝트로 정의할 수 있습니다.
구성 파일을 사용하여 다중 컨테이너 애플리케이션을 쉽게 정의한 다음 단일 명령을 사용하여 애플리케이션의 모든 종속성을 설치하고 빌드를 완료할 수 있습니다. Docker-Compose는 컨테이너를 관리하고 조정하는 방법에 대한 문제를 해결합니다.
빠른 다운로드 주소
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
실행 권한 추가
chmod +x /usr/local/bin/docker-compose
설치가 잘 되었는지 확인
docker-compose --version
제거
sudo rm / usr/ local/ bin/docker-compose
Compose를 사용하는 3단계
Dockerfile을 작성하여 각 마이크로서비스 애플리케이션을 정의하고 해당 이미지 파일을 빌드합니다.
docker-compose.yml을 사용하여 전체 비즈니스 단위를 정의하고 전체 애플리케이션에서 다양한 컨테이너 서비스를 배열합니다.
마지막으로 docker-compose up 명령을 실행하여 전체 애플리케이션을 시작 및 실행하여 원클릭 배포를 완료하고 온라인으로 전환합니다.
일반 명령 작성
docker-compose -h # 도움말 보기
docker-compose up # 모든 docker-compose 서비스를 시작합니다.
docker-compose up -d # 모든 docker-compose 서비스를 시작하고 백그라운드에서 실행합니다.
docker-compose down # 컨테이너, 네트워크, 볼륨 및 이미지를 중지하고 삭제합니다.
docker-compose exec yml의 서비스 ID # 컨테이너 인스턴스 내부에 입력
docker-compose exec docker-compose.yml 파일 작성 서비스 ID /bin/bash
docker-compose ps # 현재 docker-compose에 의해 조정되고 실행 중인 모든 컨테이너를 표시합니다.
docker-compose top # docker-compose에 의해 조정되는 현재 컨테이너 프로세스를 표시합니다.
docker-compose 로그의 서비스 ID yml # 컨테이너 출력 로그 보기
docker-compose config # 구성 확인
docker-compose config -q # 문제가 있는 경우에만 구성 및 출력을 확인합니다.
docker-compose restart # 서비스를 다시 시작합니다
docker-compose start # 서비스 시작
docker-compose stop # 서비스 중지
docker-machine 명령 설치
base=https://get.daocloud.io/docker/machine/releases/download/v0.14.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine
1) Linux 가상 머신에서 IP 주소를 192.168.90.215(x는 학생 ID의 마지막 3자리, y는 직접 지정)로 구성하면 가상 머신이 인터넷에 정상적으로 접속할 수 있습니다.
2) DNS 서버를 구성합니다. 도메인은 cr.com(abc는 이름의 이니셜)입니다. 구성이 완료된 후 nslookup을 사용하여 정방향 및 역방향 확인을 확인합니다.
3) LEMP(예: Nginx + MySQL(MariaDB) + PHP)를 구성하고 실제 호스트를 통해 www.cr.com(abc는 이니셜)에 액세스하여 구축된 LEMP에 액세스합니다. (로컬 확인을 위해 호스트 파일을 수정할 수는 없지만 구성한 자체 DNS를 사용해야 합니다.)
먼저 Linux http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip 용 고정 IP를 구성하십시오 (열리지 않으면 아래 주소를 변경하십시오)
//할 것
/etc/named.conf 파일을 편집합니다.
vim /etc/named.conf
청취 및 쿼리 값을 임의대로 변경하십시오.
cr.com을 192.168.90.215로 확인하도록 DNS를 구성합니다.
vim /etc/named.rfc1912.zones
파일 끝에 추가
zone "cr.com" IN {
type master;
file "cr.com.zone";
allow-update { none; };
};
zone "215.90.168.192.in-addr.arpa" IN {
type master;
file "com.cr.loop";
allow-update { none; };
};
:wq 저장
해당 구성 파일 vim /var/named/com.cr.loop를 편집합니다.
다음을 추가하세요
$TTL 1D
@ IN SOA cr.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR cr.com.
NS ns.cr.com.
ns A 192.168.90.215
201 PTR www.cr.com.
201 PTR email.cr.com.
vim /var/named/cr.com.zone 편집
다음을 추가하세요
$TTL 1D
@ IN SOA cr.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.90.215
AAAA ::1
NS ns.server.com.
ns IN A 192.168.90.215
www IN A 192.168.90.215
email IN A 192.168.90.215
DNS 다시 시작
systemctl restart named
DNS 상태 보기
systemctl status named
성공적으로 시작되었습니다
nslookup cr.com 정방향 구문 분석
역방향 구문 분석 nslookup 192.168.90.215
docker-compose.yml 파일을 /mydocker/lemp에 씁니다.
vim /mydocker/lemp/docker-compose.yml 다음 내용을 입력하세요.
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes_from:
- app
php:
build: ./php/
expose:
- 9000
links:
- mysql
volumes_from:
- app
app:
image: php:7.0-fpm
volumes:
- .:/var/www/html
command: "true"
mysql:
image: mysql:latest
volumes_from:
- data
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: bookmarks
MYSQL_USER: cr
MYSQL_PASSWORD: cr123
data:
image: mysql:latest
volumes:
- /var/lib/mysql
command: "true"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8080:80
links:
- mysql
environment:
PMA_HOST: mysql
/mydocker/lemp/에 nginx/Dockerfile 만들기
채우다
FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf
default.conf 생성
다음 내용을 입력하세요.
server {
listen 80 default_server;
root /var/www/html;
index index.html index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /.ht {
deny all;
}
}
/mydocker/lemp/에 php/Dockerfile을 생성합니다.
채우다
FROM php:7.0-fpm
RUN docker-php-ext-install mysqli
Docker 컨테이너 오케스트레이션
docker-compose up -d
컨테이너 실행 상태를 보기 위한 Docker ps
성공적으로 시작되었습니다
이 머신은 IP를 통해 php 환경과 nginx 환경에 접근합니다.
액세스 성공
로컬 DNS 서버를 가상 머신(192.168.90.215)으로 구성합니다.
cmd 창을 열고 cr.com에서 ping 테스트를 수행합니다.
성공적으로 핑을 보냈습니다
도메인 이름을 통해 구축된 PHP 환경에 액세스
nginx 구성 파일 수정
최종 도메인 이름은 웹사이트에 직접 접속됩니다.