Hướng dẫn how to connect to mysql docker container from another container - cách kết nối với vùng chứa mysql docker từ một vùng chứa khác
Tôi đã thiết lập container Docker với MySQL để lộ 3306. Tôi đã chỉ định người dùng cơ sở dữ liệu, mật khẩu cơ sở dữ liệu và tạo DB thử nghiệm và cung cấp các đặc quyền cho người dùng mới. Trong một thùng chứa khác, tôi muốn truy cập vào DB này. Vì vậy, tôi đã thiết lập container mới với tập lệnh PHP đơn giản là tạo bảng mới trong DB này. Tôi biết rằng IP của MySQL Container là 172,17.0.2 Vì vậy: Show
Hơn sử dụng mysqli, tôi tạo bảng mới và tất cả hoạt động tốt. Nhưng tôi nghĩ rằng kết nối với container bằng địa chỉ IP của anh ấy là không tốt. Có cách nào khác để chỉ định máy chủ DB không? Tôi đã thử với tên máy chủ của thùng chứa MySQL nhưng nó không hoạt động.
hỏi ngày 16 tháng 2 năm 2016 lúc 10:25Feb 16, 2016 at 10:25
Cờ 0 được coi là một tính năng kế thừa, bạn nên sử dụng các mạng do người dùng xác định.Bạn có thể chạy cả hai thùng chứa trên cùng một mạng:
Mỗi container trên mạng đó sẽ có thể giao tiếp với nhau bằng tên container làm tên máy chủ. Đã trả lời ngày 3 tháng 1 năm 2019 lúc 7:06Jan 3, 2019 at 7:06
Tiago ctiago cTiago C 7166 Huy hiệu bạc3 Huy hiệu đồng6 silver badges3 bronze badges 5 Bạn cần liên kết các thùng chứa Docker của mình cùng với-Cờ liên kết trong lệnh docker chạy hoặc sử dụng tính năng liên kết trong Docker-compose. Ví dụ:
Theo cách này, Docker sẽ thêm địa chỉ IP của thùng chứa MySQL vào /etc /hosts tệp của container ứng dụng của bạn. Để biết tài liệu đầy đủ, hãy tham khảo: MySQL Docker Container: Hiểu những điều cơ bản Đã trả lời ngày 4 tháng 1 năm 2017 lúc 4:14Jan 4, 2017 at 4:14
Sarasarasara 1.0601 Huy hiệu vàng11 Huy hiệu bạc20 Huy hiệu đồng 201 gold badge11 silver badges20 bronze badges 1 Trong tập tin Docker-compose.yml của bạn Thêm thuộc tính liên kết vào dịch vụ máy chủ web của bạn: https://docs.docker.com/compose/networking/#links Sau đó, trong chuỗi truy vấn của bạn, giá trị của tham số máy chủ là tên dịch vụ cơ sở dữ liệu của bạn:
Đã trả lời ngày 5 tháng 3 năm 2019 lúc 8:42Mar 5, 2019 at 8:42
0 Nếu bạn đang sử dụng docker-compose, hơn cơ sở dữ liệu sẽ có thể truy cập được dưới tên dịch vụ.
Sau đó, cơ sở dữ liệu có thể truy cập bằng cách sử dụng: 1. Ở đây tên dịch vụ đồng thời tên máy chủ trong mạng nội bộ.Trích dẫn từ Docker Docs:
Nguồn: https://docs.docker.com/compose/networking/ Đã trả lời ngày 16 tháng 3 lúc 13:31Mar 16 at 13:31
Bojan Hrnkasbojan HrnkasBojan Hrnkas 1.50815 huy hiệu bạc22 Huy hiệu đồng15 silver badges22 bronze badges Thời gian đọc ước tính: 11 phút Cho đến thời điểm này, chúng tôi đã làm việc với các ứng dụng container duy nhất. Nhưng, bây giờ chúng tôi muốn thêm MySQL vào ngăn xếp ứng dụng. Câu hỏi sau đây thường được đặt ra - Mysql sẽ chạy ở đâu? Cài đặt nó trong cùng một container hoặc chạy nó một cách riêng biệt? Nói chung, mỗi container nên làm một việc và làm tốt. Một vài lý do:each container should do one thing and do it well. A few reasons:
Và có nhiều lý do. Vì vậy, chúng tôi sẽ cập nhật ứng dụng của mình để hoạt động như thế này: Mạng containerHãy nhớ rằng các container, theo mặc định, chạy trong sự cô lập và không biết bất cứ điều gì về các quy trình hoặc container khác trên cùng một máy. Vì vậy, làm thế nào để chúng ta cho phép một container nói chuyện với người khác? Câu trả lời là kết nối mạng. Bây giờ, bạn không phải là một kỹ sư mạng (hooray!). Đơn giản chỉ cần nhớ quy tắc này ...networking. Now, you don’t have to be a network engineer (hooray!). Simply remember this rule...
Bắt đầu MySQLCó hai cách để đặt một container trên mạng: 1) gán nó khi bắt đầu hoặc 2) Kết nối một thùng chứa hiện có. Hiện tại, chúng tôi sẽ tạo mạng trước và gắn thùng chứa MySQL khi khởi động.
Kết nối với MySQLBây giờ chúng ta đã biết MySQL đang hoạt động, hãy để sử dụng nó! Nhưng, câu hỏi là ... làm thế nào? Nếu chúng ta chạy một thùng chứa khác trên cùng một mạng, làm thế nào để chúng ta tìm thấy container (hãy nhớ mỗi container có địa chỉ IP riêng)? Để tìm ra nó, chúng tôi sẽ sử dụng thùng chứa Nicolaka/Netshoot, nơi vận chuyển rất nhiều công cụ hữu ích để khắc phục sự cố hoặc gỡ lỗi mạng.
Chạy ứng dụng của bạn với MySQLỨng dụng TODO hỗ trợ cài đặt của một vài biến môi trường để chỉ định cài đặt kết nối MySQL. Họ đang:
Với tất cả những điều đó được giải thích, hãy để bắt đầu container sẵn sàng cho chúng tôi!
Nếu bạn nhìn nhanh vào bảng điều khiển Docker, bạn sẽ thấy rằng chúng tôi có hai container ứng dụng đang chạy. Nhưng, không có dấu hiệu thực sự nào cho thấy chúng được nhóm lại với nhau trong một ứng dụng duy nhất. Chúng tôi sẽ thấy làm thế nào để làm cho điều đó tốt hơn trong thời gian ngắn! Tóm tắt lạiTại thời điểm này, chúng tôi có một ứng dụng hiện lưu trữ dữ liệu của nó trong cơ sở dữ liệu bên ngoài chạy trong một thùng chứa riêng. Chúng tôi đã học được một chút về mạng lưới container và thấy cách thức khám phá dịch vụ có thể được thực hiện bằng DNS. Nhưng, có một cơ hội tốt mà bạn bắt đầu cảm thấy hơi choáng ngợp với mọi thứ bạn cần làm để khởi động ứng dụng này. Chúng tôi phải tạo một mạng, bắt đầu các container, chỉ định tất cả các biến môi trường, hiển thị các cổng và hơn thế nữa! Đó là rất nhiều điều để nhớ và nó chắc chắn làm cho mọi thứ khó khăn hơn để truyền lại cho người khác. Trong phần tiếp theo, chúng tôi sẽ nói về Docker Compose. Với Docker Compose, chúng tôi có thể chia sẻ các ngăn xếp ứng dụng của mình theo cách dễ dàng hơn nhiều và để người khác quay chúng lại bằng một lệnh duy nhất (và đơn giản)! Bắt đầu, thiết lập, định hướng, nhanh chóng, giới thiệu, khái niệm, container, Docker DesktopLàm cách nào để kết nối với thùng chứa MySQL từ một thùng chứa khác?Để cho phép một container nói chuyện với người khác, hãy sử dụng mạng. Nếu hai container nằm trên cùng một mạng, họ có thể nói chuyện với nhau ... Tạo mạng bằng cách sử dụng lệnh này. .... Bắt đầu một thùng chứa MySQL và đính kèm mạng. .... Nhận ID container của bạn bằng cách sử dụng lệnh Docker PS .. Làm cách nào để kết nối một container với thùng chứa khác trong Docker?Cách sử dụng mạng cầu mặc định.. Kiểm tra xem mạng cầu có đang chạy không: bạn có thể kiểm tra nó đang chạy bằng cách nhập Docker Network LS..... Bắt đầu các thùng chứa của bạn: Bắt đầu các thùng chứa của bạn như bình thường, với Docker Run..... Địa chỉ một thùng chứa khác theo địa chỉ IP của nó: Bây giờ một container có thể nói chuyện với một thùng khác, bằng cách sử dụng địa chỉ IP của nó .. Làm cách nào để kết nối với thùng chứa docker mysql?Dưới đây là các bước bạn có thể làm theo để cài đặt Container MySQL của Dockerhub: Bước 1: Kéo hình ảnh Docker cho MySQL.Bước 2: Triển khai và khởi động thùng chứa MySQL.Bước 3: Kết nối với container Docker MySQL.Step 1: Pull the Docker Image for MySQL. Step 2: Deploy and Start the MySQL Container. Step 3: Connect with the Docker MySQL Container.
Làm cách nào để liên kết một container này với một container khác?Để tạo một liên kết, bạn sử dụng cờ -liên kết.Đầu tiên, tạo một container mới, lần này là một chứa một cơ sở dữ liệu.Điều này tạo ra một container mới gọi là DB từ hình ảnh đào tạo/Postgres, chứa cơ sở dữ liệu PostgreSQL.Bây giờ, hãy tạo một thùng chứa web mới và liên kết nó với thùng chứa DB của bạn.use the --link flag. First, create a new container, this time one containing a database. This creates a new container called db from the training/postgres image, which contains a PostgreSQL database. Now, create a new web container and link it with your db container. |