Các lệnh show trên Docker, Cách sử dụng, quản lý Docker

Các lệnh show trên Docker,​​ Cách sử dụng, quản lý​​ Docker

A./ Lệnh show hệ thống

1./ View các lệnh mà docker chạy với các subcommand

docker

2./ View thông tin chi tiết hệ thống mà bạn cài docker lên

docker info

B./ Lệnh show Images

images hiểu đơn giản là tất cả những​​ gì tạo nên 1 container ban đầu.​​ 

1./ Kiểm tra download images từ Docker Hub

docker run hello-world

Kết quả

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

1b930d010525: Pull complete​​ 

Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e

Status: Downloaded newer image for hello-world:latest

 

Hello from Docker!

This message shows that your installation appears to be working correctly.

 

To generate this message, Docker took the following steps:

​​ 1. The Docker client contacted the Docker daemon.

​​ 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

 ​​ ​​ ​​​​ (amd64)

​​ 3. The Docker daemon created a new container from that image which runs the

 ​​ ​​ ​​​​ executable that produces the output you are currently reading.

​​ 4. The Docker daemon streamed that output to the Docker client, which sent it

 ​​ ​​ ​​​​ to your terminal.

 

To try something more ambitious, you can run an Ubuntu container with:

​​ $ docker run -it ubuntu bash

 

Share images, automate workflows, and more with a free Docker ID:

​​ https://hub.docker.com/

 

For more examples and ideas, visit:

​​ https://docs.docker.com/get-started/

 

2./ Kiểm tra có images nào sử dụng os ubuntu

docker search ubuntu

 

3./ Thực hiện download images Ubuntu về máy tính local

docker pull ubuntu

Kết quả

Using default tag: latest

latest: Pulling from library/ubuntu

5bed26d33875: Pull complete​​ 

f11b29a9c730: Pull complete​​ 

930bda195c84: Pull complete​​ 

78bf9a5ad49e: Pull complete​​ 

Digest: sha256:bec5a2727be7fff3d308193cfde3491f8fba1a2ba392b7546b43a051853a341d

Status: Downloaded newer image for ubuntu:latest

docker.io/library/ubuntu:latest

4./ Kiểm tra các image đã được download về

docker images

Kết quả:

docker images

REPOSITORY  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ TAG  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ IMAGE ID  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ CREATED  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ SIZE

ubuntu  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 4e5021d210f6  ​​ ​​ ​​ ​​ ​​ ​​​​ 2 weeks ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

hello-world  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ fce289e99eb9  ​​ ​​ ​​ ​​ ​​ ​​​​ 15 months ago  ​​ ​​ ​​ ​​ ​​​​ 1.84kB

5./​​ Stop 1 container​​ 

có thể sử dụng Container ID hoặc Container Name

docker stop heuristic_cray

heuristic_cray

6./ Start 1 Container

Có thể sử dụng Container ID hoặc Container Name

docker start heuristic_cray

heuristic_cray

7./​​ Xoá​​ 1 Container

docker rm heuristic_cray

heuristic_cray

8./ Xóa Container đang chạy

docker image rm -f 75835a67d134 2a4cca5ac898

-f nghĩa là force

 

9./​​ Đổi tên của Docker container

#​​ https://www.tecmint.com/name-docker-containers/

docker rename​​ amazing_wing​​ fixloinhanh

docker start fixloinhanh

docker ps

 

C./ Chạy 1 Docker Container

1./ Khởi chạy 1 Docker không đặt tên.

docker run -it ubuntu

Kết quả:

root@7833914afd5a:/#

Như vậy tạo ra 1 Docker với ID:​​ 7833914afd5a

Bạn có thể test gõ vài câu lệnh trên Docker

root@7833914afd5a:/# apt-get update

2./​​ Để​​ thoát container, lệnh này sẽ stop luôn​​ container

exit 

Thoát Container mà giữ Container vẫn running thì gõ Ctrl+PQ

3./​​ Để truy cập lại Docker​​ đang running

docker​​ attach​​ 7833914afd5a

 

