1. Install Docker
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker
2. Một số lệnh cơ bản
#kiểm tra phiên bản
docker --version
#liệt kê các image
docker images -a
#xóa một image (phải không container nào đang dùng)
docker images rm imageid
#tải về một image (imagename) từ hub.docker.com
docker pull imagename
#liệt kê các container
docker container ls -a
#xóa container
docker container rm containerid
#tạo mới một container
docker run -it imageid
#thoát termial vẫn giữ container đang chạy
CTRL +P, CTRL + Q
#Vào termial container đang chạy
docker container attach containerid
#Chạy container đang dừng
docker container start -i containerid
#Chạy một lệnh trên container đang chạy
docker exec -it containerid command
3. Docker compose
Docker compose là một công cụ cho việc định nghĩa và khởi chạy nhiều container với docker. Khai bao nhiều container trong cùng một file
– Khai báo app’s enviroment với Dockerfile
– Khai báo các services cần thiết để chạy app trong docker-compose.yml
– Run docker-compose up
4. Docker swarm
Docker Swarm là công cụ native clustering cho Docker. Cho phép ta có thể gom một số Docker host lại với nhau thành dạng cụm (cluster) và ta có xem nó như một máy chủ Docker ảo (virtual Docker host) duy nhất. Và một Swarm là một cluster của một hoặc nhiều Docker Engine đang chạy. Và Swarm mode cung cấp cho ta các tính năng để quản lý và điều phối cluster.

Swarm: là một cluster của một hoặc nhiều Docker Engine đang run (cụ thể ở đây là các node) trong chế độ Swarm, thay vì phải chạy các container bằng câu lệnh thì ta sẽ thiết lập các services để phân bổ các bản replicas tới các node.
Node: Một node là một máy vật lý hay máy ảo đang run phiên bản Docker Engine trong chế độ Swarm. Node sẽ gồm hai loại: Manager Node và Worker Node.
Manager Node: Là node nhận các define service từ user, nó quản lý và điều phối các task đến các node Worker. Theo mặc định node Manager cũng được coi là node Worker.
Worker Node: là node nhận và thực thi các task từ node Manager.
Service: Một service xác định image của container và số lượng các replicas (bản sao) mong muốn khởi chạy trong swarm.
Task: là một tác vụ mà node worker phải thực hiện. Tác vụ này sẽ do node Manager phân bổ xuống. Một task mang một Docker Container và các lệnh để chạy bên container.
Khởi tạo swarm
docker swarm init --advertise-addr
docker swarm join --token <host>:<port>
docker swarm init --advertise-addr 10.10.1.34
docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx 10.10.1.34:2377
docker service ls
docker service ps
Tạo network và service trong swarmdocker network create \
--scope=swarm \
--attachable \
-d overlay \
my_networkdocker service create \
--name my-web --with-registry-auth --replicas 2 \
--network my_network\
--publish published=8090,target=80,protocol=tcp \
--workdir /app \
my-registry.com/my.web/product:18eb15c9
5. Quản lý docker bằng Portainer
Deploy portainer trên dockerdocker run -d \
-p 8000:8000 \
-p 9443:9443 \
--name portainer \
--restart=always \
–v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce:2.20.3
Deploy stack trên swarm$ curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
$ docker stack deploy --compose-file=portainer-agent-stack.yml portainer
