Docker 는 Nginx 를 배치 하고 기본 요청 경로 와 프로필 을 마 운 트 합 니 다.

6847 단어
먼저 호스트 터미널 명령 행 에 들 어가 docker 시작 service docker start 설 치 된 docker 미 러 목록 보기 docker images설치 안 했 으 면 설치 해.docker pull nginx
그리고 이 미 러 를 작 동 시 켜 야 합 니 다. 정상적으로 작 동 하 는 것 은 아래 의 명령 입 니 다. 하지만 서 두 르 지 마 세 요.docker run -d -p 80:80 nginx 이 안의 값 이 무슨 뜻 인지 간단하게 설명 하 세 요.-d 이 nginx 용기 서비스 백 엔 드 를 실행 시 키 는 것 입 니 다.-p 지 정 된 포트 뒤에 있 는 80: 80 앞 에 있 는 80 은 숙 성 호스트 의 포트 뒤에 있 는 것 은 용기 에 있 는 nginx 의 포트 입 니 다. 예 를 들 어 8080: 80 으로 바 꾸 면 우 리 는 외부 에서 이 nginx 서비스 주 소 를 방문 하면 xx. xx. xx. xx: 8080 이면 nginx 의 환영 페이지 를 볼 수 있 습 니 다.nginx 당연히 시 작 된 미 러 이름 이 죠.
그러나 아, 이렇게 쓰 면 좋 지 않 습 니 다. 만약 에 이 nginx 의 설정 파일 을 고치 거나 정적 페이지 를 바 꾸 면 어떻게 바 꿉 니까? 우 리 는 이 용기 의 내 부 를 바 꾸 어야 합 니 다. 간단하게 이 용기 의 내부 에 어떻게 들 어 가 는 지 말 해 보 겠 습 니 다.
먼저 이 nginx 용기 의 id 를 가 져 와 서 모든 용기 가 실행 되 고 있 는 지, exit 가 실행 되 고 있 는 지 확인 할 수 있 습 니 다. 위 에 exit 표시 가 있 기 때 문 입 니 다 docker ps -a보 세 요. 비 치 는 포트 번 호 를 모두 드 렸 습 니 다. 저 는 이 안에 닫 힌 용기 서비스 가 없습니다. 저 는 강박 증 이 있 습 니 다. 모두 치 웠 습 니 다. 당신 도 있 으 면 이 명령 을 실행 하 십시오 xxxx 는 이 용기 의 id 그림 에 있 습 니 다.docker rm xxxxx
이렇게 쓸데없는 말 을 많이 해서 지금부터 중요 한 것 을 말 하 겠 습 니 다. 이 nginx 용기 에 있 는 프로필, 로그 파일 의 구체 적 인 경로 와 내용 을 바 꾸 려 면 마 운 트 에 사용 해 야 합 니 다. 제 가 이해 하 는 마 운 트 의 뜻 은 이 nginx 용 기 를 사용 할 때 용기 안의 설정 과 파일 경 로 를 사용 하지 않 고 호스트 에 있 는 자원 파일 을 사용 하 는 것 입 니 다. 참, 용기 에 어떻게 가 는 지 말 하지 않 았 습 니 다.이 명령 을 실행 하 십시오. 루트 사용자 앞 에 sudo docker exec -it xxxx bash xxxx 를 추가 하면 용기 id 입 니 다.
좀 낯 이 익 지 않 습 니까? 사실 이 미 러 는 자신의 세계 처럼 외부 로부터 방 해 를 받 지 않 습 니 다. 그러나 기능 지정 은 호스트 가 다 있 지 않 습 니 다. 예 를 들 어 vim 명령 을 사용 하고 싶 습 니 다.
마 운 트 에 대해 서 다시 이야기 하 겠 습 니 다. 마 운 트 하려 면 미 러 에 있 는 nginx 설정 파일 이 어디 에 있 는 지 알 아야 합 니 다. 그리고 호스트 의 지정 한 위치 에 마 운 트 하 세 요. 그 러 니까 먼저 그들 이 어디 에 있 는 지 보 겠 습 니 다. 미 러 에 nginx. conf 설정 파일 경로 /etc/nginx/nginx.conf default. conf 설정 파일 의 경로 /etc/nginx/conf.d/default.conf 기본 홈 페이지 폴 더 html 경로 /usr/share/nginx/html로그 파일 경로 /var/log/nginx그림 을 검증 하고 입력 하 세 요.exit nginx 용 기 를 종료 하고 호스트 로 돌아 갑 니 다.
다음은 홈 호스트 에 마 운 트 할 폴 더 mkdir -p /nginx/{conf,conf.d,html,logs} 를 만 듭 니 다. 이 네 개의 폴 더 를 만 드 는 것 은 무엇 에 쓰 이 는 지 아 시 겠 죠? 앞 에 추가 하 는 것 을 기억 할 수 있 는 권한 이 없습니다 sudo다음은 해당 경로 로 프로필 이나 자원 파일 을 던 지기 시작 합 니 다. logs 에 서 는 사용 하지 않 습 니 다. error. log 와 access. log html 에 첫 페이지 에 보 여 줘 야 할 html 파일 을 자동 으로 마 운 트 한 다음 에 방문 하고 있 습 니 다. 추가 한 html 는 기본 nginx 환영 계 를 바 꾸 었 습 니 다. 지금 은 전혀 소 용이 없습니다. 아직 마 운 트 하지 않 았 습 니 다. 잠시 만 요.
conf 에 nginx. conf 프로필 을 넣 습 니 다. 이 파일 의 내용 은 미 러 에서 복사 해 야 합 니 다. 미 러 와 일치 하도록 하 겠 습 니 다. 방금 용기 에서 본 프로필 copy 를 숙 호스트 앞 에 용기 의 경로 뒤 면 이 숙 호스트 의 경로 docker cp id:/etc/nginx/nginx.conf /nginx/conf/nginx.conf 입 니 다.

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}


conf. d 의 default. conf 를 복사 합 니 다 docker cp id:/etc/nginx/conf.d/default.conf /nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}



그리고 우 리 는 스스로 간단 한 html 페이지 를 써 서 그 에 게 마음대로 이름 을 지어 주면 나 는 고치 지 않 을 것 이다. index. html 이 라 고 한다.
그리고 이 파일 을 호스트 에 버 리 는 /nginx/html/ 경로 에서 저 는 FileZilla 도구 로 파일 을 호스트 에 전송 합 니 다.
마지막 으로 가장 중요 한 코너 가 왔 습 니 다.
마 운 트 를 시 작 했 습 니 다. 먼저 시작 한 nginx 용기 서 비 스 를 닫 았 습 니 다. 저 는 직접 하 겠 습 니 다. docker rm id OMG 는 먼저 닫 고 삭제 해 야 합 니 다. docker stop id다 해 놓 고 다시 시작 할 게 요.
docker run --name mynginx -d -p 80:80 -v /nginx/html:/usr/share/nginx/html -v /nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /nginx/logs:/var/log/nginx nginx

앞 은 호스트 경로 뒤의 nginx 용기 경로 입 니 다.
저도 자바 와 Docker 를 처음 배 웠 는데 부족 한 점 이 있 으 면 많이 가르쳐 주세요. 주로 자신 에 게 기록 을 남 기 는 것 입 니 다.
다음으로 전송:https://juejin.im/post/5cd5288e6fb9a032125071a6

좋은 웹페이지 즐겨찾기