Sơ đồ mạng container trong host

docker network

Docker host là máy vật lý hoặc máy ảo chạy linux 

Docker tạo docker bridge để kết nối các container

Mỗi container có 1 card mạng ảo veth, veth sẽ kết nối với docker bridge

Các container giao tiếp nội bộ với nhau qua docker bridge

Container nào muốn ra ngoài (expose) sẽ theo luồng: container ---veth---docker bridge --- iptables Nat/Dnat---car mạng vật lý của docker host ---internet

 

 [root@LinuxServer ~]#dnf update -y

 

[root@LinuxServer ~]#reboot

 

#Remove runc để tránh xung đột

 

[root@LinuxServer ~]#dnf remove runc -y

 

#Thêm Docker repository

 

[root@LinuxServer ~]#dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo|

 

[root@LinuxServer ~]#dnf install -y docker-ce docker-ce-cli containerd.io

 

#Start và enable Docker, check version

 

[root@LinuxServer ~]# systemctl start docker

 

[root@LinuxServer ~]#systemctl enable docker

 

[root@LinuxServer ~]#docker --version

 

Một số lệnh cơ bản

 

#Tải image có tên là ten_image (nếu không chỉ định version thì image tải về sẽ là mới nhất)

 

[root@LinuxServer ~]#docker pull ten_image:version

 

[root@LinuxServer ~]#docker pull nginx

 

#Liệt kê các images đã tải về

 

[root@LinuxServer ~]#docker images

 

#Chạy container ở chế độ backgroup và public ra ngoài

 

docker run –d –p port:port image

 

[root@LinuxServer ~]#docker run -d -p 80:80 nginx

 

#Nếu không có version thì image sẽ được tải mới nhất --name: đặt tên cho container

[root@LinuxServer ~]#docker run -d -p port:port--name tendocker image:version

# Liệt kê các container đang chạy

[root@LinuxServer ~]#docker ps               

# Liệt kê các container đang chạy và không chạy

[root@LinuxServer ~]#docker ps -a  

 # Thực thi lệnh trong container đang chạy

 

[root@LinuxServer ~]#docker exec -it ID_or_Name bash  

 

# Copy file từ host vào container

 

[root@LinuxServer ~]#docker cp file_tren_host Ten_docker:/path_docker  

 

[root@LinuxServer ~]#docker run -d --restart=always --name redmine_app redmine:latest

 

restart=always: container sẽ tự động khởi động lại khi host khởi động lại.

no: không tự khởi động lại.

on-failure: chỉ khởi động lại nếu container thoát với lỗi.

unless-stopped: khởi động lại trừ khi bạn dừng thủ công.

 

# stop, start hoặc restart container

 

[root@LinuxServer ~]#docker stop/start/restart ID_or_Name

 

----------------------------------------Docker Compose----------------------------------------

Docker Compose:

  • Công cụ orchestration nhẹ, dung 1 file yaml mô tả toàn bộ hệ thống
  • Chạy trên 1 máy
  • Quản lý nhiều container như một ứng dụng
  • Docker Compose tự tạo network
  • Giao tiếp với nhau bằng tên service, không cần IP

Sử dụng:

  • Tạo file docker-compose.yml 

[root@LinuxServer ~]#docker compose up -d       

 

[root@LinuxServer ~]#docker compose down        

 

[root@LinuxServer ~]#docker compose ps          

 

[root@LinuxServer ~]#docker compose logs -f     

 

[root@LinuxServer ~]#docker compose restart