Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

ĐƯỢC RỒI. Cuối cùng tôi đã giải quyết được vấn đề này. Dưới đây là giải pháp của tôi được sử dụng trong https://sqlflow.org/sqlflow.

Giải pháp hoàn chỉnh

Để làm cho bản demo khép kín, tôi đã chuyển tất cả các mã cần thiết sang https://github.com/wangkuiyi/mysql-server-in-docker.

Chìa khóa của giải pháp

Tôi không sử dụng hình ảnh chính thức trên dockerhub.com https://hub.docker.com/r/mysql/mysql-erver. Thay vào đó, tôi đã tự làm bằng cách cài đặt MySQL trên Ubuntu 18.04. Cách tiếp cận này cho tôi cơ hội để bắt đầu MySQLD và liên kết nó với 0,0.0.0 (tất cả các IPS).bind it to 0.0.0.0 (all IPs).

Để biết chi tiết, vui lòng tham khảo các dòng này trong repo GitHub của tôi.

SQLFLOW_MYSQL_HOST=${SQLFLOW_MYSQL_HOST:-0.0.0.0}

echo "Start mysqld ..."
sed -i "s/.*bind-address.*/bind-address = ${SQLFLOW_MYSQL_HOST}/" \
    /etc/mysql/mysql.conf.d/mysqld.cnf
service mysql start

Để xác minh giải pháp của tôi

  1. Git nhân bản repo đã nói ở trên.
    git clone https://github.com/wangkuiyi/mysql-server-in-docker
    cd mysql-server-in-docker
    
  2. Xây dựng hình ảnh Docker máy chủ MySQL
    docker build -t mysql:yi .
    
  3. Khởi động máy chủ MySQL trong thùng chứa
    docker run --rm -d -p 23306:3306 mysql:yi
    
  4. Cài đặt máy khách MySQL trên máy chủ, nếu chưa. Tôi đang chạy Ubuntu 18.04 trên máy chủ (máy trạm của tôi), vì vậy tôi sử dụng
    docker run --rm -d -p 23306:3306 mysql:yi
    
    6.
    sudo apt-get install -y mysql-client
    
  5. Kết nối từ máy chủ với máy chủ MySQL đang chạy trong container.
    mysql --host 127.0.0.1 --port 23306 --user root -proot
    

Kết nối từ một thùng chứa khác trên cùng một máy chủ

Chúng tôi có thể chạy máy khách MySQL từ ngay cả một container khác (trên cùng một máy chủ).

docker run --rm -it --net=host mysql/mysql-server mysql \
   -h 127.0.0.1 -P 13306 -u root -proot

Kết nối từ máy chủ khác

Trên iMac của tôi, tôi cài đặt máy khách MySQL bằng homebrew.

brew install mysql-client
export PATH="/usr/local/opt/mysql-client/bin:$PATH"

Sau đó, tôi có thể truy cập vào máy chủ Ubuntu ở trên (192.168.1.22).

mysql -h 192.168.1.22 -P 13306 -u root -proot

Kết nối từ một thùng chứa chạy trên máy chủ khác

Tôi thậm chí có thể chạy máy khách MySQL trong một thùng chứa chạy trên iMac để kết nối với máy chủ MySQL trong một thùng chứa trên máy trạm Ubuntu của tôi.

docker run --rm -it --net=host mysql/mysql-server mysql \
    -h 192.168.1.22 -P 13306 -u root -proot

Một trường hợp đặc biệt

Trong trường hợp chúng tôi chạy máy khách và máy chủ MySQL trong các thùng chứa riêng biệt chạy trên cùng một máy chủ - điều này có thể xảy ra khi chúng tôi thiết lập CI, chúng tôi không cần phải xây dựng hình ảnh Docker máy chủ MySQL của riêng mình. Thay vào đó, chúng ta có thể sử dụng

docker run --rm -d -p 23306:3306 mysql:yi
7 khi chúng ta chạy thùng chứa máy khách.

Để khởi động máy chủ

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
0

Để bắt đầu khách hàng

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
1

Giới thiệu

MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ nguồn mở nổi tiếng và là một trong những giải pháp máy chủ web phổ biến nhất. Nó lưu trữ và cấu trúc dữ liệu một cách có ý nghĩa, đảm bảo khả năng tiếp cận dễ dàng. is a well-known open-source relational database management system and one of the most popular web server solutions. It stores and structures data in a meaningful manner, ensuring easy accessibility.

Docker & NBSP; là một tập hợp các sản phẩm dịch vụ nền tảng hỗ trợ phát triển CI/CD. Nó cho phép người dùng phát triển và triển khai các ứng dụng bên trong môi trường ảo, được gọi là container. Với một hình ảnh duy nhất, Docker có thể khởi động một ứng dụng với tất cả các thư viện và phụ thuộc của nó.is a set of platform-as-a-service products that support CI/CD development. It allows users to develop and deploy applications inside virtual environments, called containers. With a single image, Docker can boot up an application with all its libraries and dependencies.

Trong hướng dẫn này, hãy tìm hiểu cách triển khai container MySQL Docker và bắt đầu làm việc với cơ sở dữ liệu container.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

Điều kiện tiên quyết

  • Truy cập vào một dòng lệnh/cửa sổ thiết bị đầu cuối
  • Tài khoản người dùng với & NBSP; Đặc quyền SUDO hoặc truy cập vào tài khoản gốcsudo privileges or access to the root account
  • Cài đặt Docker hiện có

Nếu bạn cần thiết lập cơ sở dữ liệu một cách nhanh chóng và không sử dụng quá nhiều tài nguyên, việc triển khai MySQL trong một thùng chứa là một giải pháp nhanh chóng và hiệu quả. Điều này chỉ phù hợp cho các ứng dụng vừa và nhỏ. Các ứng dụng cấp doanh nghiệp sẽ không tìm thấy container MySQL Docker đủ cho khối lượng công việc của họ.deploying MySQL in a container is a fast and efficient solution. This is only appropriate for small and medium-sized applications. Enterprise-level applications would not find a MySQL Docker container sufficient for their workload.

Sử dụng phần mềm Docker để thiết lập cơ sở dữ liệu của bạn đang ngày càng trở nên phổ biến đối với các ứng dụng quy mô nhỏ. Thay vì có một máy chủ riêng để lưu trữ cơ sở dữ liệu, bạn có thể triển khai thùng chứa cơ sở dữ liệu MySQL.

Nhiều container có thể chạy trên máy tính của bạn. Các container chia sẻ cùng một hạt nhân và thư viện của máy chủ trong khi đóng gói ứng dụng hoặc phần mềm được triển khai thành các đơn vị. Điều này làm cho cơ sở dữ liệu cực kỳ nhẹ và nhanh để quay lên.

Cài đặt thùng chứa docker mysql

Thiết lập cơ sở dữ liệu trong Docker chỉ đơn giản là xây dựng một container dựa trên hình ảnh MySQL. Thực hiện theo các bước được nêu dưới đây để có được thùng chứa MySQL của bạn và chạy.

Bước 1: Kéo hình ảnh Docker MySQL

1. Bắt đầu bằng cách kéo hình ảnh Docker thích hợp cho MySQL. Bạn có thể tải xuống một phiên bản cụ thể hoặc chọn phát hành mới nhất như đã thấy trong lệnh sau:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
2

Nếu bạn muốn có một phiên bản cụ thể của MySQL, hãy thay thế

docker run --rm -d -p 23306:3306 mysql:yi
8 với số phiên bản.
docker run --rm -d -p 23306:3306 mysql:yi
8
with the version number.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

2. Xác minh hình ảnh hiện được lưu trữ cục bộ bằng cách liệt kê các hình ảnh docker đã tải xuống:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
3

Đầu ra nên bao gồm

docker run --rm -d -p 23306:3306 mysql:yi
9 trong số các hình ảnh được liệt kê.
docker run --rm -d -p 23306:3306 mysql:yi
9
among the listed images.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

Bước 2: Triển khai thùng chứa MySQL

