Hướng dẫn sử dụng Docker chi tiết. Cách cài đặt lên macOS, Windows 10, Ubuntu
Khám phá cách cài đặt và sử dụng Docker chi tiết trên macOS, Windows 10 và Ubuntu, giúp bạn làm chủ môi trường phát triển ảo hóa.

- Docker là gì?
- Định nghĩa Docker là gì
- Một số khái niệm quan trọng về Docker
- Container trong Docker là gì?
- Ưu điểm của Docker so với Virtual Machine
- Lịch sử phát triển Docker
- Tại sao nên sử dụng Docker?
- Lợi ích khi sử dụng Docker
- Cách thức hoạt động của Docker
- Các công cụ, thuật ngữ cơ bản về Docker
- Quy trình thực thi một hệ thống sử dụng Docker
- Khi nào thì nên sử dụng Docker?
- Hướng dẫn cài đặt Docker
- Cài Docker trên macOS
- Cài Docker trên Windows 10
- Cài Docker trên Ubuntu
- Cài Docker trên CentOS 7 / RHEL 7
- Cài Docker trên CentOS 8 / RHEL 8
- Những lệnh cơ bản trong Docker
- Docker Container
- Cách chạy một Docker container
- Liệt kê danh sách Docker container
- Tìm kiếm thông tin chi tiết về container
- Xóa Docker container
- Docker Image
- Liệt kê danh sách các image
- Tìm kiếm Docker image
- Download Docker image
- Xóa Docker image
- Dockerfile
- Cách build image với Dockerfile
- Các chỉ thị trong Dockerfile
- FROM
- LABEL
- RUN
- COPY
- WORKDIR
- CMD
- EXPOSE
- ENV
- VOLUME
- Docker – Quản lý Ports
- Ví dụ 1:
- Ví dụ 2:
- Liên kết nhiều port
- Networking trong Docker
- Liệt kê các mạng:
- Tạo mạng:
- Kết nối container với mạng:
- Ngắt kết nối container khỏi mạng:
- Kiểm tra chi tiết mạng:
- Xóa mạng Docker:
- Ví dụ Docker Network: Kết nối MySQL và phpMyAdmin
- Bước 1: Tạo Docker Network
- Bước 2: Chạy MySQL Container
- Bước 3: Chạy phpMyAdmin Container
- Bước 4: Kiểm tra lại network
- Bước 5: Cho phép MySQL kết nối đến phpMyAdmin
- Bước 6: Truy cập phpMyAdmin
- Docker Compose là gì?
- Quy trình làm việc với Docker Compose gồm 3 bước:
- Cài đặt Docker Compose
- Ví dụ file docker-compose.yml
- Các lệnh Docker Compose thường dùng
- Ví dụ về Docker Compose
- Bước 1: Tạo cấu trúc thư mục
- Bước 2: Tạo Dockerfile cho webapp
- Bước 3: Tạo file docker-compose.yml
- Bước 4: Build webapp image
- Bước 5: Khởi động Docker Compose
- Bước 6: Cập nhật nội dung ứng dụng web
Docker là gì?
Docker là một dự án mã nguồn mở giúp cung cấp cách để building, deploying và running ứng dụng dễ dàng hơn bằng cách sử dụng các container (trên nền tảng ảo hóa). Ban đầu Docker viết bằng Python, nhưng hiện tại đã chuyển sang Golang.
Định nghĩa Docker là gì
Docker cung cấp một cách tiện lợi để xây dựng, chia sẻ và triển khai ứng dụng trên nhiều môi trường khác nhau, từ máy cục bộ đến các môi trường điều tiết sản xuất. Docker còn giúp giảm thiểu sự phức tạp trong quá trình triển khai ứng dụng, tối ưu hóa tài nguyên và tăng tính di động của ứng dụng.
Một số khái niệm quan trọng về Docker
Một số khái niệm quan trọng liên quan đến Docker bao gồm hình ảnh (images), container, Dockerfile và Docker Hub. Hình ảnh là một môi trường chạy được đóng gói cùng với ứng dụng và các phụ thuộc. Container là một thực thể chạy dựa trên hình ảnh. Dockerfile là một tập tin cấu hình sử dụng để tạo hình ảnh Docker. Docker Hub là một kho lưu trữ trực tuyến cho việc chia sẻ và quản lý các hình ảnh Docker.

