Mọi người cho mình hỏi chút. Chả là bây giờ mình muốn ném cả cục docker container từ máy local lên trên con vps của mình thì mình phải đóng gói nó thế nào và khi ném lên vps thì mình phải chạy ra sao? Mình cảm ơn.
Mọi người cho mình hỏi chút. Chả là bây giờ mình muốn ném cả cục docker container từ máy local lên trên con vps của mình thì mình phải đóng gói nó thế nào và khi ném lên vps thì mình phải chạy ra sao? Mình cảm ơn.
Docker container là 1 run time object của docker image. Muốn chạy phải có copy docker image hoặc pull từ docker HUB về. Có docker image rồi thì cứ docker-compose up là chạy được.
Mọi người cho mình hỏi chút. Chả là bây giờ mình muốn ném cả cục docker container từ máy local lên trên con vps của mình thì mình phải đóng gói nó thế nào và khi ném lên vps thì mình phải chạy ra sao? Mình cảm ơn.
Ui rất rất cảm ơn anh haha
. Cứ ngồi mò tạo image từ container rồi xuất linh tinh bay mất nửa ngày.
Bạn nên ... làm cách chính thống đi để mai mốt dễ deploy
1. Tạo image
2. Push lên registry (Docker Registry, hoặc GCP, AWS, Azure)
3. Pull image về rồi start cointainer
Tự hỏi tại sao bạn lại chọn cách làm khó như vậy
Bạn nên ... làm cách chính thống đi để mai mốt dễ deploy
1. Tạo image
2. Push lên registry (Docker Registry, hoặc GCP, AWS, Azure)
3. Pull image về rồi start cointainer
Tự hỏi tại sao bạn lại chọn cách làm khó như vậy
Đấy là trước khi mình biết đến cách của bạn và kiểu như va đâu dùng đấy(Thằng docker seo kinh quá, toàn thấy Docker Registry, Docker Hub linh tinh beng)
Đấy là trước khi mình biết đến cách của bạn và kiểu như va đâu dùng đấy(Thằng docker seo kinh quá, toàn thấy Docker Registry, Docker Hub linh tinh beng)
Vì nó free nữa bạn, trong 1 số trường hợp mấy image k quan trọng mình toàn quăng lên Docker Registry. Cái nào cần private thì mình có 1 con server tự host registry. Làm cho customer thì charge tiền server nó nên xài cloud hết
Mọi người cho mình hỏi chút. Chả là bây giờ mình muốn ném cả cục docker container từ máy local lên trên con vps của mình thì mình phải đóng gói nó thế nào và khi ném lên vps thì mình phải chạy ra sao? Mình cảm ơn.
thím viết được thành file docker-compose.yml không? lên VPS, cài docker, docker-compose, rồi run thôi. Thêm tham số -d để chạy ngầm.
Vì nó free nữa bạn, trong 1 số trường hợp mấy image k quan trọng mình toàn quăng lên Docker Registry. Cái nào cần private thì mình có 1 con server tự host registry. Làm cho customer thì charge tiền server nó nên xài cloud hết
Nhưng mà nếu gói nó thành image thì nó còn giữ được dữ liệu trong container sao khi run không nhỉ? và có phải pros của phương pháp này là chỉ cần gõ lệnh pull về thôi đúng không bạn?
Nhưng mà nếu gói nó thành image thì nó còn giữ được dữ liệu trong container sao khi run không nhỉ? và có phải pros của phương pháp này là chỉ cần gõ lệnh pull về thôi đúng không bạn?
Quả ops này với mình mới mẻ quá. Trước đó còn vật lộn vụ nói chuyện giữa 2 container không dùng localhost mà phải dùng host.docker.internal. Chắc do mình thợ code
Có 2 cách
Stateful: Tất cả data bạn để vào image, chỉ việc pull về run
Stateless: Bạn chỉ để vào image code của bạn vs 1 số default config. Lúc deploy sẽ mount data từ bên ngoài vào thay thế cái ở trong container
Mình xài cả 2 cách, tùy cái ứng dụng mà xài
Có 2 cách
Stateful: Tất cả data bạn để vào image, chỉ việc pull về run
Stateless: Bạn chỉ để vào image code của bạn vs 1 số default config. Lúc deploy sẽ mount data từ bên ngoài vào thay thế cái ở trong container
Mình xài cả 2 cách, tùy cái ứng dụng mà xài
Có phải cách 1 của bác:
- Từ container đóng thành image (Dùng lệnh docker commit "container" "myimage:tag" -> đẩy lên hub -> pull về.
Cơ mà không cần đẩy lên hub lắm, lưu image ra rồi save image ra ngoài, xong cần gì load image lại.
Còn cách 2:
- Dùng -v "Thư mục cần chưa data":"Data Container để mount thư mục". rồi dùng lệnh cp để lấy data lưu về thư mục đã mount, xong run cái container trên vps rồi mount lại cái data đó thay thế cái file mặc định trong container đúng k
Có phải cách 1 của bác:
- Từ container đóng thành image (Dùng lệnh docker commit "container" "myimage:tag" -> đẩy lên hub -> pull về.
Cơ mà không cần đẩy lên hub lắm, lưu image ra rồi save image ra ngoài, xong cần gì load image lại.
Còn cách 2:
- Dùng -v "Thư mục cần chưa data":"Data Container để mount thư mục". rồi dùng lệnh cp để lấy data lưu về thư mục đã mount, xong run cái container trên vps rồi mount lại cái data đó thay thế cái file mặc định trong container đúng k
Đúng rồi bác, cách 2 tiện hơn nhiều, vì mình config dc nhiều thứ. Với k8s support vụ inject ngon lành nữa nên mọi chuyện làm dễ thôi
selfishfish
Đơn giản hơn thì bác viết Dockerfile rồi mang source code lên VPS build lại chạy trên đó luôn
. Sau đó cho tiện thì bác viết thêm 1 file docker-compose.yml để mang đi cho dễ chạy. Mình nghĩ bác chưa cần dùng tới k8s đâu. Nhưng nếu bác muốn tìm hiểu thì nên dùng cho biết
. Mình hay dùng k8s + helm.
kyo_pyro
Chuẩn practice là build rồi đẩy lên registry cho node pull về chạy nhé. Không nên build từ container ra image, chỉ nên build từ file Dockerfile thôi. Dữ liệu thì mount trên node 1 lần, lần sau up version mới không phải mount lại nữa. Nếu lần nào deploy cũng phải up cái folder mount lên thì tức là bác đang làm sai practice rồi.
Chuẩn practice là build rồi đẩy lên registry cho node pull về chạy nhé. Không nên build từ container ra image, chỉ nên build từ file Dockerfile thôi. Dữ liệu thì mount trên node 1 lần, lần sau up version mới không phải mount lại nữa. Nếu lần nào deploy cũng phải up cái folder mount lên thì tức là bác đang làm sai practice rồi.
Chưa hiểu ý bác chỗ mount trên node 1 lần là sao.
Theo em hiểu là bác build từ trong dockerfile có dòng là copy hoặc add cái file data đã cấu hình ở máy OS lên thư mục chứa data của cointainer đúng không.
Lần đầu lúc lấy data default của container thì mình mount ổ cho data về local để chỉnh sửa.
Để ý là nếu như dùng Registry Public như Docker Hub thì khi build xong image push lên chắc chắn là trong image không chứa secret nha các bác. Mình gặp rất nhiều trường hợp push luôn secret vào trong image. Để tránh vụ này thì viết app chạy đọc Os environment variable làm config khi start up.
Còn nếu như dùng Private Registry thì không sao
.
Hide-Clone
Private registry hay Public registry cũng chả ai người ta commit secret/sensitive configuration lên cả.
Đọc từ OS environment variable là cách chuẩn nhất.
Sau này lúc deploy node thì tùy vào mục đích của node mà export .ENV tương ứng.
mình thường dùng Azure Pipeline, Octopus, Team city. Configuration thì lưu trên keyvault hoặc project variables,
Chưa hiểu ý bác chỗ mount trên node 1 lần là sao.
Theo em hiểu là bác build từ trong dockerfile có dòng là copy hoặc add cái file data đã cấu hình ở máy OS lên thư mục chứa data của cointainer đúng không.
Lần đầu lúc lấy data default của container thì mình mount ổ cho data về local để chỉnh sửa.
Copy với add là đưa file vào image. Còn container mỗi cái tạo ra nó lại có storage riêng dựa trên cái image đó. Cái folder mount là mount vào container, cái này không được phép dùng chung, tức là folder mount trên vps phải khác với ở local của bác.
Private registry hay Public registry cũng chả ai người ta commit secret/sensitive configuration lên cả.
Đọc từ OS environment variable là cách chuẩn nhất.
Sau này lúc deploy node thì tùy vào mục đích của node mà export .ENV tương ứng.
mình thường dùng Azure Pipeline, Octopus, Team city. Configuration thì lưu trên keyvault hoặc project variables,
Nhắc vụ này mới nhớ ngày trước mấy lão Nhật lùn bắt mình encryt pass rồi mới được đưa vào os env.
Lúc đầu thì cũng méo hiểu lắm, bảo vất vào os env rồi thì sợ cái méo gì nữa mà lại còn phải encryt làm gì cho lằng nhằng.
Sau mới biết trước kia đã có vài phốt các con giời quên mẹ gitignore hoặc lỡ tay push cmn file os env / docker env lên github cá nhân (có thằng còn set moẹ public) nên các bố bắt encryt ngay cả trong env luôn.
Lỗi thì tại con người cả thôi, các bố ấy cũng "hơi cực đoan thái quá", nhưng sau mình cũng thành thói quen luôn, os env hay docker env cũng vẫn encryt chứ không để plantext nữa
))
À vẫn dùng vault nhưng vault 2 tầng, mấy cái để run thì sẽ chứa salt decryt
))
via theNEXTvoz for iPhone
Nhắc vụ này mới nhớ ngày trước mấy lão Nhật lùn bắt mình encryt pass rồi mới được đưa vào os env.
Lúc đầu thì cũng méo hiểu lắm, bảo vất vào os env rồi thì sợ cái méo gì nữa mà lại còn phải encryt làm gì cho lằng nhằng.
Sau mới biết trước kia đã có vài phốt các con giời quên mẹ gitignore hoặc lỡ tay push cmn file os env / docker env lên github cá nhân (có thằng còn set moẹ public) nên các bố bắt encryt ngay cả trong env luôn.
Lỗi thì tại con người cả thôi, các bố ấy cũng "hơi cực đoan thái quá", nhưng sau mình cũng thành thói quen luôn, os env hay docker env cũng vẫn encryt chứ không để plantext nữa
))
À vẫn dùng vault nhưng vault 2 tầng, mấy cái để run thì sẽ chứa salt decryt
))
via theNEXTvoz for iPhone
Tạo project phát thì phải cho .env, .git, build/ vào .gitignore rồi
)
Nhắc tới Vault 2 tầng, dạo này làm Azure DevOps nó có cái vụ add keyvault vào trong variable group ở dạng secret, không biết có phải 2 tầng không nhỉ.
Kiểu là trên Azure keyvault thì phân policy, và trên Azure devops thì để sensitive data (không view được)
Vault thì dùng để lưu secret, bác ấy cũng đề cập dùng vault lưu secret để decrypr rồi.
Với encode không secure hơn plain text thì bác ấy không đề cập tới security issue rồi.