4./​​ Để kiểm tra Container​​ ID, Container status, Container đã tạo từ bao giờ, container chạy ứng với Images nào

docker ps

Kết quả

 

5./ View Container tạo gần đây nhất

docker ps -l

 

6./ Tạo 1 Image từ​​ Container​​ trên local

Việc là này sẽ giúp bạn lưu trữ được 1 bản container mẫu để có thể tái sử dụng về sau. Ví dụ bạn đã build nodejs lên Container rồi,​​ bạn tạo Image từ Container đó và sau đó chỉ việc sử dụng Container đó, nodejs đã được cài sẵn.

Lệnh mẫu

docker commit -m "What you did to the image" -a "Author Name"​​ container_id​​ repository/new_image_name

option -m như là mô tả giúp bạn nhận ra sự khác biệt của image đó.

option -a​​ là người tạo ra image

repository/new_image_name là repository bạn tạo trên Docker Hub

Thông tin container_id được lấy ở:

root@srv037:~# docker ps

CONTAINER ID  ​​ ​​ ​​ ​​ ​​ ​​​​ IMAGE  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ COMMAND  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ CREATED  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ STATUS  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ PORTS  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ NAMES

7531a809fbf8  ​​ ​​ ​​ ​​ ​​ ​​​​ repository/nodejs-id  ​​​​ "/bin/bash"  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 6 minutes ago  ​​ ​​ ​​ ​​ ​​​​ Up 6 minutes  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ecstatic_mirzakhani

9432bbbf96c8 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ repository/nodejs-id  ​​​​ "/bin/bash"  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 10 minutes ago  ​​ ​​ ​​ ​​​​ Up 4 minutes  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ great_williams

1c19dcf15e95  ​​ ​​ ​​ ​​ ​​ ​​​​ 4e5021d210f6  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "/bin/bash"  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 18 hours ago  ​​ ​​ ​​ ​​ ​​ ​​​​ Up 18 hours  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ fixloinhanh

 

docker commit -m "nodejs-docker02" -a "Author:fixloinhanh" 9432bbbf96c8 repository/nodejs-02

sha256:b72bd93cf0e4f1817c9d3592c8d6e23db21d855739fe5895d95a0865a154cd9

Kiểm tra lại bản Image​​ MẪU

 

root@srv037:~# docker images

REPOSITORY  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ TAG  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ IMAGE ID  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ CREATED  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ SIZE

repository/nodejs-02 ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ b72bd93cf0e4  ​​ ​​ ​​ ​​ ​​ ​​​​ 2 minutes ago  ​​ ​​ ​​ ​​ ​​​​ 153MB

repository/nodejs-id  ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 3473bfbd907f  ​​ ​​ ​​ ​​ ​​ ​​​​ 18 hours ago  ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

ubuntu  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 4e5021d210f6  ​​ ​​ ​​ ​​ ​​ ​​​​ 2 weeks ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

hello-world  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ fce289e99eb9  ​​ ​​ ​​ ​​ ​​ ​​​​ 15 months ago  ​​ ​​ ​​ ​​ ​​​​ 1.84kB

 

Như vậy bạn đã có 1 Docker Images Mẫu. Để khởi chạy Docker mẫu như sau:

docker run​​ -it​​ ​​ repository/nodejs-02

 

docker start ​​ 9432bbbf96c8 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 

9432bbbf96c8

Như vậy đã tạo được xong Docker images mới​​ repository/nodejs-02

7./​​ Xóa 1 Docker Images

Trước tiên phải xóa hết container đang sử dụng Images của Docker Images đó. Kể cả​​ container đang stop

docker image rm 75835a67d134 2a4cca5ac898

Tìm container đang sử dụng chung 1 Images

docker ps -a | grep​​ repository/nodejs-02

8./​​ Tạo 1 container với name và hostname chỉ định

docker run -it --name os-centos -h centos8 centos:centos8.1.1911

Kiểm tra sẽ thấy container đang chạy

 

D./ Sử dụng Docker exec

1./ Câu lệnh​​ Docker exec​​ 