Container trong Docker là gì?
Trong Docker, container là một đơn vị cô lập chứa đựng ứng dụng và môi trường chạy của nó. Containers cung cấp một cách đóng gói ứng dụng và tất cả các phụ thuộc của nó vào một đơn vị tiêu chuẩn hóa, giúp đảm bảo rằng ứng dụng có thể chạy một cách nhất quán trên mọi môi trường.
Docker cho phép các lập trình viên đóng gói các ứng dụng cần thiết vào trong container, như thư viện, gói dưới dạng package. Nhờ vào container, ứng dụng sẽ chạy trên mọi máy Linux bất kể mọi tùy chỉnh và cài đặt khác với máy dùng để viết code.
Docker khá giống với Virtual Machine, nhưng Docker phát triển mạnh mẽ và phổ biến nhanh chóng hơn.
Ưu điểm của Docker so với Virtual Machine
Dễ sử dụng: Docker rất dễ sử dụng có các developer, Admin System,… vì nó tận dụng container để build và kiểm tra nhanh chóng. Và nó có thể đóng gói các ứng dụng trên laptop của họ và chạy trên public cloud, private cloud,…
Tốc độ: Nói về tốc độ thì docker container rất nhẹ và nhanh và bạn có thể khởi tạo và chạy docker container chỉ trong vài giây.
Môi trường chạy: Bạn có thể tận dụng và chia nhỏ các container riêng lẻ. Ví dụ bạn có thể chạy Database trên một container và Redis cache chạy trên một container khác trong khi ứng dụng Node.js lại có thể chạy trên một container khác nữa. Khi sử dụng Docker bạn rất dễ để liên kết các container với nhau để tạo thành một ứng dụng. Từ đó, làm cho nó dễ dang scale và update các thành phần độc lập với nhau.
Thời điểm hiện tại thì thế giới bắt đầu sử dụng thêm một công cụ quản lý container hiện đại khác là Kubernetes.

Lịch sử phát triển Docker
Docker được tạo ra từ ông Solomon Hykes khi còn đang làm việc trong một dự án nội bộ của dotCloud ở Pháp. Đến đầu năm 2013, Docker được phát hành dạng mã nguồn mở và sau đó đến năm 2015, Docker trở thành top 20 dự án có số sao đánh giá cao nhất trên GitHub với hơn 6,800 fork và 11,00 lập trình viên.
Tại sao nên sử dụng Docker?
Việc setup và deploy application trên một hoặc nhiều máy chủ là một quá trình phức tạp và tốn nhiều công sức. Bao gồm việc cài đặt các công cụ và môi trường cần thiết cho ứng dụng, sau đó cố gắng đảm bảo ứng dụng chạy đúng cách trên từng máy chủ riêng biệt. Vấn đề khó khăn thêm nữa là sự không đồng nhất giữa các môi trường trên các máy chủ khác nhau. Để giải quyết những thách thức này, Docker ra đời như một giải pháp hiệu quả.
Lợi ích khi sử dụng Docker
Trái với máy ảo, Docker có khả năng start và stop container chỉ trong vài giây.
Bạn có thể triển khai container trên bất kỳ hệ thống nào mà bạn muốn.
Container có thể được xây dựng và xóa bỏ nhanh chóng hơn so với máy ảo.
Việc thiết lập môi trường làm việc dễ dàng hơn bao giờ hết. Chỉ cần cấu hình một lần và không cần phải cài đặt lại các phần mềm phụ thuộc. Nếu bạn chuyển sang một máy tính khác hoặc có người mới tham gia vào dự án, bạn chỉ cần chia sẻ cấu hình với họ.
Docker giữ cho không gian làm việc của bạn sạch sẽ hơn bằng cách ngăn chặn tác động đến các phần khác khi bạn loại bỏ môi trường.
Cách thức hoạt động của Docker
Về cách thức hoạt động của docker thì nó hoạt động bằng cách cung cấp phương thức tiêu chuẩn để chạy mã. Như cách máy ảo – ảo hóa (loại bỏ nhu cầu quản lý trực tiếp) phần cứng của máy chủ, các container sẽ ảo hóa hệ điều hành của máy chủ. Docker được cài đặt trên từng máy chủ và cung cấp các lệnh cơ bản để bạn có thể build, khởi tạo và dừng container.
Còn để hiểu về cơ chế hoạt động của Docker khá là phức tạp. Ở đây sẽ tóm gọn lại về hoạt động của Docker thông qua một Docker engine và kết hợp với 2 yếu tố sau:
1 server và 1 client.
Giao tiếp giữa server và client thông qua REST API.
Nếu bạn đang sử dụng hệ điều hành Windows/Mac cũ, bạn có thể tận dụng Docker toolbox, vì cho phép bạn điều kiển docker engine với Docker Compose và Kitematic.

