Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?
Helaian rujukan Docker
Arahan yang anda dah belajar, di satu tempat.
Laptop anda (asas D0)
curl localhost:8080Minta laman dari tingkap 8080 di laptop ini.curl -I localhost:8080Bahagian atas jawapan sahaja, dengan kod status.curl 127.0.0.1:8080Sama, guna nombor localhost.chmod +x cook.shBenarkan cook.sh berjalan sebagai program.ls -lTengok kebenaran: r baca, w tulis, x jalankan.export CHEF=KancilLekat nota di dinding: CHEF ialah Kancil.echo $CHEFBaca semula nota itu.envSenaraikan semua environment variable.ps auxSetiap process dalam komputer ini, dengan PID masing-masing.echo $?0 bermaksud semua okey. Nombor lain bermaksud ada masalah.
Jalankan container
docker versionDocker ada dan sudah sedia?docker infoBilangan container dan image, dan lain-lain.docker run -d --name web -p 8080:80 nginx:1.30-alpineJalankan nginx di belakang. Buka tingkap 8080.docker run hello-worldContainer pertama anda: ia paparkan salam.docker run --rm alpine:3.22 echo hiJalan sekali, kemudian buang bekasnya.docker run -it alpine:3.22 shDapatkan shell di dalam. Taip exit untuk keluar.docker run -d -e POSTGRES_PASSWORD=secret postgres:18-alpineBeri aplikasi satu tetapan dengan -e.docker run -d -v pgdata:/var/lib/postgresql postgres:18-alpineSimpan data dalam loker (volume).docker ps -aTunjuk semua container, termasuk yang berhenti.docker ps -qId sahaja.docker ps --filter status=exitedContainer yang berhenti sahaja.docker stop webHentikan web. Ia masih wujud.docker start webMulakan semula.docker restart webHenti dan mula sekali gus.docker kill webHenti serta-merta, tanpa kemas (keluar 137).docker pause webBekukan; docker unpause web bangunkannya.docker port web80/tcp -> 0.0.0.0:8080 bermaksud: guna localhost:8080.
Tengok ke dalam
docker logs webBaca mesej web.docker logs -f webTerus tengok baris baru. Ctrl+C untuk berhenti.docker logs --tail 5 web5 baris terakhir sahaja.docker exec -it web shMasuk ke dalam web. exit bawa anda kembali.docker exec web ls /usr/share/nginx/htmlJalankan satu arahan dan kembali.docker inspect -f '{{.State.Status}}' webKeadaan web sahaja.docker top webProses utama dan pekerja nginx.docker stats --no-streamMemori dan CPU setiap container, sekali.docker infoCari Default Runtime: runc dan Cgroup Version.docker diff boxSetiap perubahan dalam box, berbanding image-nya.docker cp index.html web:/usr/share/nginx/html/Letak satu halaman ke dalam web.Risiko: Hati-hatidocker cp web:/etc/nginx/conf.d/default.conf .Salin satu fail keluar.Risiko: Hati-hati
Image dan resepi
docker imagesU dalam EXTRA bermaksud ada container yang menggunakannya.docker pull nginx:1.30-alpineDapatkan nginx 1.30 atas Alpine. Tetapkan tag!docker build -t diary:1.0 .Bina folder ini menjadi diary:1.0.docker build --target build -t app:build .Berhenti pada satu peringkat resepi berbilang peringkat.docker build --no-cache -t diary:1.0 .Bakar semula setiap layer.docker history diary:1.0Layer terbaru di atas.docker tag diary:1.0 you/diary:1.0Tambah nama Docker Hub anda di depan.docker buildx build --platform linux/amd64,linux/arm64 -t hello:1.0 .Satu nama, satu pek untuk setiap CPU.docker images --tree helloTengok pek-pek di dalam satu nama.docker build --secret id=npm_token,src=token.txt -t api:1.0 .Pinjamkan rahsia kepada langkah RUN --mount=type=secret.
Loker dan talian telefon
docker volume create pgdataBuat loker bernama pgdata.Risiko: Hati-hatidocker volume lsSenaraikan loker anda.Risiko: Hati-hatidocker volume rm pgdataPadam loker dan datanya. Hati-hati!Risiko: Hati-hatidocker volume inspect pgdataDi mana loker itu tinggal, dan bila ia dibuat.Risiko: Hati-hatidocker run --rm -v pgdata:/from -v "$PWD":/to alpine:3.22 tar czf /to/backup.tar.gz -C /from .Sandarkan loker ke dalam satu fail di sini.Risiko: Hati-hatidocker network create shopnetTalian baru. Mulakan container dengan --network shopnet.docker network connect shopnet webSambungkan container yang sedang berjalan.docker network lsSenaraikan talian: bridge, host, none dan talian anda.docker network inspect shopnetTengok siapa yang bersambung ke shopnet.
Set hidangan (Compose)
docker compose up -dBina, tarik dan mulakan semuanya di belakang.docker compose --profile cache up -dMulakan juga servis dalam profil cache.docker compose up -d --scale api=2Jalankan dua container api.docker compose downKemas meja, simpan loker.Risiko: Hati-hatidocker compose down -vPadam juga volume dan datanya.Risiko: Hati-hatidocker compose psSetiap servis dengan keadaan dan portnya.docker compose logs apiLog satu servis.docker compose exec api shShell di dalam servis api.docker compose configcompose.yaml akhir, dengan pemboleh ubah diisi.docker compose restart apiMulakan semula satu servis.docker compose watchSimpan fail, lihat perubahannya.
Kongsi image
echo $DOCKER_TOKEN | docker login -u you --password-stdinLog masuk dengan token, dengan selamat.Risiko: Hati-hatidocker logoutLupakan log masuk.Risiko: Hati-hatidocker push you/diary:1.0Letak diary 1.0 dalam akaun Docker Hub anda.Risiko: Hati-hatidocker scout cves --only-severity critical,high kedai:1.0Dua jenis lubang paling teruk sahaja.docker scout quickview kedai:1.0Ringkasan pendek lubang-lubangnya.docker scout cves --exit-code kedai:1.0Kod keluar 2 bila jumpa lubang. Sesuai untuk skrip.docker buildx imagetools inspect ghcr.io/you/kedai-api:1.0Digest, platform dan manifest attestation.docker buildx imagetools inspect ghcr.io/you/kedai-api:1.0 --format '{{ json .SBOM.SPDX }}'SBOM: setiap pakej di dalamnya.docker buildx imagetools inspect ghcr.io/you/kedai-api:1.0 --format '{{ json .Provenance.SLSA }}'Provenance: cara ia dibina.
Kemas
docker rm webBuang web. Volume kekal.Risiko: Boleh hilang kerjadocker rm -f webHenti dan buang yang sedang berjalan. Hati-hati!Risiko: Boleh hilang kerjadocker rmi diary:1.0Buang diary:1.0.Risiko: Hati-hatidocker system dfRECLAIMABLE ialah apa yang pengemasan boleh kosongkan.docker system pruneIa tanya dulu. y padam, N simpan.Risiko: Boleh hilang kerjadocker container pruneContainer yang berhenti sahaja.Risiko: Boleh hilang kerjadocker image prune -aSemua image yang tiada container guna.Risiko: Boleh hilang kerjadocker volume pruneVolume tanpa nama yang tak diguna. Dengan -a: semua volume tak diguna!Risiko: Boleh hilang kerjadocker builder pruneCache binaan lama.Risiko: Boleh hilang kerja