docker exec docker-id command

ví dụ

docker exec fixloinhanh ls

 

bin

boot

dev

etc

home

.

.

.

2./ Docker exec bash

Sử dục Docker exec bash tương đương việc attach vào container

Lệnh mẫu

docker exec -it <container> /bin/bash

Lệnh chạy

docker exec -it fixloinhanh bash

Khi ở trong bash, bạn gõ exit thì container vẫn chạy chứ không tắt như khi bạn attach vào container

 

3./ Docker exec với nhiều câu lệnh

Lệnh mẫu

docker exec <container> bash -c "command1 ; command2 ; command3"

Lệnh chạy

docker exec fixloinhanh bash -c "ls; pwd; "

E./​​ Save​​ và Load​​ Docker​​ Images​​ thành 1 file nén

1./ Save Docker images

Lệnh mẫu:

docker save --output name.tar images

Lệnh chạy

root@srv037:~# docker images

REPOSITORY  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ TAG  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ IMAGE ID  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ CREATED  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ SIZE

repository/nodejs-02  ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ b72bd93cf0e4 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 3 days ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 153MB

vidocq/nodejs-02  ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ b72bd93cf0e4  ​​ ​​ ​​ ​​ ​​ ​​​​ 3 days ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 153MB

repository/nodejs-id  ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 3473bfbd907f  ​​ ​​ ​​ ​​ ​​ ​​​​ 3 days ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

ubuntu  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 4e5021d210f6  ​​ ​​ ​​ ​​ ​​ ​​​​ 3 weeks ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

centos  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ centos8.1.1911  ​​ ​​ ​​ ​​​​ 470671670cac  ​​ ​​ ​​ ​​ ​​ ​​​​ 2 months ago  ​​ ​​ ​​ ​​ ​​ ​​​​ 237MB

 

docker save --output nodejs.tar b72bd93cf0e4

 

2./ Load​​ Docker images

Từ file Docker Images đã save có thể copy ra các Docker khác, sau đó để tái sử dụng cần Load Docker Images

Lệnh mẫu

docker load -i name.tar ​​ 

Lệnh chạy

docker load -i nodejs.tar ​​ 

Loaded image ID: sha256:b72bd93cf0e4f1817c9d3592c8d6e23db21d855739fe5895d95a0865a154cd90

Như vậy sẽ sinh ra 1 Docker image mới có ID nhưng chưa có Repository và chưa có tag

Tiến hành đặt tên và gắn tag cho new image

docker tag b72bd93cf0e4 nodejs-new:version2

F./ Chia sẻ dữ liệu trong Docker, tạo và quản lý ổ đĩa ​​ Docker Volume

1./ Chia sẻ dữ liệu trong Docker​​ 

ở trên máy​​ chủ cài Docker mình tạo ra 1 folder data trong đó tạo 1 file share.txt ghi nội dung tuỳ ý bên trong.

File share.txt này sẽ​​ là file chia sẻ giữa máy chủ cài Docker và các Container

Mình tạo mới 1 container để chia sẻ file

Như vậy mình đã tạo được 1 container​​ root@nodejs

#https://stackoverflow.com/questions/34163710/sharing-directories-in-a-docker-container-both-with-a-dockerfile-and-after-the-c

Lệnh mẫu:

sudo docker run -it​​ -v /home/ubuntu/Sharing​​ dockeruser/imageID:version​​ 

237MB

Lệnh chạy:

Kiểm tra trước images

 

 

root@srv037:/opt/data# docker images

REPOSITORY  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ TAG  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ IMAGE ID  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ CREATED  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ SIZE

nodejs-new  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ version2  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ b72bd93cf0e4  ​​ ​​ ​​ ​​ ​​ ​​​​ 3 days ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 153MB

repository/nodejs-id  ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 3473bfbd907f  ​​ ​​ ​​ ​​ ​​ ​​​​ 4 days ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

ubuntu  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ latest  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 4e5021d210f6  ​​ ​​ ​​ ​​ ​​ ​​​​ 3 weeks ago  ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ 64.2MB

