Docker
Docker
Docker image
TIP
หลังจาก build image เสร็จแล้ว แนะนำให้ใช้คำสั่งนี้เพื่อลบไฟล์แคชจากการ build ทำให้ลดการใช้เนื้อที่บนเซิรฟเวอร์
docker builder prune
แนวทางการตั้งชื่อ image name และ กำหนด tag ที่ได้มาจากการ build ดังนี้
docker build -t [images name]:[tag] . --no-cache
Image name: จะต้องกำหนดชื่อให้บ่งบอกถึงเซอร์วิสที่จะใช้งาน เช่น
project1-frontend
Tag: จะประกอบไปด้วยเวอร์ชั่นและครั้งที่ build เช่น
x.x.x-build.x
dockerFROM nginx:1.24.0-alpine EXPOSE 80 EXPOSE 443 CMD ["nginx", "-g", 'daenib off;"]
bashdocker build -t project1-frontend:v1.0.0-build.3 . --no-cache
Docker compose
จากที่ได้อัพเดท Docker version 26.1.3, build b72abbb
ถ้ามีการใช้ไฟล์ docker-compose.yml
ไม่จำเป็นต้องใส่ version: "3"
# docker-compose.yml
# version: "3"
networks:
my-network:
external: true
services:
service-name1:
image: image-name:tag
container_name: service-name1
restart: always
ports:
- 'xxxx:xxxx'
environment:
- NODE_ENV=production
networks:
my-network:
ipv4_address: xx.xx.xx.xx
Docker network
วิธีเปลี่ยน default ip docker0
WARNING
เปลี่ยน default ip docker0 ก่อนการ Deploy เพราะถ้าไม่เปลี่ยน IP จะทำให้ไม่่สามารถเข้าใช้งานจาก
PSU WiFI
ได้ขั้นตอนนี้ทำเพื่อป้องกันไม่ให้มีการแจก IP 172.0.0.0/8 ในกรณีที่ run docker โดยไม่สร้าง network
สร้างไฟล์
daemon.json
และตั้งค่าตามนี้bashvi /etc/docker/daemon.json
json{ "bip": "10.0.0.1/24", "default-address-pools": [{ "base": "10.0.2.0/18", "size": 24 }] }
คำสั่งการสร้าง Docker network
WARNING
ก่อน run docker จะต้องสร้าง docker network และต้องเลือกใช้ docker network ที่สร้างขึ้นมา
โดยจะต้องกำหนดค่าต่าง ๆ ดังนี้
driver bridge
subnet 10.0.88.0/24
gateway 10.0.88.1
docker network create [driver] [subnet] [gateway] [network name]
bashdocker network create --driver=bridge --subnet=10.0.88.0/24 --gateway=10.0.88.1 my-network
คำสั่ง docker run with network name and ip address
bashdocker run -d -p PORT:PORT --name portainer_agent \ --network=[NETWORK_NAME] --ip=[IP_ADDRESS] --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/volumes:/var/lib/docker/volumes \ -v /:/host portainer/agent:2.21.1