Fail tidak terikat dengan fail imej docker Ia boleh diubah suai dan bekas boleh dimulakan semula digunakan dan tidak akan dipulihkan oleh imej
Fail seperti log dan maklumat lain yang direkodkan semasa menjalankan bekas boleh disimpan secara automatik pada storan luaran dan tidak akan hilang akibat dimulakan semula bekas
perintah larian docker
arahan docker-compose
Kaedah arahan docker run menggunakan parameter -v untuk melekapkan direktori hos luaran ke laluan dalam bekas, tentukannya melalui berbilang parameter -v, dan hanya laluan mutlak boleh digunakan; perintah docker-compose menggunakan Kaedah perkhidmatan adalah mudah untuk menerangkan dengan tepat, perkhidmatan boleh mengandungi berbilang bekas, dan konfigurasi pemasangan laluan luaran juga dikonfigurasikan melalui. Parameter -v. Kelebihannya ialah anda boleh menggunakan laluan relatif, yang tentunya relatif kepada laluan fail docker-compose.yml . Kelebihan lain ialah arahan untuk docker-compose untuk memulakan bekas adalah agak mudah.
├── build.sh ├── docker-compose.yml ├── Dockerfile ├── mynginx.conf ├── nginx-vol │ ├── conf.d │ │ └── mynginx.conf │ ├── html │ │ └── index.html │ └── logs │ ├── access.log │ └── error.log └── run.sh
Fail Docker ialah fail konfigurasi untuk membina imej, dan kandungannya adalah seperti berikut:
FROM nginx LABEL maintainer="xxx" email="<xxx@xxx.com>" app="nginx test" version="v1.0" ENV WEBDIR="/data/web/html" RUN mkdir -p ${WEBDIR} EXPOSE 5180
Berdasarkan nginx, tentukan laluan fail data baharu sebagai /data/web/html, port terdedah ialah 5180.
docker build -t nginx:test-v1 .
Teg imej yang disusun ialah test-v1, anda boleh melihat imej setempat:
docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx test-v1 d2a0eaea3fac 56 minutes ago 141MB nginx latest 605c77e624dd 9 days ago 141MB
Anda boleh melihat bahawa tag adalah ujian- Imej v1 ialah imej baharu yang baru disusun.
Buat nginx volum luaran nginx-vol dan folder conf.d, log dan html yang berkaitan, dan letakkan kandungan yang sepadan ke dalam direktori yang sepadan. Sebagai contoh, kandungan iindex.html dalam folder html adalah seperti berikut:
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>系统时间</title> <body> <div id="datetime"> <script> setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();",1000); </script> </div> </body> </head> </html>
sebenarnya hanyalah halaman yang memaparkan masa semasa.
Bahagian log kosong Tujuannya adalah untuk menulis log apabila bekas berjalan ke storan luaran Walaupun bekas dihentikan atau imej dimusnahkan, log berjalan masih boleh dikekalkan.
Confid berikut ialah konfigurasi diperibadikan nginx, kandungannya adalah seperti berikut:
server { listen 5180; #listen [::]:5180; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /data/web/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 # 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; }
Malah, laluan port dan root diubah suai berdasarkan default.conf lalai nginx, tujuannya ialah untuk menggambarkan nginx Fail konfigurasi juga boleh disimpan secara luaran Jika program anda sendiri boleh mengubah suai fail konfigurasi, maka dengan cara ini, fail konfigurasi boleh diubah suai semasa fail konfigurasi yang diubah suai sebenarnya disimpan pada storan luaran , jadi ia tidak akan berubah pada bila-bila masa Ia hilang apabila bekas berhenti berjalan, dan tidak akan dipulihkan kepada fail di dalam imej.
Untuk kemudahan, anda boleh menulis arahan larian ke dalam skrip shell, seperti run.sh, kandungannya adalah seperti berikut:
docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1
Anda boleh lihat bahawa terdapat 3 dalam arahan Setiap -v sepadan dengan lekapan storan luaran yang berbeza dan dipetakan ke direktori berbeza dalam bekas. Port selepas
-p (perhatikan bahawa ia adalah huruf kecil) masing-masing ialah port hos dan port kontena, iaitu, port 15180 hos dipetakan ke port 5180 kontena, supaya port perkhidmatan nginx 5180 yang dimulakan oleh kontena boleh diakses melalui Port 15180 hos dipetakan.
Lihat bekas yang sedang berjalan:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf2275da5130 nginx:test-v1 "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp nginx-v1
Lihat pemetaan terperinci:
docker inspect nginx-v1
akan memaparkan maklumat lengkap, di mana pemetaan pelekap storan lengkap boleh dilihat di bahagian "Mounts" Keadaan .
Lihat terus di bawah nginx-vol/logs pada hos, dan anda boleh melihat bahawa log berjalan nginx dalam bekas ditulis secara automatik ke storan hos luaran.
ls -l nginx-vol/logs/ total 12 -rw-r--r-- 1 root root 1397 1月 8 15:08 access.log -rw-r--r-- 1 root root 4255 1月 8 15:59 error.log
Hentikan bekas:
docker stop nginx-v1
Padamkan bekas:
docker rm nginx-v1
Pasang docker-compose
apt-get install docker-compose
Write docker -compose.yml file
version: "3" services: nginx: container_name: mynginx image: nginx:test-v1 ports: - 80:5180 volumes: - ./nginx-vol/html:/data/web/html - ./nginx-vol/logs:/var/log/nginx - ./nginx-vol/conf.d:/etc/nginx/conf.d restart: always
container_name: Nyatakan nama kontena
imej: Imej yang akan digunakan dan label yang sepadan
ports: Port hos dan pemetaan port kontena< . Konfigurasi .yml, port, nama , pemasangan semuanya normal. Mengakses port 80 hos sepadan dengan perkhidmatan 5180 kontena.
Hentikan bekas
docker-compose up -d Creating network "nginxtest_default" with the default driver Creating mynginx ... Creating mynginx ... done
Seperti yang anda lihat, lebih mudah untuk menggunakan docker-compose.
Atas ialah kandungan terperinci Apakah kaedah untuk memasang fail pemalam nginx di bawah Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!