centos  ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ centos8.1.1911  ​​ ​​ ​​ ​​​​ 470671670cac  ​​ ​​ ​​ ​​ ​​ ​​​​ 2 months ago  ​​ ​​ ​​ ​​ ​​ ​​​​ 237MB

tạo container và share

root@srv037:/opt/data# docker run -it -v /opt/data:/home/data b72bd93cf0e4

root@d5cac42ca618:/#

Như vậy đã tạo xong 1 docker ID​​ d5cac42ca618

Kiểm tra file share.txt

Bạn có thể tạo​​ file hoặc thư mục bên trong container sẽ được ánh xạ ngược lại qua host chạy docker.

2./ chia sẻ dữ liệu​​ giữa các container với nhau:

Cách 1: Tạo mới 1 container và phân vùng share trùng với máy host trùng với phân vùng share với container đã tạo trước đó

Bạn tạo​​ thêm​​ 1 container mới và share folder trùng với /opt/data trên host.

docker run -it --name host02 -h host02 -v /opt/data:/home/data b72bd93cf0e4

Trên host02 tạo 1 file

Trên host01 sẽ thấy

Cách 2: sử dụng volume​​ share

Lệnh mẫu:

docker run -it --name host03 -h host03 --volumes-from​​ container-id​​ image-id

Lệnh chạy

docker run -it --name host03 -h host03 --volumes-from d5cac42ca618 ubuntu:latest

Kết quả:

3./​​ Tạo và quản lý ổ đĩa trên Docker

lệnh list ổ đĩa đang tồn tại trên máy host cài Docker

docker volume ls

Tạo 1 ổ đĩa mới

docker volume create Name-Disk

ví dụ:

docker volume create disk01

Kiểm tra thông tin ổ đĩa vừa tạo

docker volume inspect Name-Disk

ví dụ:

docker volume inspect disk01

Xoá ổ đĩa

docker volume rm Name-Disk

ví dụ​​ 

docker volume rm​​ disk01

4./ ​​​​ Quản lý ổ đĩa trên Docker, container sử dụng ổ Đĩa

Trường hợp 1:​​ Tạo 1 container và mount ổ đĩa​​ mới​​ vào

docker run -it --name​​ host01 -h host01 --mount source=disk02,target=/home/disk02 ubuntu:latest

khi ghi dữ liệu từ container vào ổ đĩa việc xoá container không làm mất dữ liệu của ổ đĩa.​​ 

ví dụ​​ xoá container host01 sau đó tạo 1 container02 và mount ổ đía disk02:

Trường hợp​​ 2: Tạo 1 container và mount ổ đĩa​​ mà ổ đĩa đó là 1 folder trên máy host cài Docker

docker volume create --opt device=/opt/data/ --opt type=none​​ --opt​​ o=bind disk03

Kiểm tra thông tin disk03

docker volume inspect disk03

Mount ổ đĩa disk03 vào 1 container mới

docker​​ run​​ -it​​ -v DiskName:PathContainer ImageID

 

docker​​ run -it --name​​ host03 -h host03 -v​​ disk03:/home/disk03​​ ubuntu:latest

Kiểm tra

5./​​ Copy dữ liệu từ máy cài Docker container sang một Container đang chạy

docker cp /opt/data/share.txt​​ 89470c825021:/home/

với​​ 89470c825021​​ là ID của container hoặc có thể lấy name của container

G./​​ Tải về và sử dụng image busybox

Download image​​ busybox​​ về để sử dụng. busybox là 1 phiên bản siêu nhẹ của chuẩn Unix.​​ 

https://busybox.net/

Tạo 1 container test chỉ sử dụng 1 lần sau khi thoát container sẽ tự xóa thêm tham số --rm

docker run -it --rm busybox

Kiểm tra các lệnh mà busybox hỗ trợ

Như vậy có tới 399 lệnh mà busybox có thể hỗ trợ

H./ Tạo và quản lý network trong Docker

1./​​ Kiểm tra quản lý network​​ trong Docker

Kiểm tra network docker

