Skip to content
An`s Weblog
Go back

Networking Containers

Mục tiêu:


1. Tạo network với Subnet & Gateway tùy chỉnh

docker network create \
  --subnet 10.1.0.0/24 \
  --gateway 10.1.0.1 \
  br02

Lưu ý: Chỉ dùng IP nội bộ như 10., 192., 172.

Mạng tạo ra sẽ có tên là br02, interface dạng br-<ID>.

2. Dọn dẹp mạng không sử dụng

docker network prune   # Xoá toàn bộ network chưa dùng

Trước đó cần xóa container liên quan:

docker container rm -f <container_id>

3. Tạo mạng với dải IP con – -ip-range

Giả sử ta có 10.1.0.0/16 cho cả cụm → tạo mạng dùng 10.1.4.0/24

docker network create \
  --subnet 10.1.0.0/16 \
  --gateway 10.1.0.1 \
  --ip-range 10.1.4.0/24 \
  --driver bridge \
  --label host4network \
  br04

br04 sẽ dùng dải IP trong 10.1.4.0/24.

4. Khởi tạo container gắn luôn network

docker container run -it --name network-test01 \
  --network br04 \
  centos /bin/bash
yum update -y
yum install -y net-tools
ifconfig       # Kiểm tra IP được gán từ br04
netstat -rn    # Kiểm tra gateway

DNS hoạt động thông qua:

/etc/resolv.conf, /etc/hostname, /etc/hosts (Docker gán tự động)

5. Gán IP tĩnh cho container

docker container run -d --name network-test02 \
  --network br04 \
  --ip 10.1.4.102 \
  nginx
docker container inspect network-test02 | grep IPAddr

6. Tạo mạng nội bộ – -internal

docker network create --internal localhost

Mạng localhost sẽ không thể truy cập từ bên ngoài host.

7. Container chỉ giao tiếp nội bộ

Tạo container MySQL:

docker container run -d \
  --name test_mysql \
  -e MYSQL_ROOT_PASSWORD=pass123 \
  --network localhost \
  mysql:5.7

Tạo container để ping:

docker container run -it --name ping-mysql \
  --network bridge centos /bin/bash
exit

Thêm container vào mạng nội bộ:

docker network connect localhost ping-mysql
docker container start -i ping-mysql
ping test_mysql    # Có thể ping qua localhost network

Tạo container không gắn localhost:

docker container run -it --name no-access centos /bin/bash
ping test_mysql    # Không kết nối được

8. Cách hoạt động của Internal Network

docker container run -d \
  --name private-nginx \
  -p 8081:80 \
  --network localhost \
  nginx
curl localhost:8081     # Không truy cập được
docker inspect private-nginx | grep IPAddr
curl <PRIVATE_IP>       # Truy cập được qua IP nội bộ

Vì --internal → mạng không liên kết với bất kỳ giao diện nào trên host


Tổng kết lệnh

LệnhÝ nghĩa
docker network createTạo network mới
--subnet, --gatewayĐịnh nghĩa mạng riêng
--ip-rangeChỉ định dải IP nhỏ trong subnet
--internalMạng nội bộ, không truy cập từ ngoài
--ipGán IP tĩnh cho container
docker network connectKết nối container với mạng
docker container inspectKiểm tra IP, gateway, DNS, v.v.

Share this post:

Previous Post
Creating Containers
Next Post
Networking Commands