1. Khi bạn có hình ảnh, hãy chuyển sang triển khai một thùng chứa MySQL mới với:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
4
  • Thay thế
    sudo apt-get install -y mysql-client
    
    0 bằng tên bạn chọn. Nếu bạn không cung cấp một tên, Docker sẽ tạo ra một cái ngẫu nhiên.
    sudo apt-get install -y mysql-client
    
    0
    with the name of your choice. If you do not provide a name, Docker generates a random one.
  • Tùy chọn
    sudo apt-get install -y mysql-client
    
    1 hướng dẫn Docker chạy container làm dịch vụ trong nền.
    sudo apt-get install -y mysql-client
    
    1
    option instructs Docker to run the container as a service in the background.
  • Thay thế
    sudo apt-get install -y mysql-client
    
    2 bằng tên của hình ảnh được tải xuống trong bước 1.
    sudo apt-get install -y mysql-client
    
    2
    with the name of the image downloaded in Step 1.

Trong ví dụ này, chúng tôi tạo một thùng chứa có tên

sudo apt-get install -y mysql-client
3 với thẻ phiên bản
docker run --rm -d -p 23306:3306 mysql:yi
8:
sudo apt-get install -y mysql-client
3
with the
docker run --rm -d -p 23306:3306 mysql:yi
8
version tag:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
5

2. Sau đó, hãy kiểm tra xem container MySQL có đang chạy không:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
6

Bạn sẽ thấy container mới được tạo được liệt kê trong đầu ra. Nó bao gồm chi tiết container, một là trạng thái của môi trường ảo này. Trạng thái thay đổi từ

sudo apt-get install -y mysql-client
5 thành
sudo apt-get install -y mysql-client
6, sau khi thiết lập hoàn tất.
sudo apt-get install -y mysql-client
5
to
sudo apt-get install -y mysql-client
6
, once the setup is complete.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

Bước 3: Kết nối với thùng chứa Docker MySQL

1. Trước khi bạn có thể kết nối thùng chứa máy chủ MySQL với máy chủ, bạn cần đảm bảo gói máy khách MySQL được cài đặt:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
7

2. Sau đó, hãy mở tệp nhật ký cho thùng chứa MySQL để tìm mật khẩu gốc được tạo:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
8

Đối với container

sudo apt-get install -y mysql-client
3, chúng tôi chạy:
sudo apt-get install -y mysql-client
3
container, we run:

git clone https://github.com/wangkuiyi/mysql-server-in-docker
cd mysql-server-in-docker
9

3. Cuộn qua đầu ra và tìm dòng

sudo apt-get install -y mysql-client
8 :, Sao chép và dán mật khẩu vào trình soạn thảo notepad hoặc văn bản để bạn có thể sử dụng nó sau.
sudo apt-get install -y mysql-client
8
: , copy and paste the password in a notepad or text editor so you can use it later.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

4. Tiếp theo, đi đến vỏ bash của thùng chứa MySQL bằng cách gõ:

docker build -t mysql:yi .
0

Đối với container được tạo làm ví dụ, chúng tôi chạy:

docker build -t mysql:yi .
1

3. Cung cấp mật khẩu gốc bạn đã sao chép từ tệp nhật ký, khi được nhắc. Với điều đó, bạn đã kết nối máy khách MySQL với máy chủ.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

4. Cuối cùng, thay đổi mật khẩu gốc máy chủ để bảo vệ thông tin của bạn:

docker build -t mysql:yi .
2

Thay thế

sudo apt-get install -y mysql-client
9 bằng mật khẩu mạnh mẽ mà bạn chọn.
sudo apt-get install -y mysql-client
9
with a strong password of your choice.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

Định cấu hình container MySQL

Khi bạn cài đặt thùng chứa MySQL, bạn sẽ tìm thấy các tùy chọn cấu hình của nó trong thư mục

mysql --host 127.0.0.1 --port 23306 --user root -proot
0.
mysql --host 127.0.0.1 --port 23306 --user root -proot
0
directory.

Nếu bạn cần sửa đổi cấu hình, hãy tạo một tệp cấu hình thay thế trên máy chủ và gắn chúng bên trong thùng chứa.

1. Đầu tiên, hãy tạo một thư mục mới trên máy chủ:

