7/20/2024

Docker on debian12

https://intranet.scivalve.com/blog.php?u=3&b=1953

https://docs.docker.com/desktop/install/debian/
1. ติดตั้ง Debian12
2. เตรียมติดตั้ง Docker
  1. for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done


  1. sudo apt-get update
  2. sudo apt-get install ca-certificates curl
  3. sudo install -m 0755 -d /etc/apt/keyrings
  4. sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
  5. sudo chmod a+r /etc/apt/keyrings/docker.asc


# Add the repository to Apt sources: bookworm คือ VERSION_CODENAME ของ OS แต่ละรุ่น
  1. echo \
  2.   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  3.   $(. /etc/os-release && echo "bookworm") stable" | \
  4.   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  1. sudo apt-get update
  2. sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  3. docker run hello-world
  4. docker version


3. สร้าง file
  1. mkdir php
  2. cd php
  3. nano docker-compose.yml


PHP+DB+phpmyadmin เพิ่มข้อมูล
version: "3.8"
services:
php-apache-environment:
container_name: php-apache
build:
context: ./
dockerfile: Dockerfile
depends_on:
- db
volumes:
- ./:/var/www/html/
ports:
- 8001:80

db:
container_name: db
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MYSQL_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "8002:3306"

phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
ports:
- "8003:80"
restart: always
environment:
PMA_HOST: db
depends_on:
- db


ในไฟล์ docker-compose.yml เป็นตัวตั้งค่านำไปใช้ใน โปรแกรม เช่น
database name คือ db
User Password อยู่ที่ environment
ports ต่าง ๆ สามารถเปลี่ยนได้ เช่น 8001 คือ web apache, 8003 คือ phpmyadmin


4. สร้าง Dockerfile ชื่อต้องตรงกันกับในไฟล์ docker-compose.yml version php สามารถเปลี่ยนตามที่เราต้องการ
FROM php:8.2-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN apt-get update && apt-get upgrade -y

คำสั่ง
  1. sudo docker compose up #เริ่มทำงาน
  2. sudo docker compose down #หยุดทำงาน
  3. sudo docker compose pull #update
  4. sudo docker compose up -d #เริ่มทำงานแบบ daemon


  1. sudo docker ps #เรียกดูรายการ process ที่กำลังทำงานอยู่
  2. sudo docker exec -it [ID] bash #เรียกใช้คำสั่งภายใน container


5. เตรียม Folder web
  1. chown www-data:www-data -r /php
  2. chmod 775 -r /php


ใน 1 เครื่อง CT ประกอบด้วย 3 Image
ดู ID ของแต่ละเครื่อง
  1. docker ps

เข้าไปแต่ละเครื่อง bash คือโปรแกรมที่ต้องการใช้งาน
  1. docker exec -it 1d6f98697fba bash

ตั้งเวลาของแต่ละ Image
  1. dpkg-reconfigure tzdata


6. เปิด root ให้สามารถ เข้า ssh ได้ จะได้เข้าได้หลาย ๆ User หรือจะเพิ่ม User เอาก็ได้
  1. nano /etc/ssh/sshd_config

เพิ่มไว้ท้ายสุด
PermitRootLogin yes
  1. /etc/init.d/ssh restart


เพิ่ม User
  1. adduser sa

No comments:

Post a Comment