Hướng dẫn này giải thích phương pháp từng bước để thiết lập và sử dụng bộ chứa MySQL Docker với các ví dụ Show
Docker là một nền tảng điều phối vùng chứa cho phép chúng tôi chạy hình ảnh của bất kỳ ứng dụng nào (trong trường hợp này là máy chủ MySQL) trên hệ thống máy chủ (có thể hoạt động trong mọi hệ điều hành được cài đặt – ví dụ. Linux, Windows, MacOS, v.v.) Sử dụng MySQL với docker sẽ giúp nhà phát triển hoặc bất kỳ ai muốn tìm hiểu hoặc thử nghiệm với MySQL mà không gặp rắc rối về bất kỳ cài đặt hoặc cấu hình nào Chạy qua docker chỉ cần bạn cài đặt docker trong máy của mình, sau đó bạn có thể sử dụng các hình ảnh docker có sẵn của MySQL => Nhấp vào đây để xem toàn bộ loạt bài hướng dẫn về MySQL Bạn sẽ học được gì
Hiểu về MySQL DockerChạy MySQL với bộ chứa Docker là một cơ chế được sử dụng rộng rãi, đặc biệt đối với kiến trúc vi dịch vụ, nơi thông thường mỗi vi dịch vụ hoạt động với cơ sở dữ liệu/bảng riêng và các thử nghiệm thành phần/tích hợp riêng biệt có thể được thực thi trên các phiên bản cơ sở dữ liệu được chứa trong bộ chứa Khái niệm vùng chứa MySQLHãy nghĩ về bộ chứa docker như một máy ảo nhẹ có thể chạy độc lập với bất kỳ ứng dụng nào khác (và có thể sống trong ngữ cảnh của chính nó). Bất kỳ ứng dụng nào – ví dụ: MySQL, trong trường hợp này, có thể được nhóm lại với nhau dưới dạng một bộ chứa và có thể được triển khai trên máy chủ cục bộ hoặc máy chủ từ xa Giờ đây, vùng chứa này là một hệ sinh thái nhỏ và có tất cả các thành phần được kết hợp với nhau để MySQL thực thi đúng cách Điều kiện tiên quyết. Cài đặt DockerĐể tạo MySQL làm bộ chứa docker, máy chủ phải cài đặt docker >> Đề xuất đọc để cài đặt Docker=> Cài đặt và giới thiệu về Docker Để xác thực cài đặt docker, chỉ cần chạy lệnh bên dưới docker version Nếu đầu ra hiển thị như bên dưới, điều này có nghĩa là quá trình cài đặt docker đã thành công Các bước thiết lập MySQL với Docker#1) Kéo hình ảnh docker mong muốn Hình ảnh Docker cho MySQL có thể được lấy từ trung tâm docker. Chúng tôi sẽ lấy hình ảnh mới nhất của máy chủ mysql từ trung tâm docker trong ví dụ của chúng tôi. Docker container image được xuất bản thông qua các nguồn chính thức trên docker hub >> Bấm vào đây để tìm tất cả các hình ảnh/phiên bản docker có sẵn của MySQL Trừ khi một phiên bản cụ thể được yêu cầu, chúng tôi luôn có thể chỉ định thẻ là 'mới nhất', thẻ này sẽ lấy phiên bản MySQL mới nhất hiện có từ sổ đăng ký trung tâm docker thường được gọi là trung tâm docker Cú pháp kéo hình ảnh docker docker pull mysql:latest Sau khi thực hiện, bạn sẽ thấy đầu ra như bên dưới Khi hình ảnh vùng chứa được tải xuống đầy đủ trên máy chủ, bạn có thể xem tất cả các hình ảnh đã tải xuống bằng cách chạy lệnh bên dưới docker image ls #2) Bắt đầu vùng chứa với hình ảnh được kéo Bây giờ, hãy bắt đầu một vùng chứa bằng hình ảnh docker đã tải xuống cho MySQL. a) Trước tiên hãy chạy vùng chứa với hình ảnh đã tải xuống cú pháp docker run --name {optional-name-for-the-container} -d {name of the image tag} Trong cú pháp trên,
Thí dụ. Chúng ta sẽ tạo một thùng chứa có tên learn-mysql-docker từ thẻ hình ảnh đã sử dụng trước đó – mysql. muộn nhất docker run --name learn-mysql-docker -d mysql:latest -e MYSQL_RANDOM_ROOT_PASSWORD=1 Lưu ý việc sử dụng cờ -e, không có gì khác ngoài việc chỉ định một biến môi trường. Ở đây chúng tôi đã chỉ định giá trị cho MYSQL_RANDOM_ROOT_PASSWORD=1 Điều này có nghĩa là trong khi khởi động máy chủ MySQL, mật khẩu gốc sẽ được đặt thành Chuỗi được tạo ngẫu nhiên (sau này chúng ta sẽ xem trong phần tiếp theo, cách chúng ta có thể truy xuất mật khẩu ngẫu nhiên được tạo động đó thông qua nhật ký bộ chứa Docker) Ghi chú. Cũng có các tùy chọn khác cho cài đặt mặc định của mật khẩu gốc Các tùy chọn có sẵn như sau
Có sẵn một biến môi trường khác, đó là MYSQL_ONETIME_PASSWORD. Điều này, khi được đặt thành true (1), sẽ làm hết hạn mật khẩu người dùng root và yêu cầu người dùng tạo mật khẩu mới sau lần đăng nhập đầu tiên. (Xin lưu ý rằng biến env này chỉ được áp dụng trong các phiên bản MySQL sau 5. 6) đầu ra Khi lệnh trên được thực thi, bạn sẽ thấy docker hiển thị ID của vùng chứa đã tạo Ví dụ Hãy xác thực xem vùng chứa đã được tạo thành công hay chưa bằng cách liệt kê các vùng chứa docker có sẵn trên máy chủ và lọc tên vùng chứa mà chúng tôi đã chỉ định docker container ls -a | grep "learn-mysql-docker" Bạn sẽ thấy kết quả như bên dưới (nếu vùng chứa được khởi động thành công) b) Tìm nạp mật khẩu root. Để kết nối với người dùng root, chúng tôi cần nhập mật khẩu. Vì chúng tôi đã đề cập đến biến env để đặt/cho phép mật khẩu ngẫu nhiên, chúng tôi sẽ tìm nạp mật khẩu này từ nhật ký bộ chứa Docker Thực hiện lệnh bên dưới để tìm nạp nhật ký và mật khẩu được tạo ngẫu nhiên docker logs learn-mysql-docker | grep "GENERATED ROOT PASSWORD:" đầu ra Như được đánh dấu trong hình trên, bạn có thể thấy một mật khẩu ngẫu nhiên đã được tạo. Trong các phần tiếp theo, chúng tôi sẽ sử dụng mật khẩu này để đăng nhập với người dùng root c) Làm cách nào để khởi động bộ chứa docker với mật khẩu mong muốn? Trong trường hợp này, lệnh tạo vùng chứa như sau docker run --name learn-mysql-docker -d mysql:latest -e MYSQL_ROOT_PASSWORD=`password123` #3) Đăng nhập vào container đã tạo Để làm như vậy, chúng tôi sẽ sử dụng tên vùng chứa (hoặc id) đã tạo và đăng nhập vào ứng dụng bash shell trong vùng chứa ________số 8Nếu container đã hoạt động và được tạo thành công, sau khi chạy lệnh trên, bạn sẽ thấy bash shell bên trong container #4) Khởi động vỏ MySQL Sau khi đăng nhập vào vùng chứa, chúng tôi sẽ khởi động trình bao MySQL với người dùng root và chỉ định mật khẩu được tạo ngẫu nhiên #5) Thực thi các ví dụ về lệnh MySQL Khi chúng tôi đã đăng nhập bằng người dùng root, bây giờ hãy thử thực hiện một số lệnh đơn giản để đảm bảo mọi thứ hoạt động tốt a) HIỂN THỊ tất cả cơ sở dữ liệu. Thực hiện lệnh dưới đây SHOW DATABASES; b) Thay đổi mật khẩu của người dùng root thành 'Mật khẩu' - Thực hiện lệnh bên dưới và thử đăng nhập lại với người dùng root (đối với mật khẩu mới i. e. Mật khẩu, được đặt bởi lệnh này) Kết nối với MySQL Docker từ máy chủỞ phần trên, chúng ta đã đăng nhập vào MySQL shell bên trong docker container. Chúng tôi cũng có thể hiển thị cổng từ bộ chứa MySQL trong docker sang cổng cục bộ và sử dụng cổng đó để phát triển cục bộ để kết nối với MySQL. #1) Bắt đầu vùng chứa và ánh xạ tới một cổng cục bộ. Trong bước này, chúng tôi sẽ ánh xạ cổng từ bộ chứa docker sang một cổng trên localhost sẽ được sử dụng để kết nối với MySQL a) Đầu tiên dừng/xóa vùng chứa mà chúng ta đã tạo trong các phần trước. Điều này là bắt buộc để tránh nhầm lẫn và nhận các lỗi liên quan đến địa chỉ cổng Các lệnh cần thực hiện là docker pull mysql:latest0 Khi vùng chứa bị dừng, chúng ta có thể xóa vùng chứa bằng lệnh bên dưới docker pull mysql:latest1 b) Sau khi vùng chứa bị xóa, chúng ta có thể bắt đầu một vùng chứa mới có cùng hình ảnh MySQL và cũng ánh xạ cổng docker sang cổng máy chủ cục bộ Điều này có thể được thực hiện bằng cách chạy lệnh dưới đây docker pull mysql:latest2 Hãy cố gắng hiểu lệnh trên
c) Đảm bảo rằng không có lỗi khi thực hiện lệnh trên. Nếu mọi thứ suôn sẻ, lệnh trên sẽ in ID vùng chứa được tạo Tham khảo hình ảnh bên dưới #2) Sau khi vùng chứa được khởi động thành công, hãy kết nối với MySQL từ localhost - sử dụng các công cụ dòng lệnh hoặc GUI như MySQL workbench a) Hãy chạy/kết nối với cơ sở dữ liệu MySQL thông qua dòng lệnh (Điều kiện tiên quyết – vui lòng đảm bảo rằng máy chủ cục bộ cũng đã cài đặt các công cụ Dòng lệnh MySQL) docker pull mysql:latest3 Khi lệnh được thực thi, bạn sẽ thấy rằng mình đã được kết nối với phiên bản MySQL dựa trên docker. Bạn có thể thử chạy bất kỳ lệnh nào như SHOW DATABASES; Và đảm bảo rằng thiết lập đang hoạt động tốt b) Để kết nối qua bàn làm việc của MySQL, bạn chỉ cần chỉ định tên máy chủ là localhost và số cổng. như cổng được ánh xạ đã được sử dụng Thiết lập kết nối mới với localhost và cổng là 13306 Lưu trữ mật khẩu trong móc khóa như trong hình bên dưới Sau đó, kết nối với cơ sở dữ liệu Thiết lập MySQL Docker bằng Docker Compose FileDocker soạn thảo là các chi tiết cần thiết để thiết lập hình ảnh/bộ chứa docker ở dạng mẫu, ở định dạng YAML. Điều này giúp dễ dàng chia sẻ và kiểm tra nó trong các hệ thống kiểm soát phiên bản như TFS hoặc GIT, nơi bất kỳ ai làm việc trong dự án có thể chỉ cần lấy tệp này và thực thi nó để thiết lập vùng chứa docker cần thiết với thông tin cần thiết Có một số tiện ích và trang web cho phép bạn tạo các tệp docker-compose một cách dễ dàng Chúng ta có thể sử dụng cái từ đây và chỉ cần dán lệnh docker mà chúng ta đã sử dụng để tạo vùng chứa Tham khảo hình ảnh bên dưới Chúng ta có thể sao chép nội dung của tệp đã tạo và lưu nội dung với tệp có tên docker-compose. yaml trong một thư mục trên máy tính để bàn/máy tính xách tay của bạn Sau khi tệp được lưu, hãy điều hướng đến thư mục (nơi tệp được lưu) và chỉ cần chạy lệnh bên dưới docker pull mysql:latest5 Nếu nội dung của tệp soạn thảo là chính xác và hình ảnh có sẵn, bộ chứa docker mới sẽ được bắt đầu (và có thể được sử dụng theo cách tương tự như đã giải thích trong các phần trước của bài viết này) Các câu hỏi thường gặpQ #1) Làm cách nào để tạo cơ sở dữ liệu trong MySQL Docker? Câu trả lời. MySQL Docker trong một phiên bản vùng chứa có thể được kết nối thông qua dòng lệnh bằng cách đăng nhập vào vùng chứa. Khi kết nối được thiết lập, bất kỳ lệnh SQL nào cũng có thể được thực thi Để kết nối với MySQL bên trong vùng chứa, đây là cú pháp docker pull mysql:latest6 Khi lệnh trên được thực thi, bạn sẽ được nhắc nhập mật khẩu cơ sở dữ liệu. Và khi mật khẩu được xác minh, bạn có thể thực thi bất kỳ lệnh dựa trên SQL nào Q #2) Làm cách nào để hiển thị một cổng cụ thể từ docker cho MySQL? Câu trả lời. Ánh xạ cổng có thể được chỉ định trong khi vùng chứa docker đang được tạo. Ví dụ: nếu bạn muốn ánh xạ cổng docker tới một cổng cụ thể trên máy chủ cục bộ của mình, bạn có thể sử dụng lệnh như docker pull mysql:latest2 Ở đây 13306 là cổng trong máy chủ và 3306 là cổng trong vùng chứa Q #3) Làm cách nào để khởi động lại/dừng và xóa bộ chứa MySQL dựa trên docker? Câu trả lời. Có một số lệnh tiện dụng và hữu ích cho docker container
docker pull mysql:latest8
docker pull mysql:latest9
docker image ls0 Câu hỏi 4) Làm cách nào để kết nối với phiên bản MySQL được cập nhật từ máy chủ? Câu trả lời. Khi cổng docker và cổng localhost được ánh xạ, chúng ta có thể kết nối với phiên bản MySQL nằm bên trong docker từ localhost thông qua dòng lệnh hoặc thông qua các công cụ giao diện người dùng như bàn làm việc của MySQL Để bắt đầu thông qua dòng lệnh – Công cụ dòng lệnh MySQL cũng nên được cài đặt trên máy chủ Lệnh dưới đây có thể được sử dụng để kết nối với phiên bản MySQL trong docker thông qua máy chủ docker pull mysql:latest3 Q #5) Làm cách nào để chạy một phiên bản cụ thể của MySQL bằng Docker? Câu trả lời. Trong khi chỉ định tùy chọn hình ảnh docker (sử dụng -d), trong khi tạo vùng chứa, chúng ta có thể chỉ định các hình ảnh/phiên bản có sẵn của vùng chứa Nếu cái mới nhất được chỉ định, nó sẽ tìm nạp hình ảnh được xuất bản mới nhất của vùng chứa đã cho Ví dụ: đối với MySQL, chúng tôi có thể chỉ định mysql. mới nhất để lấy phiên bản mới nhất và một cái gì đó như mysql. 8. 0. 22 chẳng hạn để lấy phiên bản 8. 0. 22 >> Tham khảo tài liệu Docker Hub dành cho MySQL để xem danh sách đầy đủ tất cả các phiên bản có sẵn Phần kết luậnTrong hướng dẫn này, chúng ta đã tìm hiểu về cách thiết lập máy chủ MySQL bằng Docker thay vì máy chủ thực tế Docker là một hệ thống điều phối vùng chứa mạnh mẽ, cho phép người dùng lưu trữ một số ứng dụng dưới dạng vùng chứa và cho phép chúng được sử dụng như một hệ thống biệt lập trong chính nó. Nó cũng yêu cầu thiết lập tối thiểu và cung cấp các phương tiện nhanh chóng để tránh mọi rắc rối khi thiết lập chỉ bằng một vài lệnh Ngày nay, với kiến trúc vi dịch vụ trong đó các dịch vụ vi mô khác nhau dựa vào cơ sở dữ liệu của riêng chúng, việc triển khai các máy chủ MySQL dưới dạng bộ chứa Docker đã trở thành một thông lệ khá phổ biến. Nó cũng được sử dụng rộng rãi cho bất kỳ thực thi cục bộ nào, tạo bằng chứng về các khái niệm hoặc thậm chí để chạy thử nghiệm tích hợp từ đầu đến cuối trong một môi trường biệt lập Mysql_random_root_password là gì?MYSQL_RANDOM_ROOT_PASSWORD. Đây là một biến tùy chọn. Đặt thành giá trị không trống, như yes , để tạo mật khẩu ban đầu ngẫu nhiên cho người dùng root (sử dụng pwgen ). Mật khẩu gốc được tạo sẽ được in ra thiết bị xuất chuẩn ( GENERATED ROOT PASSWORD. . ).
Làm cách nào để đặt mật khẩu root MySQL trong Docker?Khởi động Bộ chứa MySQL trong Docker
. -p - sẽ hiển thị cổng docker nội bộ bên ngoài docker . -e - sẽ thay đổi mật khẩu gốc . Tại đây bạn có thể chèn bất kỳ mật khẩu nào bạn muốn.
Làm cách nào để định cấu hình MySQL trong Docker?Bước 1. Kéo hình ảnh Docker cho MySQL. Bắt đầu bằng cách lấy Docker Image thích hợp cho MySQL. . Bước 2. Triển khai và khởi động MySQL Container. . Bước 3. Kết nối với Docker MySQL Container Làm cách nào để duy trì dữ liệu MySQL trong docker?Hình ảnh Docker của MySQL được định cấu hình để lưu trữ tất cả dữ liệu của nó trong thư mục /var/lib/mysql. Gắn ổ đĩa vào thư mục này sẽ cho phép lưu trữ dữ liệu liên tục tồn tại lâu hơn bất kỳ phiên bản vùng chứa nào . Sử dụng lệnh này để khởi động bộ chứa MySQL của bạn sẽ tạo một khối Docker mới có tên là mysql. |