Các công cụ, thuật ngữ cơ bản về Docker
Một số công cụ và thuật ngữ công nghệ bạn sẽ gặp phải khi sử dụng Docker bao gồm:
DockerFile: Mọi container Docker bắt đầu bằng một file văn bản đơn giản chứa hướng dẫn về cách tạo image container Docker. DockerFile tự động hóa tiến trình tạo image Docker. Về cơ bản, đây là danh sách các lệnh mà Docker Engine sẽ chạy để tập hợp image.
Docker container: Là các phiên bản live, running instance của Docker image. Ta thấy Docker image là file chỉ đọc còn container là phiên bản live, executable và người dùng có thể tương tác với chúng. Cùng với đó, quản trị viên có thể điều chỉnh cài đặt và các quy định của họ.
Docker Hub: Là kho lưu trữ công khai Docker image. Nó tự gọi mình là “thư viện và cộng đồng lớn nhất thế giới về image container”.
Docker Client: Đây là thành phần mà bạn có thể tương tác với Docker thông qua command line. Docker client sẽ gửi lệnh tới Docker Daemon thông qua REST API như đã đề cập ở trên.
Docker Engine: Đây là thành phần chính của Docker như một công cụ để đóng gói ứng dụng.
Docker Daemon: Dùng để lắng nghe các request từ Docker Client để quản lý các đối tượng như container, image, network và volume thông qua REST API.
Docker Volumes: Là phần dữ liệu được tạo ra khi container được khởi tạo.
Docker Machine: Tạo ra các docker engine trên máy chủ.
Docker Compose: Chạy ứng dụng bằng cách định nghĩa cấu hình các Docker Container thông qua file cấu hình.
Quy trình thực thi một hệ thống sử dụng Docker
Thường, để triển khai hệ thống Docker, phải tuân theo ba bước cơ bản: Build, Push và Pull, Run.
Build: Bước đầu tiên, bạn cần tạo một dockerfile, trong dockerfile này chính là code của mình. Dockerfile này sẽ được build ở một máy tính có cài đặt Docker Engine. Khi build xong, thì chúng ta sẽ có container và trong container sẽ chứa ứng dụng kèm bộ thư viện.
Push: Bạn thực hiện push Container lên cloud và lưu lại sau khi có được container.
Pull & Run: Nếu máy tính khác của bạn muốn sử dụng container thì máy của bạn phải thực hiện pull container này về máy đó. Và máy đó phải cài đặt trước Docker Engine. Tiếp theo, bạn mới thực hiện Run Container này.
Khi nào thì nên sử dụng Docker?
Trong những trường hợp sau đây bạn có thể sử dụng Docker hiệu quả:
- Triển khai kiến trúc Microservice.
- Sản phẩm công ty cần một cách tiếp cận mới về xây dựng, đẩy lên server và thực thi ứng dụng một cách nhanh chóng.
- Khi build ứng dụng cần scale một cách linh hoạt.
- Config máy local và server trên cùng một môi trường nhanh chóng.

Hướng dẫn cài đặt Docker
Cài Docker trên macOS
Tải bộ cài tại Docker Desktop for Mac, cài đặt đơn giản như các công cụ thông thường.
Cài Docker trên Windows 10
Tải bộ cài tại Docker Desktop for Windows, tiến hành cài đặt. Đối với Windows phải kích hoạt chế độ Hyper-V virtualization (Ở chế độ này bạn không dùng được VirtualBox nữa).
Nếu chưa kích hoạt Hyper-V thì kích hoạt theo hướng dẫn Enable Hyper-V:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Kích hoạt thông qua thiết lập Windows:
- Nhấn phải chuột vào biểu tượng cửa sổ, chọn Apps and Features.
- Chọn Programs and Features.
- Chọn Turn Windows Features on or off.
- Đánh dấu vào Hyper-V.
Cài Docker trên Ubuntu
Chạy các lệnh để cài đặt:
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
Thêm user hiện tại vào group docker:
sudo usermod -aG docker $USER
Logout và login lại để có hiệu lực.
Cài thêm docker-compose
nếu cần:
sudo apt install docker-compose
Cài thêm Docker Machine (nếu cần):
curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
Cài thêm VirtualBox (nếu Docker Machine yêu cầu):
sudo apt install virtualbox
Cài Docker trên CentOS 7 / RHEL 7
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce sudo usermod -aG docker $(whoami) sudo systemctl enable docker.service sudo systemctl start docker.service
Cài thêm Docker Compose
sudo yum install epel-release sudo yum install -y python-pip sudo pip install docker-compose sudo yum upgrade python* docker-compose version
Cài Docker trên CentOS 8 / RHEL 8
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce # Nếu lỗi, chạy lệnh sau sudo dnf install --nobest docker-ce -y sudo usermod -aG docker $(whoami) sudo systemctl enable docker.service sudo systemctl start docker.service
Cài thêm Docker Compose
sudo yum install epel-release sudo yum -y install python2-pip sudo pip2 install docker-compose sudo yum upgrade python* docker-compose version
Khi đã có Docker trên máy, làm việc với Docker để quản lý các thành phần của nó … hầu hết làm việc qua giao diện dòng lệnh CLI của hệ thống: trên macOS/Linux mở terminal để gõ lệnh, trên Windows thì nên dùng PowerShell để chạy các lệnh Docker.
Những lệnh cơ bản trong Docker
# Liệt kê image/container: docker image/container ls # Xóa image/container: docker image/container rm # Xóa toàn bộ image: docker image rm $(docker images –a –q) # Liệt kê toàn bộ container: docker ps –a # Dừng một container cụ thể: docker stop # Chạy container từ image và đổi tên container: docker run –name # Dừng toàn bộ container: docker stop $(docker ps –a –q) # Xóa toàn bộ container: docker rm $(docker ps –a –q) # Xem log container: docker logs # Build image từ container: docker build -t # Tạo container chạy ngầm: docker run -d # Tải image từ Docker Hub: docker pull # Khởi động container: docker start
Docker Container
Docker container là một instance của image. Một container chỉ cần kết hợp với các thư viện và thiết lập cần thiết để làm cho ứng dụng hoạt động. Nó là một môi trường đóng gói gọn nhẹ và di động cho một ứng dụng.
Cách chạy một Docker container
Sử dụng lệnh docker run
để khởi chạy Docker container trên hệ thống. Ví dụ:
docker run hello-world
Tạo một instance chạy hệ điều hành CentOS:
docker run -it centos
Liệt kê danh sách Docker container
docker ps
Dùng tùy chọn -a
để liệt kê tất cả container bao gồm cả container đã bị dừng:
docker ps -a
Tìm kiếm thông tin chi tiết về container
docker inspect
Ví dụ:
docker inspect cc5d74cf8250
Xóa Docker container
docker stop cc5d74cf8250 docker rm cc5d74cf8250
Docker Image
Image là tệp tin không thay đổi, giống như file ISO được sử dụng để cài hệ điều hành, về cơ bản nó là bản snapshot của container.
Liệt kê danh sách các image
docker images
Tìm kiếm Docker image
docker search centos
Download Docker image
docker pull centos
Xóa Docker image
docker rmi centos
Dockerfile
Dockerfile là một file được dùng để build một image bằng cách đọc các chỉ dẫn từ file đó. Tên file mặc định được dùng là Dockerfile
. Bạn có thể tạo Dockerfile trong thư mục hiện tại với các chỉ dẫn cụ thể và build một image tùy chỉnh theo yêu cầu của bạn.
Cách build image với Dockerfile
docker build -t image_name .
Sử dụng cờ -f
nếu Dockerfile không nằm ở thư mục hiện tại:
docker build -t image_name -f /path/to/Dockerfile .
Các chỉ thị trong Dockerfile
FROM
Thiết lập image cơ sở cho chỉ dẫn tiếp theo. Đây là chỉ thị bắt buộc và luôn đứng đầu.
FROM ubuntu FROM tecadmin/ubuntu-ssh:16.04
LABEL
Dùng để tổ chức metadata cho image như tên tác giả, phiên bản, nhà cung cấp,…
LABEL maintainer="seovietnix@gmail.com" LABEL vendor="Example" LABEL com.example.version="1.1.1"
Gộp nhiều LABEL:
LABEL maintainer="seovietnix@gmail.com" vendor="Example" \ com.example.version="1.1.1"
RUN
Chạy lệnh trong quá trình build image.
RUN apt-get update RUN apt-get install -y apache2 automake build-essential curl
Hoặc viết gộp:
RUN apt-get update && apt-get install -y \ automake \ build-essential \ curl
COPY
Copy file từ máy host vào image.
COPY html/* /var/www/html/ COPY *.conf /etc/apache2/sites-available/
WORKDIR
Thiết lập thư mục làm việc cho các chỉ thị như RUN, CMD, ENTRYPOINT,…
WORKDIR /opt
CMD
Thiết lập lệnh mặc định để chạy khi container khởi động.
CMD ["executable","param1","param2"] CMD ["apachectl", "-D", "FOREGROUND"]
EXPOSE
Chỉ định cổng mà container sẽ lắng nghe kết nối.
EXPOSE 80 EXPOSE 443
ENV
Thiết lập biến môi trường cho container.
ENV PATH=$PATH:/usr/local/pgsql/bin/ \ PG_MAJOR=9.6.0
VOLUME
Tạo mount point để chứa dữ liệu volume chia sẻ giữa host và container.
VOLUME ["/data"]

Docker – Quản lý Ports
Docker container chạy các dịch vụ bên trong nó trên các port cụ thể. Để truy cập vào dịch vụ trong container, cần liên kết port của container với port của Docker host.
Ví dụ 1:
Container Apache chạy trên port 80, liên kết với port 8080 của Docker host:
docker run -it -p 8080:80 apache_image
Container MySQL chạy trên port 3306, liên kết với port 6603 của Docker host:
docker run -it -p 6603:3066 mysql_image
Ví dụ 2:
Clone project có sẵn từ GitHub:
git clone https://github.com/tecrahul/dockerfile cd dockerfile
Build image:
docker build -t apacheimage .
Chạy container và liên kết port:
docker run -it -p 8080:80 apacheimage
Truy cập trang web tại địa chỉ IP Docker host trên trình duyệt, ví dụ: http://192.168.1.237:8080
Liên kết nhiều port
docker run -it -p 8080:80,8081:443 image_name
Liên kết port với địa chỉ IP cụ thể:
docker run -it -p 127.0.0.1:8080:80,127.0.0.1:8081:443 image_name docker run -it -p 192.168.1.111:8080:80,92.168.1.111:8081:443 image_name
Networking trong Docker
Docker cho phép tạo và quản lý mạng riêng giữa các container.
Liệt kê các mạng:
docker network ls
Tạo mạng:
docker network create -d bridge my-bridge-network
Kết nối container với mạng:
docker network connect my-bridge-network centos
Ngắt kết nối container khỏi mạng:
docker network disconnect my-bridge-network centos
Kiểm tra chi tiết mạng:
docker network inspect my-bridge-network
Xóa mạng Docker:
docker network rm my-bridge-network network2 network3 docker network prune
Ví dụ Docker Network: Kết nối MySQL và phpMyAdmin
Bước 1: Tạo Docker Network
docker network create -d bridge my-bridge-network
Bước 2: Chạy MySQL Container
docker run --name mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql/mysql-server
Kết nối container vào network:
docker network connect my-bridge-network mysql
Kiểm tra địa chỉ IP của container MySQL:
docker inspect mysql | grep "IPAddress"
Bước 3: Chạy phpMyAdmin Container
Giả sử địa chỉ IP của MySQL container là 172.21.0.2
:
docker run --name phpmyadmin -d -e PMA_HOST=172.21.0.2 -p 8080:80 phpmyadmin/phpmyadmin
Thêm container vào cùng network:
docker network inspect my-bridge-network
Bước 4: Kiểm tra lại network
Sau khi thêm cả hai container vào network, có thể kiểm tra lại cấu hình:
docker network inspect my-bridge-network
Bước 5: Cho phép MySQL kết nối đến phpMyAdmin
Mặc định MySQL không cho phép host từ xa kết nối đến. Để bật quyền truy cập:
docker exec -it mysql bash
Đăng nhập vào MySQL:
mysql -u root -p
Tạo user kết nối:
GRANT ALL on *.* to 'dbuser'@'127.21.0.3' identified by 'secret'; flush privileges; exit
Bước 6: Truy cập phpMyAdmin
Mở trình duyệt và truy cập:
http://localhost:8080/
Đăng nhập bằng tài khoản dbuser
và mật khẩu secret
đã tạo ở trên.
Docker Compose là gì?
Docker Compose là một công cụ giúp thiết lập môi trường multi-container. Thay vì chạy từng container riêng lẻ, bạn có thể định nghĩa toàn bộ dịch vụ trong một file docker-compose.yml
và chỉ cần một lệnh để build và chạy tất cả container.
Quy trình làm việc với Docker Compose gồm 3 bước:
- Định nghĩa môi trường ứng dụng với Dockerfile cho từng dịch vụ.
- Tạo file docker-compose.yml để định nghĩa toàn bộ các container.
- Chạy lệnh docker-compose up để khởi chạy tất cả container.
Cài đặt Docker Compose
Cài đặt Docker Compose (ví dụ bản 1.16.1):
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
Ví dụ file docker-compose.yml
version: '3' services: db: image: mysql container_name: mysql_db restart: always environment: - MYSQL_ROOT_PASSWORD="secret" web: image: apache build: . container_name: apache_web restart: always ports: - "8080:80"
Các lệnh Docker Compose thường dùng
# Build image docker-compose build # Tất cả docker-compose build web # Dịch vụ cụ thể # Khởi động container docker-compose up -d # Tất cả docker-compose up -d web # Dịch vụ cụ thể # Dừng và xóa container, network, images docker-compose down # Liệt kê container đang chạy docker-compose ps # Thực thi lệnh trong container docker-compose exec web ls -l # Start container docker-compose start # Tất cả docker-compose start web # Dịch vụ cụ thể # Stop container docker-compose stop # Restart container docker-compose restart # Tạm dừng docker-compose pause # Tiếp tục sau khi pause docker-compose unpause # Xóa container bị dừng docker-compose rm
Ví dụ về Docker Compose
Bước 1: Tạo cấu trúc thư mục
mkdir dockercompose && cd dockercompose mkdir webapp echo "It Works
" > webapp/index.html
Bước 2: Tạo Dockerfile cho webapp
Tạo file webapp/Dockerfile
với nội dung:
FROM tecadmin/ubuntu-ssh:16.04 RUN apt-get update \ && apt-get install -y apache2 COPY index.html /var/www/html/ WORKDIR /var/www/html CMD ["apachectl", "-D", "FOREGROUND"] EXPOSE 80
Bước 3: Tạo file docker-compose.yml
Trong thư mục chính:
vim docker-compose.yml
Thêm nội dung sau:
version: '3' services: db: image: mysql container_name: mysql_db restart: always environment: - MYSQL_ROOT_PASSWORD="secret" web: image: apache build: ./webapp depends_on: - db container_name: apache_web restart: always ports: - "8080:80"
Bước 4: Build webapp image
docker-compose build
Kết quả đầu ra cho thấy dịch vụ web
được build từ webapp/Dockerfile
. Dịch vụ db
sử dụng image có sẵn nên không cần build.
Bước 5: Khởi động Docker Compose
docker-compose up -d
Sau khi chạy, bạn có thể truy cập ứng dụng web qua địa chỉ:
http://localhost:8080/
Bước 6: Cập nhật nội dung ứng dụng web
Thêm nội dung mới vào index.html
:
echo "Welcome to Docker Compose Tutorial" >> webapp/index.html
Build lại image và khởi động lại container:
docker-compose build docker-compose up -d
Kết quả sẽ phản ánh nội dung mới trong trình duyệt khi truy cập lại ứng dụng.