Nội dung chính

Cài đặt

Linux

Để biết thêm thông tin, xem tại đây

curl -sSL https://get.docker.com/ | sh

Mac

Để biết thêm thông tin, xem tại đây

Sử dụng liên kết này để tải xuống dmg.

https://download.docker.com/mac/stable/Docker.dmg

Mở tệp đã tải xuống và làm theo hướng dẫn cài đặt.

Windows

Để biết thêm thông tin, xem tại đây

Sử dụng trình cài đặt msi:

https://download.docker.com/win/stable/InstallDocker.msi

Mở tệp đã tải xuống và làm theo hướng dẫn cài đặt.

Đăng ký Docker & Registry

Đăng nhập vào registry

docker login
docker login localhost:8080

Đăng xuất từ registry.

docker logout
docker logout localhost:8080

Tìm kiếm image

docker search nginx
docker search --filter stars=3 --no-trunc nginx

Pull image

docker image pull nginx
docker image pull eon01/nginx localhost:5000/myadmin/nginx

Push image

docker image push eon01/nginx
docker image push eon01/nginx localhost:5000/myadmin/nginx

Run Container

Create và Run Container đơn giản

-Bắt đầu một ubuntu:latest Image mới nhất

  • Ràng buộc Port từ CONTAINER vào Port trên HOST 80:3000
  • Gắn thư mục hiện tại vào container /data
  • Note: Trên windows bạn phải đổi sang -v ${PWD}:/data-v "C:\Data":/data
docker container run --name infinite -it -p 3000:80 -v ${PWD}:/data ubuntu:latest

Create Container

docker container create -t -i eon01/infinite --name infinite

Run Container

docker container run -it --name infinite -d eon01/infinite

Đổi tên Container

docker container rename infinite infinity

Loại bỏ Container

docker container rm infinite

Một container chỉ có thể được xóa bỏ sau khi dừng nó bằng lệnh. Để tránh điều này, hãy thêm tham số sau trong khi Run container.

docker stop --rm

Cập nhật Container

docker container update --cpu-shares 512 -m 300M infinite

Run lệnh trong container đang chạy

docker exec -it infinite sh

Start & Stop Container

Start

docker container start nginx

Stop

docker container stop nginx

Khởi động lại

docker container restart nginx

Pause

docker container pause nginx

Unpause

docker container unpause nginx

Block container

docker container wait nginx

Gửi SIGKILL

docker container kill nginx

Gửi tín hiệu khác

docker container kill -s HUP nginx

Kết nối với container hiện có

docker container attach nginx

Nhận thông tin về Container

Từ Run Container

Cách ngắn nhất:

docker ps

Thay thế:

docker container ls

Từ tất cả các container.

docker ps -a
docker container ls -a

Container Logs

docker logs infinite

Logs ‘đuôi -f’ Container’

docker container logs infinite -f

Kiểm tra container

docker container inspect infinite
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -q)

Container event

docker system events infinite

Public port

docker container port infinite

Run process

docker container top infinite

Xem sử dụng tài nguyên Container

docker container stats infinite

Kiểm tra các thay đổi đối với tệp hoặc thư mục trên hệ thống tệp của container

docker container diff infinite

Quản lý Images

Listing Images

docker image ls

Building Images

Từ một Dockerfile trong thư mục hiện tại

docker build .

Từ một git Repository

docker build github.com/creack/docker-firefox

Thay vì chỉ định context, bạn có thể sử dụng một Dockerfile duy nhất trong URL hoặc pipeline thông qua STDIN

docker build - < Dockerfile
docker build - < context.tar.gz

Build và Tag

docker build -t eon/infinite .

Build Dockerfile và chỉ định Build Context

docker build -f myOtherDockerfile .

Build từ Remote Dockerfile URI

curl example.com/remote/Dockerfile | docker build -f - .

Loại bỏ một Image

docker image rm nginx

Tạo image từ tệp hoặc luồng đầu vào tiêu chuẩn

docker image load < ubuntu.tar.gz
docker image load --input ubuntu.tar

Lưu trữ Image bằng Tar Archive (dump image)

docker image save busybox > ubuntu.tar

Hiển thị lịch sử của Image

docker image history

Create Image từ Container

docker container commit nginx

Gắn thẻ Image