docker build -t mysql:yi .
3

2. Tạo tệp cấu hình MySQL tùy chỉnh bên trong thư mục đó:

docker build -t mysql:yi .
4

3. Một lần trong tệp, bạn có thể thêm các dòng với cấu hình mong muốn.

Ví dụ: nếu bạn muốn tăng số lượng kết nối tối đa lên 250 (thay vì mặc định 151), hãy thêm các dòng sau vào tệp cấu hình:

docker build -t mysql:yi .
5

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

4. Lưu và thoát tệp.

5. Để các thay đổi diễn ra, bạn cần xóa và chạy lại thùng chứa MySQL. Lần này, container sử dụng kết hợp các cài đặt cấu hình từ tệp mới được tạo và các tệp cấu hình mặc định.remove and rerun the MySQL container. This time, the container uses a combination of configuration settings from the newly created file and the default config files.

Để thực hiện việc này, hãy chạy container và ánh xạ đường dẫn âm lượng bằng lệnh:

docker build -t mysql:yi .
6

6. Để kiểm tra xem container có tải cấu hình từ máy chủ hay không, hãy chạy lệnh sau:

docker build -t mysql:yi .
7

Bạn sẽ thấy rằng số lượng kết nối tối đa là

mysql --host 127.0.0.1 --port 23306 --user root -proot
1.
mysql --host 127.0.0.1 --port 23306 --user root -proot
1
.

Quản lý lưu trữ dữ liệu

Theo mặc định, Docker lưu trữ dữ liệu trong khối lượng nội bộ của nó.

Để kiểm tra vị trí của tập, hãy sử dụng lệnh:

docker build -t mysql:yi .
8

Bạn sẽ thấy

mysql --host 127.0.0.1 --port 23306 --user root -proot
2 được gắn trong khối lượng bên trong.
mysql --host 127.0.0.1 --port 23306 --user root -proot
2
mounted in the internal volume.

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

Bạn cũng có thể thay đổi vị trí của thư mục dữ liệu và tạo một trên máy chủ. Có một âm lượng bên ngoài container cho phép các ứng dụng và công cụ khác truy cập khối lượng khi cần.change the location of the data directory and create one on the host. Having a volume outside the container allows other applications and tools to access the volumes when needed.

1. Trước tiên, hãy tìm một âm lượng thích hợp trên máy chủ và tạo thư mục dữ liệu trên đó:

docker build -t mysql:yi .
9

2. Bây giờ hãy khởi động lại container, gắn thư mục được thực hiện trước đó:

docker run --rm -d -p 23306:3306 mysql:yi
0

Nếu bạn kiểm tra container, bạn sẽ thấy rằng thùng chứa MySQL hiện lưu trữ dữ liệu của nó trên hệ thống máy chủ. Chạy lệnh:

docker build -t mysql:yi .
8

Bắt đầu, dừng lại và khởi động lại thùng chứa MySQL

Container tự động dừng khi quá trình chạy trong đó dừng.

Để bắt đầu chạy bộ chứa MySQL:start the MySQL container run:

docker run --rm -d -p 23306:3306 mysql:yi
2

Dừng container MySQL, sử dụng lệnh:, use the command:

docker run --rm -d -p 23306:3306 mysql:yi
3

Để khởi động lại bộ chứa MySQL:restart the MySQL container run:

docker run --rm -d -p 23306:3306 mysql:yi
4

Xóa container MySQL

Trước khi xóa một thùng chứa MySQL, hãy chắc chắn rằng bạn dừng nó trước.

Sau đó, loại bỏ container Docker bằng:

docker run --rm -d -p 23306:3306 mysql:yi
5

Hướng dẫn how do i connect to a mysql container? - làm cách nào để kết nối với vùng chứa mysql?

Sự kết luận

Sau khi đọc bài viết này, bạn nên triển khai thành công một thùng chứa MySQL.

Kết hợp Docker và MySQL có thể là một giải pháp tuyệt vời cho một ứng dụng quy mô nhỏ. Bây giờ bạn có thể bắt đầu khám phá tất cả các khả năng của thùng chứa MySQL.