Bài 3. Tìm hiểu Docker Container
Giới thiệu
Container là một môi trường chạy thực, nơi ứng dụng được đóng gói và khởi động ở bên trong. Ở góc độ người dùng, container cũng giống như một máy ảo, cũng cần được cung cấp tài nguyên CPU, RAM, Network, ổ đĩa lưu trữ, biến môi trường,…
- Với
network:containernằm trong một mạng lưới độc lập so vớiinternetcũng như mạnglocaltrên máy tính. Nên để truy cập vào ứng dụng trongcontainer, chúng ta sẽ cần tạo kết nối từ máy tính vào trongcontainer. CPUvàRAMđược cung cấp dựa theo yêu cầu sử dụng của ứng dụng trongcontainer.- Ổ đĩa lưu trữ cũng được cung cấp tạm thời, sẽ bị mất đi nếu không sử dụng cơ chế
volume/bind mountcủa Docker để đồng bộ dữ liệu trongcontainerra ngoài máy tính. - Biến môi trường: khi tạo ra
container, chúng ta có thể thêm vàocontainercác biến môi trường cần thiết.
Yêu cầu
- Đã có kiến thức cơ bản về Linux
- Đã có kiến thức cơ bản về Git
- Terminal đến máy chủ Ubuntu sẵn sàng nhập lệnh
- Đã cài đặt Docker ở bài trước
Nội dung
1. Tạo container từ image
Cú pháp:
docker run [options] <image>
Một số option thông dụng:
--name <name>tên container-dđưa container xuống chạy ngầm-p <host_port>:<container_port>mapping port-vtạo kết nối storage giữa host với container-v <host_path>:<container_path>Kiểu gán thư mục với thư mục-v <volume>:<container_path>Kiểu gán volume(do docker quản lý) với thư mục
-e <key>:<value>Thiết lập biến môi trường cho ứng dụng trong container
Ví dụ đơn giản:
docker run nginx
Sử dụng các option trong câu lệnh docker run:
docker run -d -p 80:80 docker/getting-started
Khởi chạy ứng dụng cơ sở dữ liệu mysql với các yêu cầu:
- Đưa
containerxuống chạy ngầm - Mở cổng kết nối: 80 trên
host→ 80 trêncontainer - Thêm biến môi trường:
passwordchouser root. Tên biến “MYSQL_ROOT_PASSWORD”, giá trị “mypassword” - Đặt tên container là “mysql-4”
- Sử dụng image là “mysql:5.7”
- Kết nối
storagegiữahostvớicontainersử dụngvolumecó tên “mysql_data”, kết nối vào trongcontainerở thư mục “/var/lib/mysql”
docker run -itd -e MYSQL_ROOT_PASSWORD=mypassword -v mysql_data:/var/lib/mysql --name mysql-4 -p 13307:3306 mysql:5.7
2. Liệt kê các container
Cú pháp:
docker container ls
# hoặc
docker ps
Cú pháp trên sẽ hiển thị các container ở trạng thái running, còn các image ở trạng thái khác sẽ cần tới option -a trong câu lệnh để hiển thị lên kết quả câu lệnh.
docker container ls -a
# hoặc
docker ps -a
Các thành phần trong Docker được quản lý bởi định danh, các định danh này chính là một chuỗi các ký tự không trùng khớp nhau. Ngoài ra, bạn cũng cần để ý tới trạng thái của container, running hay exit?
Trong phần này, quy ước <container> trong các câu lệnh được hiểu là <container_id> hoặc <container_name>.
3. Kiểm tra thông tin của container
Cú pháp:
docker container inspect <container>
# Hoặc
docker inspect <container>
Đọc các thông tin, những thông tin này là hữu ích trong quá trình debug, tìm ra lỗi sai của container.
Ví dụ:
docker inspect mysql-4
4. Kiểm tra log ứng dụng
Cú pháp:
docker container logs <container>
docker logs <container>
Ví dụ
docker logs -f mysql-4
5. Truy cập vào trong container
Cú pháp:
- Tương tác một lệnh:
docker container exec <container> <command>
# hoặc
docker exec <container> <command>
- Mở
shellkết nối tớicontainer, sử dụng thêmoption -itvà truyền vàoshellsử dụng (shhoặcbash)
docker container exec -it <container_id> <shell>
# hoặc
docker exec -it <container_id> <shell>
Ví dụ:
docker exec -it mysql-4 sh
6. Trạng thái của container
Dưới đây mô tả các trạng thái của một container có thể có:
Để chuyển đổi là các câu lệnh tương ứng:
docker create [options] <image>: đưa container tới trạng tháicreateddocker start <container>: khởi độngcontainertừ trạng tháicreatedsangrunninghoặc từstoppedsangrunningdocker run [options] <image>: Tạo mớicontainertừimagedocker pause <container>: tạm dừng hoạt động củacontainerdocker unpause <container>: chuyển đổi trạng thái chocontainertừpausedsangrunningdocker stop <container>: tương tự như hành độngshutdownmáy tính.docker rm <container>: dùng để xóacontainer, tương tự như hành động vất máy tính vào thùng rác.
Container là một môi trường chạy ứng dụng cách ly, cung cấp các tài nguyên cần thiết như CPU, RAM, Network, ổ đĩa lưu trữ và biến môi trường. Các container được quản lý thông qua Docker, cho phép tạo, chạy, dừng, và xóa các container một cách hiệu quả. Việc sử dụng container mang lại lợi ích về tính linh hoạt, khả năng mở rộng, và quản lý tài nguyên, giúp tối ưu hóa việc triển khai và vận hành ứng dụng. Với kiến thức cơ bản về Docker, Linux, và Git, bạn có thể dễ dàng tạo và quản lý các container để phục vụ cho nhu cầu phát triển và triển khai ứng dụng của mình.
Tác giả: Đỗ Thiên Giang
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.
Tags:
Bài viết liên quan
Hiểu về AI, LLM, RAG và Agentic RAG trong 15 phút
Trong vài năm gần đây, trí tuệ nhân tạo (AI) đã bùng nổ mạnh mẽ và trở thành tâm điểm của cả thế giới công nghệ. Nhưng đi kèm với nó là hàng loạt khái niệm mới như LLM, RAG, hay Agentic RAG khiến nhiều người mới bắt đầu cảm thấy lúng túng.
Đọc thêm
Hướng dẫn tự triển khai N8N trên CentOS bằng Docker Compose và NGINX
N8N là công cụ mã nguồn mở cho phép bạn tự động hóa quy trình làm việc (workflow automation) và tích hợp nhiều dịch vụ khác nhau mà không cần phải lập trình.
Đọc thêm
Hướng dẫn phân tích độ phức tạp thuật toán chi tiết
Độ phức tạp của giải thuật là một cách để đánh giá hiệu quả của một giải thuật dựa trên hai yếu tố chính là độ phức tạp thời gian và độ phức tạp không gian.
Đọc thêm
Bài 6. Các thao tác với XPath và Selector trong Selenium
Bài viết này hướng dẫn bạn làm việc XPath và Css Selector trong Selenium.
Đọc thêm
Bài 5. Các thao tác với Web Browser trong Selenium
Bài viết này hướng dẫn bạn làm việc sâu Web Browser trong Selenium.
Đọc thêm
Bài 4. Thực thi Javascript trong Selenium
Bài viết này hướng dẫn bạn thực thi lệnh Javascript trong Selenium.
Đọc thêm
Bài 3. Làm việc với Element trong Selenium
Bài viết này hướng dẫn bạn làm việc với Element trong Selenium.
Đọc thêm
Bài 2. Các thao tác cơ bản về Selenium
Bài viết này hướng dẫn bạn tạo dự án Selenium C# và thực hiện thao tác cơ bản.
Đọc thêm
Bài 1. Giới thiệu về Selenium
Bài viết giới thiệu sơ lược về chuỗi bài Selenium.
Đọc thêm
Bài 18. Xây dựng Docker Compose .NET Core Và SQL Server
Hướng dẫn xây dựng Docker Compose .NET Core Và SQL Server
Đọc thêm