docker image tag nginx eon01/nginx

Đẩy Image

docker image push eon01/nginx

Network

Create Network

Create Network overlay

docker network create -d overlay MyOverlayNetwork

Create Network bridge

docker network create -d bridge MyBridgeNetwork

Create Network overlay tùy chỉnh

docker network create -d overlay \
  --subnet=192.168.0.0/16 \
  --subnet=192.170.0.0/16 \
  --gateway=192.168.0.100 \
  --gateway=192.170.0.100 \
  --ip-range=192.168.1.0/24 \
  --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
  --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
  MyOverlayNetwork

Loại bỏ Network

docker network rm MyOverlayNetwork

List Network

docker network ls

Nhận thông tin về Network

docker network inspect MyOverlayNetwork

Kết nối Container Đang Run với Network

docker network connect MyOverlayNetwork nginx

Kết nối Container với Network khi nó khởi động

docker container run -it -d --network=MyOverlayNetwork nginx

Ngắt kết nối Container khỏi Network

docker network disconnect MyOverlayNetwork nginx

Expose Port

Sử dụng Dockerfile, bạn có thể Expose một Port trên Container bằng cách sử dụng:

EXPOSE <port_number>

Bạn cũng có thể ánh xạ Port chứa đến Port lưu trữ bằng cách sử dụng:

docker run -p $HOST_PORT:$CONTAINER_PORT --name <container_name> -t <image>

Ví dụ:

docker run -p $HOST_PORT:$CONTAINER_PORT --name infinite -t infinite

Security

Hướng dẫn xây dựng Image Docker an toàn

  1. Nên sử dụng base image cơ bản nhất (ubuntu, debian, cetos, alpine …)
  2. User chạy app trong Image là user ít đặc quyền nhất
  3. Ký và xác minh Image để giảm thiểu các cuộc tấn công MITM
  4. Tìm, fix và giám sát các lỗ hổng mã nguồn mở
  5. Không rò rỉ thông tin nhạy cảm vào Image docker
  6. Sử dụng tag cố định cho sự bất biến
  7. Sử dụng COPY thay vì ADD
  8. Sử dụng label cho metadata
  9. Sử dụng multi-stage build nhiều giai đoạn cho Image
  10. Sử dụng linter

Bạn có thể tìm thấy thêm thông tin trên bài đăng trên blog 10 Docker Image Security Best Practices của Snyk.

Làm sạch Docker

Loại bỏ Container đang Run

docker container rm nginx

Loại bỏ một container và khối lượng của nó

docker container rm -v nginx

Loại bỏ tất cả các Container Đã thoát

docker container rm $(docker container ls -a -f status=exited -q)

Loại bỏ Tất cả Container Đã dừng

docker container rm `docker container ls -a -q`

Loại bỏ Image Docker

docker image rm nginx

Loại bỏ Image không dùng

docker image rm $(docker image ls -f dangling=true -q)

Loại bỏ tất cả Image

docker image rm $(docker image ls -a -q)

Xóa tất cả Image chưa được gắn thẻ

docker image rm -f $(docker image ls | grep "^<none>" | awk "{print $3}")

Dừng & Loại bỏ tất cả Các Container

docker container stop $(docker container ls -a -q) && docker container rm $(docker container ls -a -q)

Loại bỏ volume không dùng

docker volume rm $(docker volume ls -f dangling=true -q)

Loại bỏ tất cả các không sử dụng (Container, Image, Network và ổ đĩa)

docker system prune -f

Clean hết mọi thứ

docker system prune -a

Docker Swarm

Cài đặt Docker Swarm

curl -ssl https://get.docker.com | bash

Create Swarm

docker swarm init --advertise-addr 192.168.10.1

Thêm node vào cụm

docker swarm join-token worker

Thêm node master vào cụm Swarm

docker swarm join-token manager

List các Service

docker service ls

List các Node

docker node ls

Create Service

docker service create --name vote -p 8080:80 instavote/vote

List Swarm Service

docker service ps

Thay đổi size Service

docker service scale vote=3

Update Service

docker service update --image instavote/vote:movies vote
docker service update --force --update-parallelism 1 --update-delay 30s nginx
docker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent vote
docker service update --limit-cpu 2 nginx
docker service update --replicas=5 nginx
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments