Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)
1. Vì sao nên sử dụng
-
Vào một đêm đẹp trời
trăng thanh gió mát
,Bạn được phân bổ vào dự án mới, và tất nhiên là hào khí
ngút trời
, thế nhưchẻ tre
. -
Hứng khởi vào đọc
README.md
một hồi, thấy dự án này sao mà cài cắm nhiều thứ thế.Nào là Node js, Redis, Mysql, Elasticsearch, ... mỗi thứ lại kèm theo yêu cầu version cụ thể.
Lẩm bẩm một hồi, giờ search google, cài cắm một tá thứ này thì hết bao lâu ta ?
Sếp ơi, em cần 1 buổi sáng để setup ạ 💪
- Cài chưa xong đã thấy rối tùm lum, cái nọ xung đột cái kia chẳng hạn, lại còn ảnh hưởng tới những chương trình cũ đã cài đặt trong máy nữa chứ, thôi cài lại luôn cả hệ điều hành cho máy.
Sếp ơi, em cần thêm 1 buổi nữa để setup ạ 🫠🫠🫠
- Thôi xong, mất thời gian, mệt mỏi với những thao tác phụ mà chưa tập trung được vào việc chính, hic.
- Đó chính là lúc bạn nên nghĩ tới
Docker
, mọi thứ sẽ đơn giản hơn nhiều.
Chỉ vài dòng lệnh thôi, cạch cạch cạch, bạn sẽ có thể nhanh chóng tạo được
môi trường ảo hóa
chứa đầy đủ nhữngcài đặt
cần thiết để dự án hoạt động.
- Một ví dụ đơn giản vậy thôi nhưng
không dừng lại ở đó
, công dụng củaDocker
còn khá nhiều, chúng ta cùng tìm hiểu dần nhé !
2. Quá trình hình thành
Trước hết, cùng đọc lịch sử một chút đã:
2.1 Containerlization là gì ?
-
Ngày lâu lâu rồi, mô hình thường được sử dụng là:
Máy chủ vật lý (physical server)
.Hệ điều hành (operating system, viết tắt là OS)
.Dự án / phần mềm / ứng dụng (application)
.
- Vấn đề gặp phải ở đây là lãng phí tài nguyên:
- Một máy chủ chỉ cài được một OS.
- Cho dù có ổ cứng khủng, ram khủng thì cũng không tận dụng hết lợi thế.
-
Sau đó ra đời công nghệ ảo hóa
virtualization
.-
Có thể bạn đã nghe tới cái tên Virtualbox hay VMware rồi đúng không, đó đó chính nó đó.
-
Với công nghệ này, trên
một máy chủ vật lý
mình có thể cài đặt đượcnhiều OS
, tận dụng tài nguyên đã tốt hơn. -
Ví dụ:
- Bạn đang cài đặt
Ubuntu
để lập trình, sau đó càiVirtualBox
để có thể:- Cài thêm
Windows
- thi thoảng nhớ mùi còn vàolàm trận game
. - Cài thêm
CenOS
- thử trải nghiệm nhánhRedHat
của họ nhàLinux
xem sao doUbuntu
thuộc nhánhDebian
. - Đó, vầy là trên một máy tính, bạn đã cài nhiều hệ điều hành để phục vụ cho những mục đích khác nhau.
- Cài thêm
- Bạn đang cài đặt
-
Nhưng lại nảy sinh vấn đề tiếp:
-
Về tài nguyên
:- Khi bạn bật máy ảo trên
VitualBox
, bạn cần cấu hình để cung cấp cố định ngay từ đầu tài nguyên từ máy thật cho máy ảo. - Bật máy ảo lên rồi để đó không làm gì thì máy thật cũng không thể tái sử dụng tài nguyên đã cho đi.
- Ví dụ: Khi tạo một
máy ảo ram 2GB
trênmáy thật ram 6GB
, lúc này máy thật sẽ chỉ còntối đa
6 - 2 = 4 GB ram, kể cả khi máy ảo không dùng hết 2GB ram được cấp, đó là một sựlãng phí
.
- Khi bạn bật máy ảo trên
-
Về thời gian
: Việc khởi động, tắt máy ảo khá lâu, có thể lên tới hàng phút.
-
-
-
Ở bước
tiến hóa
tiếp theo, người ta sinh ra công nghệcontainerlization
:-
Với công nghệ này, trên một máy chủ vật lý, ta sẽ cài đặt được nhiều máy ảo (giống với công nghệ ảo hóa
virtualization
) -
Nhưng tốt hơn ở chỗ là các máy con này (Guess OS) đều
dùng chung kernel
của máy mẹ (Host OS) và chia sẻ với nhau tài nguyên máy mẹ. -
Có thể bạn đã biết thì kernel là phần lõi của một hệ điều hành, chịu trách nhiệm quản lý tài nguyên hệ thống như bộ nhớ, CPU, RAM và các thiết bị ngoại vi. Nó hoạt động như một cầu nối giữa phần cứng và phần mềm, điều phối giao tiếp giữa chương trình ứng dụng và phần cứng của máy tính.
-
Có thể hiểu nôm na là khi nào cần tài nguyên thì lấy, lấy dùng xong trả lại, rồi khi nào cần thì lại lấy, như vậy việc tận dụng tài nguyên đã tối ưu hơn.
-
Điểm nổi bật nhất của
containerlization
là nó sử dụngcontainer engine
để tạo ra cáccontainer
, và một kĩ sư của Google đã phát biểu rằng: -
Một công ty
hàng đầu
về công nghệ đã áp dụng nó, chứng tỏ lợi ích, độ tin cậy của công nghệ này rồi ! Chúng ta cùngáp dụng
nó nhé.
-
2.2 Container là gì ?
-
Container Engine
là một công nghệ ảo hoá cho phép bạn đóng gói một phần mềm cùng với tất cảphụ thuộc
của nó (như thư viện, mã nguồn, cấu hình ...) vào trong một môi trườngriêng biệt
gọi làcontainer
. -
Container
sẽ chứa tất cả mọi thứ mà phần mềm đó cần để chạy, giữ cho cấu hình phần mềm luôn được nhất quán trên mọi môi trường, từ máy tính cá nhân cho đến máy chủ, VPS, Cloud ... -
Hạn chế tình trạng các lập trình viên đang làm việc trong cùng một team và:
-
Hỏi:
Sao máy anh chạy được mà máy chú thì không ?
-
Trả lời:
Có thể do máy của em cài MySQL version x.x.x còn máy của a cài MySQL verion y.y.y
-
-
Hoặc:
Ở local thì chạy mà trên production thì không <lộn cái bàn>
🫠 -
Ngoài ra, các
tiến trình (process)
trong mộtcontainer
bị cô lập, tách biệt với các tiến trình của cáccontainer
khác trong cùng hệ thống và cũng tách biệt luôn với môi trườngHost OS
bên ngoài. -
Container sẽ
không bị ảnh hưởng từ bên ngoài vào
và cũngkhông gây ảnh hưởng ra ngoài
. Chúng ta chỉ cấu hình để mở một sốcổng giao tiếp
nhất định giữa các container với nhau và container vớiHost OS
.Ví dụ:
- Cấu hình
container mysql
mở cổng3456
và cho phépcontainer java app
kết nối tới để lấy dữ liệu trong database. - Cấu hình
container nginx
mở cổng80
và cho phép Host OS gọi vào.
- Cấu hình
Ưu điểm:
Tiện lợi:
Rất hữu dụng để xây dựng, chuyển giao và chạy các phần mềm, làm mọi thứdễ dàng
vànhanh chóng
hơn.- Ví dụ: bạn có một phần mềm code bằng java, bạn sẽ
không cần
cài đặt JDK vào máy thật để chạy phần mềm đó, hoặcnode js
thì cũng không cần càinpm
- Mà chỉ cần dùng container đã được setting tương ứng cho phần mềm đó,
- Tải nó về,
bật
nó lên, cho phần mềmchạy
bên trong môi trường container đó, vậy là ok. - Khi không sài nữa thì
tắt hoặc xóa bỏ
container đó đi, không ảnh hưởng gì nhiều tớihost OS
của bạn.
- Ví dụ: bạn có một phần mềm code bằng java, bạn sẽ
Linh động
: Triển khai ở bất kỳ nơi đâu do sự phụ thuộc của ứng dụng vào tầng OS cũng như cơ sở hạ tầng được loại bỏ.Nhanh
: Do chia sẻ host OS nên container có thể được tạo gần như một cách tức thì. Điều này khác với vagrant - tạo môi trường ảo ở level phần cứng nên khi khởi động mất nhiều thời gian hơn.Nhẹ
: Container cũng sử dụng chung các images nên cũng không tốn nhiều disks.Đồng nhất
: Khi nhiều người cùng phát triển trong một dự án sẽ không bị sự sai khác về mặt môi trường.Đóng gói
: Đóng gói tất cả cài đặt cần thiết của dự án, người mới tham gia vào dự án hoặc nhận bàn giao không cần thực hiện setup từng phần nhỏ, nhàm chán và mất thời gian.
Nhược điểm:
Xét về tính an toàn
:
- Do dùng chung OS nên nếu có lỗ hổng nào đấy ở kernel của host OS thì nó sẽ ảnh hưởng tới toàn bộ container có trong host OS đấy.
- Ngoài ra hãy thử tưởng tượng với host OS là Linux, nếu trong trường hợp ai đấy hoặc một ứng dụng nào đấy có trong container chiếm được quyền superuser, điều gì sẽ xảy ra? Về lý thuyết thì tầng OS sẽ bị crack và ảnh hưởng trực tiếp tới máy host bị hack cũng như các container khác trong máy đó (hacker sử dụng quyền chiếm được để lấy dữ liệu từ máy host cũng như từ các container khác trong cùng máy host bị hack chẳng hạn).
- Bạn có thể đọc thêm về Docker Security
Sự khác nhau giữa container và VM (virtual machine - máy ảo):
-
VM là một hệ điều hành thực thụ, riêng biệt, chứa nhân hệ điều hành (kernel) và các phần mềm
-> Tách biệt hoàn toàn, tiêu thụ nhiều tài nguyên và thời gian.
-
Container được chia sẻ kernel, nó chỉ như một process, một tiến trình chạy trên máy host os.
-> Nhẹ hơn, nhanh hơn do không có hệ điều hành riêng, do đó linh hoạt hơn. Mức độ cô lập thấp hơn so với VM nhưng vẫn đủ tốt để cô lập môi trường ứng dụng.
2.3 Docker ra đời
-
Công nghệ ảo hóa (
virtualization
) thì ta có thể dùng công cụVirtualbox
hayVMware
thế còn đối vớicontainerlization
thì dùng gì đây ? Google họ dùng gì ? -
Oh, mình không biết được, mỗi một ông lớn có một cách để áp dụng công nghệ này và họ
private source code
của họ. -
Gần đây, mà cũng lâu rồi 😙 Có một công ty tiến hành public source code của họ về công nghệ này, họ tung ra sản phẩm mang tên là Docker và nhận được nhiều sự chú ý.
-
Sau đó công ty cũng đổi tên thành Docker luôn, sologan hiện tại là
Develop faster, Run anywhere
. Cũng có thể xem đây là hai giá trị lớn nhất mà sản phẩm này mang tới cho cộng đồng, thật ngắn gọn. -
Công ty này cung cấp công cụ Docker free nhưng họ kiếm được rất nhiều tiền từ những dịch vụ khác đi kèm với nó.
-
Hệ sinh thái nhà Docker cũng có nhiều cái hay ho.
-
Với sự bùng nổ của việc sử dụng
container
cùng với những lợi ích lớn mà nó mang lại, gã khổng lồ phần mềmMicrosoft
không muốn bỏ qua cơ hội màu mỡ này với việc cho ra mắt tính năng mới có tênWindows Container
.
Đó, dân ta phải biết sử Tây là thế đó, chứ cứ lao vào học Docker luôn rồi cũng chẳng biết nó sinh đẻ thế nào, từ đâu mà ra, có anh em họ hàng gì không ?
3. Cài đặt ra sao ?
-
Docker
hỗ trợ nhiều nền tảng hệ điều hành khác nhau bao gồmLinux
,Windows
và cảMac
.-
Lưu ý là
ban đầu
nó được xây dựng trên nền tảng Linux. Vì Docker cần can thiệp vàophần lõi
, phần nhân kernel của OS trong khi đó Linux làmã nguồn mở
, gọi là cần gì có nấy. -
Đến khi thấy Docker
hay quá
, bác Windowsngỏ lời
, thế là công tyDocker
và công tyMicrosoft
hợp tác với nhau nhưng nghe chừngchưa khả quan
lắm bởi vì nhân Windows có nhưng thứkhông
public được (bản quyền mà, mình đoán thế 😅), Mac OS có lẽ cũng zị =)) -
Cho tới hiện tại khi
cài
Docker trênWindows
hayMac
thì Docker sẽ cài mộtmáy ảo Linux
trên máy thật và Docker hoạt động dựa trênmáy ảo Linux
đó, còntương lai
về sau thì ai biết được. -
Mà cũng do vậy, nên khi dùng
Docker
trênMac hoặc Windows
thì hiệu năng sẽ thấp hơn, không tận dụng được sức mạnh của toàn bộhost os
. -
Có lần mình hướng dẫn một bạn sinh viên mới tới công ty thực tập, setup dự án với Docker trên Linux thì chạy khá mượt. Thời gian sau khi bạn ấy bảo vệ luận án tốt nghiệp, thấy bảo là cần bắt buộc cài sang Windows để làm luận án và máy cũng bị lỗi gì đó không cài song song Windows với Ubuntu được. Thế là phải cài dự án với Docker trên Windows mà giật treo lag không làm được, build cái React rất lâu. Vốn dĩ cấu hình laptop của bạn ấy cũng không cao sẵn rồi.
-
3.1 Mac OS
-
Nếu bạn đang dùng
Mac OS
, thì bạn nên cài đặt Docker thông qua Docker Desktop, việc cài đặt cũng khá đơn giản. -
Docker Desktop
là một ứng dụng có giao diện đồ hoạ (GUI), nó sẽ cài đặt kèmDocker Engine
luôn nên không cần cài riêngDocker Engine
nữa.Vào Settings của
Docker Desktop
bạn sẽ cấu hình được tài nguyên tối đa của máy ảo Linux mà chúng ta có nhắc tới ở trên. -
Để kiểm tra xem cài đặt thành công chưa thì bạn chạy câu lệnh
docker run hello-world
Nếu xuất hiện dòng chữ
Hello from Docker!
như hình bên dưới tức là đã cài đặt thành công.
3.2 Windows
-
Thì cũng tương tự như
MacOs
bên trên, bạn nên cài Docker Desktop for WindowsKhác một chút là nếu muốn cấu hình lượng tài nguyên (CPU, RAM, Disk, Swap) tối đa mà Docker được sử dụng thì phải thông qua
wslconfig file
-
Ở khu vực hiển thị dưới cùng bên trái của
Docker Desktop
, bạn sẽ nhìn thấy lượngRAM, CPU và Disk
màDocker
đang sử dụng.
3.3 Linux
-
Nếu bạn đang cài đặt Docker cho các OS họ nhà Linux (Như Ubuntu, CentOS, Fedora, ...) thì bạn nên cài Docker Engine riêng trước.
-
Ví dụ
VPS
đang dùngUbuntu
thì làm theo các bước như ở đây, cũng khá là đơn giản thôi.Set up Docker's apt repository.
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
Install the Docker packages.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Verify that the Docker Engine installation is successful by running the
hello-world
image.sudo docker run hello-world
-
Còn nếu bạn muốn cài
Docker Desktop
luôn giống Mac OS hoặc Windows, thìDocker
họ cũng bẻ lái bạn sang cài Docker Engine trước -
Manage Docker as a non-root user
-
Ở đây sẽ có một vấn đề là khi bạn gọi câu lệnh
docker
trên Terminal có thể xuất hiện lỗi:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock ...
-
Thì
Docker
có chia sẻ về lỗi này tại Linux post-installation steps for Docker EngineThe Docker daemon binds to a Unix socket, not a TCP port. By default it's the root user that owns the Unix socket, and other users can only access it using sudo. The Docker daemon always runs as the root user.
-
Cách xử lý thứ nhất là chạy câu lệnh với quyền
sudo
docker run hello-world # Got permission denied while trying to connect to the Docker daemon socket at unix ... => sudo docker run hello-world # Successfully !
-
Cách xử lý thứ hai là:
If you don't want to preface the docker command with sudo, create a Unix group called docker and add users to it. When the Docker daemon starts, it creates a Unix socket accessible by members of the docker group. On some Linux distributions, the system automatically creates this group when installing Docker Engine using a package manager. In that case, there is no need for you to manually create the group.
sudo usermod -aG docker $(whoami) # Thêm user hiện tại vào group docker newgrp docker / reboot / logout and login back # Chọn một trong ba cách: Chạy câu lệnh `newgrp docker` hoặc câu lệnh `reboot` hoặc logout ra rồi login lại để cập nhật sự thay đổi cho group.
-
4. Nhược điểm của Docker
Cũng không nên thần thánh hoá cái gì đó quá =))
-
Đầu tiên là việc
chưa tận dụng được hết tài nguyên
khi dùng trên Mac OS hoặc Windows như đã tìm hiểu ở trên. -
Tiếp theo là chỉ dựng lên được container Linux (Ubuntu, CentOS, ...)
Với
VMware
hoặcVirtualBox
thì khi cài đặt máy ảo, bạn có thể chọn file cài đặt để tạo ra máy ảoWindows
hoặcLinux
tuỳ ý đúng không.Nhưng với
Docker
thì ta chỉ có thể tạo ra container Linux.Do vậy, phần mềm của bạn sẽ chạy trong môi trường Linux.
Và bạn cũng cần một số hiểu biết và kiến thức cơ bản về OS này, các câu lệnh như:
ls -la
: liệt kê danh sách file trong thư mụcmkdir
: tạo thư mục mới ...
5. Hoạt động như thế nào ?
- Chúng ta có hình ảnh sơ đồ như sau để mô tả luồng hoạt động cơ bản nhất của Docker.
-
Từ
Dockerfile
build lênDocker Image
, rồi từDocker Image
run lênDocker Container
. -
Mục đích cuối của chúng ta đang là dựng được
docker container
lên để phần mềm chạy ở trong đó phải không ? Thì bước trước đó, cùng tìm hiểudocker image
nhé. -
Docker image
là nền tảng củadocker container
, có thể hiểu nó nhưkhung xương
giúp định hình cho container, nó sẽ tạo ra container khi thực hiệncâu lệnh chạy
image đó.- Nếu nói với phong cách
lập trình hướng đối tượng
, Docker image làclass
, còn container làthực thể
(instance, thể hiện) của class đó. - Nếu nói với phong cách
cài win dạo
, thì Docker image tương tự như file.gho
để ghost Windows, bung file này ra là cài được Windows. - Hoặc văn vẻ hơn,
docker image
chưa dùng được như bê tông, cốt thép, bộ khung thô của ngôi nhà đã dựng xong nhưng chưa ở được, còn muốn lêndocker container
để dùng được thì giống như trát xi măng, vôi vữa rồi sơn lên và trang trí nội thất để ở được.
- Nếu nói với phong cách
-
Docker image
không phải là một file vật lý như file.png
,.mp3
... mà nó chỉ tồn tại trong Docker.- Nó bao gồm
hệ điều hành
(CentOS, Ubuntu, …) và cácmôi trường
lập trình được cài sẵn (httpd, mysqld, nginx, python, git, …), đây chính là nền tảng cho container mà. - Là mẫu, template, là bất biến.
- Được xây dựng từ các tầng (layers).
- Tương tự như file
ghost windows
các bác hay upload lên Google Drive để chia sẻ thìdocker image
cũng được lưu trữ và chia sẻ thông qua Docker Hub.
Bạn có thể tìm tải các image mọi người chia sẻ sẵn ở đây hoặc có thể tự tạo cho mình image như ý.
- Nó bao gồm
6. Các câu lệnh trong Docker
-
Chúng ta cần nắm được các câu lệnh để:
-
Một là từ
Dockerfile
tạoDocker Image
-
Hai là từ
Docker Image
tạo tiếpDocker Container
như thế nàođó là cơ bản nhất.
-
-
Các câu lệnh cho
Docker Image
-
Pull image:
docker pull <image_name>
Ví dụ:
docker pull ubuntu:22.04
-
ubuntu
là tên của image,22.04
là tag (version), nếu dùngdocker pull ubuntu
thì tag mặc định làlatest
-
Khi thực hiện câu lệnh trên, docker sẽ kiểm tra xem image này đã tồn tại trong máy hay chưa, nếu chưa thì từng layer của image sẽ được tải về từ kho lưu trữ Docker Hub.
-
Bạn chạy câu lệnh trên thêm một lần, sẽ thấy không cần tải lại image về nữa.
-
-
Liệt kê danh sách image:
docker images
-
Pull thêm một image mới nữa
docker pull mysql
rồi kiểm tra lại danh sách
docker images
-
-
Xoá image:
docker rmi <image_name>
Ví dụ:
docker rmi mysql
- Bạn có thể dùng
Docker Desktop
để kiểm tra dưới dạngGUI
:
- Bạn có thể dùng
-
Xoá tất cả images
docker rmi -f $(docker images -aq)
-
-
Các câu lệnh cho
Docker Container
-
Bật docker contaner:
docker run -it # Hẹn các bạn phần 2 sẽ tìm hiểu kỹ hơn nhé <image_name> # Tên của image mà mình muốn dùng để bật container từ đó lên /bin/bash # Tên của Linux shell mà bạn muốn sử dụng (sh, bash, szh ...)
-
Ví dụ 1:
docker pull ubuntu docker run -it ubuntu /bin/bash
Bây giờ bạn đã dựng thành công một môi trường ubuntu ảo rồi đó:
Bên trong container, bạn có thể thực hiện các câu lệnh với một Linux system như
ls
,mkdir
...Ngoài ra, có một câu lệnh khá hay:
uname -a
ChatGPT xem câu lệnh này dùng để làm gì nhé !
Gõ
uname -a
ở bên trong container và sau đó ấnCtrl + C
để thoát ra ngoài máyhost os
và gõuname -a
tiếp.Nếu bạn dùng
Linux
thì sẽ thấy kết quả câu lệnh này ở bên trongcontainer
và ở ngoàihost os
giống nhauNhư trường hợp của mình:
Container:
Linux 8fd145beef6a 6.8.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 13 13:35:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Host OS:
Linux bamboo-Nitro-AN515-51 6.8.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 13 13:35:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Do
container
được dùng chung kernel củahost os
luôn mà.Nếu bạn dùng
Mac OS
thìkết quả của câu lệnh trên
ở bên trong container sẽ là củamáy ảo Linux
được tạo ra khi càiDocker Desktop
mà chúng ta đã nhắc tới ở trên.Do đó bạn sẽ thấy sự khác biệt giữa hai kết quả,
uname -a
ở bên ngoài máy host os sẽ trả về thông tin nhân kenel của máy Mac rồi.Đối với
Windows
thì không dùnguname -a
được, có câu lệnhsysteminfo
bạn có thể thử. -
Ví dụ 2:
docker pull mysql docker run -it mysql /bin/bash
Gõ tiếp:
mysql --verison # Kiểm tra mysql version
kết quả là
mysql Ver 9.0.1 for Linux on aarch64 (MySQL Community Server - GPL)
Đó, không cần cài mysql vào
host os
và vẫn cómysql
để dùng rồi.
-
-
Liệt kê container:
docker ps # Danh sách containers đang chạy docker ps -a # Danh sách containers đang chạy và đã tắt docker start <container_name>: # Khởi động một container docker exec -it <container_name> /bin/bash: # Truy cập vào bên trong container đang chạy
-
Xoá container:
docker rm -f {container_id/name}: Xóa một container
-
7. Updating ...
-
Phần 1
này chủ yếu giới thiệu vềlý thuyết
, để mình cùng nhauhiểu
Docker là gì và bản chất của Docker đã. -
Trong quá trình viết bài mình cần tìm hiểu thêm nhiều và cũng
nhận ra
nhiều điều mới. Nếu có ý kiến đóng góp gì, bạn vui lòngcomment
bên dưới nhé ! -
Trong phần 2 mình sẽ:
- Giải thích chi tiết hơn các câu lệnh (-it nghĩa là gì, /bin/bash nghĩa là gì,..)
- Cách tạo Dockerfile
- Cách tạo Docker Compose, cấu hình,... Mời các bạn đón đọc.
Tài liệu tham khảo:
-
http://blog.appconus.com/2016/04/15/docker-cho-nguoi-moi-bat-dau-p1
😊 😊 😊 Thank for your attention 😊 😊 😊
########################################################
Mình đã viết Docker: Chưa biết gì đến biết dùng (Phần 2), mời các bạn đọc tiếp.
All Rights Reserved