Hướng dẫn docker mysql network - docker mạng mysql
Trước tiên, nếu máy bạn chưa có Docker, hãy cài đặt theo hướng dẫn tại: https://docs.docker.com/install/ Nội dung chính ShowShow Các bước cài đặt:
1. Tạo Docker network Việc tạo Docker network giúp cho các Docker container trong cùng 1 network có thể giao tiếp với nhau thông qua container name Chạy lệnh sau:
Lệnh trên sẽ tạo một Docker network có tên là mysql. Chúng ta sẽ đặt 2 Docker container chạy MySQL và phpMyAdmin bên trong network mysql này 2. Khởi tạo Docker container từ Docker image của MySQL Trước tiên, hãy tạo một thư mục dùng để lưu dữ liệu của Docker container, ví dụ: /home/moe/mysql_data Sau đó, chạy lệnh:
trong đó:
3. Khởi tạo Docker container từ Docker image của phpMyAdmin Chạy lệnh sau:
trong đó:
3. Khởi tạo Docker container từ Docker image của phpMyAdmin --name myadmin: tên container--network mysql: đặt container này vào trong network mysql. Lúc này 2 container chạy phpMyAdmin và MySQL đều ở trong cùng 1 network -e PMA_HOST=learn_mysql: địa chỉ IP của MySQL server. Vì chúng ta đã đặt 2 container chạy phpMyAdmin và MySQL trong cùng 1 network (mysql) nên chúng ta có thể dùng tên container chạy MySQL (learn_mysql) cho biến môi trường nàyroot, mật khẩu chính là mật khẩu bạn đã đặt cho biến môi trường MYSQL_ROOT_PASSWORD khi khởi tạo MySQL container, như trong bài viết này thì mật khẩu tôi đặt là 123 -p 8081:80: mapping cổng 80 của container với cổng 8081 của máy hostSau khi hoàn thành cả 3 bước trên, chúng ta truy cập vào địa chỉ: http://localhost:8081/, xuất hiện màn hình: --name myadmin: tên container
-e PMA_HOST=learn_mysql: địa chỉ IP của MySQL server. Vì chúng ta đã đặt 2 container chạy phpMyAdmin và MySQL trong cùng 1 network (mysql) nên chúng ta có thể dùng tên container chạy MySQL (learn_mysql) cho biến môi trường này -p 8081:80: mapping cổng 80 của container với cổng 8081 của máy host
Các bước cài đặt: Tạo Docker network Khởi tạo Docker container từ Docker image của MySQL $ docker --version Docker version 20.10.11, build dea9396 $ docker-compose --version docker-compose version 1.29.2, build unknown 2. Tải xuống MySQL Docker ImageKhởi tạo Docker container từ Docker image của phpMyAdminDocker Hub để có được Hình ảnh docker MySQL. Điều quan trọng là bạn phải quyết định phiên bản MySQL bạn sẽ chạy. 1. Tạo Docker network $ docker pull mysql:latest Việc tạo Docker network giúp cho các Docker container trong cùng 1 network có thể giao tiếp với nhau thông qua container name: Không cần thiết phải sử dụng thẻ “latest“, Theo mặc định, nó sẽ kéo hình ảnh mới nhất. Chạy lệnh sau: $ docker images mysql Lệnh trên sẽ tạo một Docker network có tên là mysql. Chúng ta sẽ đặt 2 Docker container chạy MySQL và phpMyAdmin bên trong network mysql này REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest b05128b000dd 12 days ago 516MB 2. Khởi tạo Docker container từ Docker image của MySQLdocker run”Như được hiển thị trong phần tiếp theo sẽ kéo hình ảnh nếu không có sẵn cục bộ. 3. Khởi chạy MySQL ContainerTrước tiên, hãy tạo một thư mục dùng để lưu dữ liệu của Docker container, ví dụ: /home/moe/mysql_data $ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysqlKhởi chạy MySQL Container Hãy chia nhỏ lệnh trên và xem mỗi lá cờ làm gì. –name → Đặt tên cho vùng chứa của bạn. Nếu bạn không chỉ định cờ này, docker sẽ chỉ định một số tên được tạo ngẫu nhiên. → Đặt tên cho vùng chứa của bạn. Nếu bạn không chỉ định cờ này, docker sẽ chỉ định một số tên được tạo ngẫu nhiên. -p → Bản đồ cổng. MySQL sẽ lắng nghe tại cổng 3306 vì vậy chúng tôi đang lập bản đồ các cổng (3306 → 3306) từ máy chủ của bạn đến bộ chứa docker. Cổng máy chủ không cần thiết phải 3306nó có thể là bất cứ thứ gì có sẵn để sử dụng. → Bản đồ cổng. MySQL sẽ lắng nghe tại cổng 3306 vì vậy chúng tôi đang lập bản đồ các cổng (3306 → 3306) từ máy chủ của bạn đến bộ chứa docker. Cổng máy chủ không cần thiết phải 3306nó có thể là bất cứ thứ gì có sẵn để sử dụng. Chạy phần sau netstat trong máy cục bộ của bạn để kiểm tra xem cổng được ánh xạ có đang lắng nghe hay không khi vùng chứa được khởi chạy.netstat trong máy cục bộ của bạn để kiểm tra xem cổng được ánh xạ có đang lắng nghe hay không khi vùng chứa được khởi chạy. $ netstat -tlnup | grep -i 3306 Đầu ra mẫu: 0-v → Đính kèm một khối lượng vào hộp chứa. Hành vi mặc định của docker là nó sẽ không tồn tại dữ liệu sau khi vùng chứa bị xóa, vì vậy bạn sẽ mất tất cả dữ liệu của mình. → Đính kèm một khối lượng vào hộp chứa. Hành vi mặc định của docker là nó sẽ không tồn tại dữ liệu sau khi vùng chứa bị xóa, vì vậy bạn sẽ mất tất cả dữ liệu của mình. Để tạo bộ nhớ liên tục, tôi đã tạo ổ đĩa có tên “mysql_volume“. MySQL lưu trữ dữ liệu trong /var/lib/mysql/ bên trong vùng chứa và ở đây nó được ánh xạ tới thư mục localhost /var/lib/docker/volumes/mysql_volume1/_datavì vậy dữ liệu của bạn sẽ được duy trì.mysql_volume“. MySQL lưu trữ dữ liệu trong /var/lib/mysql/ bên trong vùng chứa và ở đây nó được ánh xạ tới thư mục localhost /var/lib/docker/volumes/mysql_volume1/_datavì vậy dữ liệu của bạn sẽ được duy trì. Nếu bạn muốn biết thêm về khối lượng docker, hãy xem chi tiết của chúng tôi bài báo trên cùng một.bài báo trên cùng một. -d → Sẽ khởi động và chạy vùng chứa ở chế độ tách rời. Nếu bạn bỏ qua -dsau đó bạn sẽ thấy nhật ký khởi động vùng chứa trong thiết bị đầu cuối và bạn phải mở một phiên thiết bị đầu cuối mới để kết nối với vùng chứa. → Sẽ khởi động và chạy vùng chứa ở chế độ tách rời. Nếu bạn bỏ qua -dsau đó bạn sẽ thấy nhật ký khởi động vùng chứa trong thiết bị đầu cuối và bạn phải mở một phiên thiết bị đầu cuối mới để kết nối với vùng chứa. -e → Các biến môi trường. Bạn phải thiết lập mật khẩu người dùng gốc mysql sử dụng bất kỳ một trong các tham số dưới đây. → Các biến môi trường. Bạn phải thiết lập mật khẩu người dùng gốc mysql sử dụng bất kỳ một trong các tham số dưới đây.
Nếu bạn bỏ qua bước này, thì một lỗi sẽ được hiển thị như hình dưới đây. 4. Kiểm tra trạng thái vùng chứa MySQLBạn có thể kiểm tra trạng thái vùng chứa đã khởi chạy bằng lệnh sau: 1Đầu ra mẫu: 2-v → Đính kèm một khối lượng vào hộp chứa. Hành vi mặc định của docker là nó sẽ không tồn tại dữ liệu sau khi vùng chứa bị xóa, vì vậy bạn sẽ mất tất cả dữ liệu của mình.Để tạo bộ nhớ liên tục, tôi đã tạo ổ đĩa có tên “mysql_volume“. MySQL lưu trữ dữ liệu trong /var/lib/mysql/ bên trong vùng chứa và ở đây nó được ánh xạ tới thư mục localhost /var/lib/docker/volumes/mysql_volume1/_datavì vậy dữ liệu của bạn sẽ được duy trì. 3Nếu bạn muốn biết thêm về khối lượng docker, hãy xem chi tiết của chúng tôi bài báo trên cùng một.root bằng cách chạy lệnh sau. Trong trường hợp của tôi, tôi đã thiết lập mật khẩu của riêng mình thông qua MYSQL_ROOT_PASSWORD. 4-d → Sẽ khởi động và chạy vùng chứa ở chế độ tách rời. Nếu bạn bỏ qua -dsau đó bạn sẽ thấy nhật ký khởi động vùng chứa trong thiết bị đầu cuối và bạn phải mở một phiên thiết bị đầu cuối mới để kết nối với vùng chứa.-e → Các biến môi trường. Bạn phải thiết lập mật khẩu người dùng gốc mysql sử dụng bất kỳ một trong các tham số dưới đây.MYSQL_RANDOM_ROOT_PASSWORD=1 khi khởi chạy vùng chứa, bạn có thể lấy mật khẩu được tạo tự động từ nhật ký. MYSQL_ROOT_PASSWORD → Thiết lập mật khẩu của riêng bạn bằng cách sử dụng biến môi trường này.MYSQL_ALLOW_EMPTY_PASSWORD → Mật khẩu trống hoặc Null sẽ được thiết lập. Bạn phải thiết lập MYSQL_ALLOW_EMPTY_PASSWORD=1.MYSQL_RANDOM_ROOT_PASSWORD → mật khẩu ngẫu nhiên sẽ được tạo khi vùng chứa được khởi động. Bạn phải thiết lập MYSQL_RANDOM_ROOT_PASSWORD=1 để tạo mật khẩu ngẫu nhiên. Nếu bạn bỏ qua bước này, thì một lỗi sẽ được hiển thị như hình dưới đây.Lỗi biến môi trường 4. Kiểm tra trạng thái vùng chứa MySQLBạn có thể kiểm tra trạng thái vùng chứa đã khởi chạy bằng lệnh sau:load_data.sql”Với các truy vấn sau trong đó. 85. Kết nối với cơ sở dữ liệu MySQLdocker cp” yêu cầu. 9 3 1Chạy lệnh sau để kết nối với vùng chứa MySQL. 4 3Kết nối với cơ sở dữ liệu MySQL dưới dạng root bằng cách chạy lệnh sau. Trong trường hợp của tôi, tôi đã thiết lập mật khẩu của riêng mình thông qua MYSQL_ROOT_PASSWORD. 4Kết nối với cơ sở dữ liệu 4 6 7 8 9Nếu bạn đã sử dụng MYSQL_RANDOM_ROOT_PASSWORD=1 khi khởi chạy vùng chứa, bạn có thể lấy mật khẩu được tạo tự động từ nhật ký. 5 6 .sql khi chạy docker exec.$ docker --version Docker version 20.10.11, build dea93960 Mật khẩu gốc đã tạoMật khẩu gốc được tạo tự động sẽ dài và nó không phải là thứ cần được ghi nhớ. Bạn có thể đặt lại mật khẩu gốc bằng cách chạy truy vấn sau.docker runbạn có thể dùng docker-soạn để quay nhanh thùng chứa. Docker-compos phù hợp nhất khi bạn có nhiều vùng chứa được tạo.
7docker-compose.yml hoặc docker-compose.yaml. Sao chép và dán mã yaml sau đây. Điều này cũng giống như những gì tôi đã chạy thủ công trong các phần trước.$ docker --version Docker version 20.10.11, build dea93961 Thay thế mật khẩu ‘mysqlpassword’ bằng mật khẩu của riêng bạn. Bạn cũng có thể tạo người dùng của riêng mình và cấp cho anh ta các đặc quyền theo yêu cầu. $ docker --version Docker version 20.10.11, build dea939626. Tải dữ liệu mẫu Mục tiêu chính của việc thiết lập mysql là tải một số dữ liệu và chạy các truy vấn đối với nó. Có một số cách bạn có thể tải dữ liệu. Tôi có một tệp mẫu tên là “load_data.sql”Với các truy vấn sau trong đó. $ docker --version Docker version 20.10.11, build dea93963 Đầu ra mẫu: $ docker --version Docker version 20.10.11, build dea93964 -v → Đính kèm một khối lượng vào hộp chứa. Hành vi mặc định của docker là nó sẽ không tồn tại dữ liệu sau khi vùng chứa bị xóa, vì vậy bạn sẽ mất tất cả dữ liệu của mình.Để tạo bộ nhớ liên tục, tôi đã tạo ổ đĩa có tên “mysql_volume“. MySQL lưu trữ dữ liệu trong /var/lib/mysql/ bên trong vùng chứa và ở đây nó được ánh xạ tới thư mục localhost /var/lib/docker/volumes/mysql_volume1/_datavì vậy dữ liệu của bạn sẽ được duy trì. Nếu bạn muốn biết thêm về khối lượng docker, hãy xem chi tiết của chúng tôi bài báo trên cùng một. Trong trường hợp của tôi, tôi đã lập bản đồ localhost (3306) -> thùng đựng hàng (3306). Vì vậy, nếu tôi phải thiết lập kết nối với cơ sở dữ liệu, tôi phải kết nối với localhost:3306 hoặc 127.0.01:3306.localhost (3306) -> thùng đựng hàng (3306). Vì vậy, nếu tôi phải thiết lập kết nối với cơ sở dữ liệu, tôi phải kết nối với localhost:3306 hoặc 127.0.01:3306. Tôi đang sử dụng MySQL Workbench làm ứng dụng khách GUI của mình. Nếu bạn chưa cài đặt MySQL workbench trong máy của mình, thì bạn có thể sử dụng hướng dẫn bên dưới để cài đặt tương tự. 8.1. Cài đặt MySQL Workbench trong LinuxĐiều hướng đến trang web chính thức để tải xuống tệp gói. Bạn phải chọn hệ điều hành của mình để tải xuống .deb hoặc .rpm.trang web chính thức để tải xuống tệp gói. Bạn phải chọn hệ điều hành của mình để tải xuống .deb hoặc .rpm. Chọn hệ điều hành cho MySQL WorkbenchTrong bước tiếp theo, nó sẽ yêu cầu bạn Đăng nhập hoặc Đăng ký. Bạn có thể bỏ qua đăng nhập hoặc đăng ký bằng cách nhấp vào tùy chọn “Không, cảm ơn, Chỉ cần bắt đầu tải xuống của tôi”. Bỏ qua tùy chọn đăng nhập hoặc đăng kýTrên các hệ thống dựa trên Debian, hãy cài đặt MySQL Workbench như bên dưới: $ docker --version Docker version 20.10.11, build dea93965 $ docker --version Docker version 20.10.11, build dea93966 Trên các hệ thống dựa trên RHEL, hãy cài đặt MySQL Workbench như sau: $ docker --version Docker version 20.10.11, build dea93967 $ docker --version Docker version 20.10.11, build dea93968 Sau khi cài đặt xong, bạn có thể khởi chạy bàn làm việc mysql từ menu hoặc dấu gạch ngang. Khởi chạy MySQL Workbench 8.2. Kết nối với Cơ sở dữ liệu MySQLKết nối với cơ sở dữ liệu đang chạy bên trong bộ chứa docker. Bạn nên cố gắng kết nối với localhost:3306 hoặc localhost: tùy thuộc vào cách thiết lập vùng chứa của bạn.localhost:3306 hoặc localhost: Trước khi kết nối với cơ sở dữ liệu, bạn có thể nhấn “Kiểm tra kết nối”Để kiểm tra MySQL workbench có thể kết nối thành công với phiên bản cơ sở dữ liệu hay không.Kiểm tra kết nối”Để kiểm tra MySQL workbench có thể kết nối thành công với phiên bản cơ sở dữ liệu hay không. Kiểm tra kết nối MySQLBây giờ bạn có thể bắt đầu chạy các truy vấn của mình đối với các bảng bạn đã tạo. Chạy truy vấn mẫu trong MySQL Workbench9. Kết luậnTrong bài viết này, chúng ta đã giới thiệu sơ qua về cách khởi chạy vùng chứa MySQL trong docker bằng cách sử dụng docker run và docker-compose các phương pháp. Nếu bạn muốn thiết lập MySQL cho mục đích thử nghiệm hoặc học tập, Docker là quá đủ.docker run và docker-compose các phương pháp. Nếu bạn muốn thiết lập MySQL cho mục đích thử nghiệm hoặc học tập, Docker là quá đủ. Hi vọng điêu nay co ich. |