docker network list

Mạng bridge giúp container kết nối ra ngoài internet, kết nối giữa các container và container tới host cài docker

Kiểm tra chi tiết network nào đó

docker network inspect NetworkID

 

docker network inspect​​ 

Kết quả

[

 ​​ ​​ ​​​​ {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Name": "bridge",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Id": "7278f48fdb98bab6e22c7e84f13eb52b3a327749065d8cbaf75023328fa98a84",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Created": "2020-04-09T15:16:02.716010005+07:00",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Scope": "local",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Driver": "bridge",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "EnableIPv6": false,

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "IPAM": {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Driver": "default",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Options": null,

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Config": [

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Subnet": "172.17.0.0/16",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Gateway": "172.17.0.1"

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ }

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ]

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ },

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Internal": false,

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Attachable": false,

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Ingress": false,

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "ConfigFrom": {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Network": ""

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ },

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "ConfigOnly": false,

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Containers": {},

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Options": {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "com.docker.network.bridge.default_bridge": "true",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "com.docker.network.bridge.enable_icc": "true",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "com.docker.network.bridge.enable_ip_masquerade": "true",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "com.docker.network.bridge.name": "docker0",

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "com.docker.network.driver.mtu": "1500"

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ },

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ "Labels": {}

 ​​ ​​ ​​​​ }

]

Khi tạo 1 container mới​​ "Containers": {},​​ sẽ thay đổi

ví dụ:

docker run -it --name busybox01 -h busybox01 busybox

sau khi tạo xong kiểm tra inspect network bridge sẽ thấy

hoặc inspect trực tiếp container vừa tạo

docker inspect busybox01

Khi tạo tiếp 1 container nữa busybox02 thì 2 container này có thể giao tiếp với nhau thông qua network bridge

docker run -it --name busybox02 -h busybox02 busybox

từ host cài docker

 

từ container busybox02

Thử bật httpd trên container busybox01

/ # cd /var/www/

/var/www # httpd

/var/www # vi index.html

/var/www # cat index.html​​ 

hello!

chuyển sang container busybox02

wget -O - 172.17.0.2

2./ ánh xạ, Nat port từ container sang máy host cài docker

tạo mới 1 container

docker run -it --name busybox03 -h busybox03 -p 8888:80​​ busybox

-p để ánh xạ

port 888 ở trên máy host cài docker

port 80 ở trên container busybox03

kiểm tra trên máy host

Tiếp theo bật​​ httpd trên container busybox03

kiểm tra trên máy host cài docker sẽ thấy port 8888 đã open

3./ Tạo, xóa​​ network mới​​ trên Docker

docker network create --driver bridge internet

docker network create --driver bridge internet02

4./ Tạo container​​ mới​​ kết nối vào network​​ internet mới vừa tạo

docker run -it --name busybox04 -h busybox04 --network internet​​ busybox

trên máy host kiểm tra

docker network inspect internet

5./ Tạo 1 container mới kết nối vào network internet mới tạo và ánh xạ port 8668 trên host cài docker

docker run -it --name busybox05 -h busybox05​​ --network​​ internet​​ -p 8668:80 busybox

Tương tự có thể enable httpd trên container busybox05

các container thuộc network internet có thể thông với nhau và thông với host cài docker nhưng không thông sang các network bridge

6./ cài đặt container có nhiều card network

docker network connect bridge​​ busybox05

 

trên container busybox05

Như vậy container busybox có cả 2 network bridge và internet

​​ Chúc các bạn thành công

 

Tham khảo:

https://docs.docker.com/

https://hub.docker.com/

XuanThuLab:​​ https://www.youtube.com/channel/UC_JI84U1f2EKIG6HQK35H5Q

https://busybox.net/

 

 

SaKuRai

Xin chào, Mình là Sakurai. Blog này là nơi để note lại và chia sẻ những kiến thức, kinh nghiệm mà mình và anh em trong Team. Cảm ơn các bạn đã quan tâm theo dõi!

You may also like...

Leave a Reply

Your email address will not be published.