ps: Die experimentelle Umgebung ist: Ubuntu 14.04, 64-Bit
1. Holen Sie sich das MySQL-Image
#🎜🎜 ##🎜 🎜#Das MySQL-Image aus dem Docker-Hub-Warehouse abrufen
sudo docker pull mysql
sudo docker pull mysql
查看镜像
sudo docker images mysql latest 18f13d72f7f0 2 weeks ago 383.4 mb
2.运行一个mysql容器
运行一个mysql实例的命令如下:
复制代码 代码如下:
sudo docker run --name first-mysql -p 3306:3306 -e mysql_root_password=123456 -d mysql
5b6bf6f629bfe46b4c8786b555d8db1947680138b2de1f268f310a15ced7247a
上述命令各个参数含义:
run 运行一个容器
--name 后面是这个镜像的名称
-p 3306:3306 表示在这个容器中使用3306端口(第二个)映射到本机的端口号也为3306(第一个)
-d 表示使用守护进程运行,即服务挂在后台
查看当前运行的容器状态:
复制代码 代码如下:
sudo docker ps
container id image command created status ports names5b6bf6f629bf
mysql "docker-entrypoint.sh" 32 hours ago up 5 hours 0.0.0.0:3306->3306/tcp first-mysql
想要访问mysql数据库,我的机器上需要装一个mysql-client。
sudo apt-get install mysql-client-core-5.6<br>
下面我们使用mysql命令访问服务器,密码如刚才所示为123456,192.168.95.4为我这台机器的ip, 3306为刚才所示的占用本物理机的端口(不是在docker内部的端口)
mysql -h192.168.95.4 -p3306 -uroot -p123456
Bild ansehen#🎜 🎜#
mysql> show databases; +--------------------+ | database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
Der Befehl zum Ausführen einer MySQL-Instanz lautet wie folgt:
#🎜 🎜#Code kopieren Der Code lautet wie folgt:
--name gefolgt vom Namen des Bildes
-p 3306 :3306 bedeutet, dass in diesem Container Port 3306 (der zweite) verwendet wird. Die dem lokalen Computer zugeordnete Portnummer ist ebenfalls 3306 (der erste).
Den aktuell ausgeführten Container anzeigen Status:
Code kopieren Der Code lautet wie folgt:
sudo docker ps# ?? mysql
sudo apt-get install mysql-client-core-5.6<p></p>
Nachfolgend verwenden wir den MySQL-Befehl, um auf den Server zuzugreifen. Das Passwort lautet wie gerade angezeigt: 123456, 192.168.95.4 ist die IP meines Computers, 3306 ist der von diesem physischen Computer belegte Port (nicht der Port im Docker)
mysql -h192 .168.95.4 -p3306 -uroot -p123456
Die Ergebnisse des Zugriffs sind wie folgt:
sudo docker ps -a container id image command created status ports names 2de4ddb5bfb9 mysql "docker-entrypoint.sh" about a minute ago created second-mysql 5b6bf6f629bf mysql "docker-entrypoint.sh" 34 minutes ago up 34 minutes 0.0.0.0:3306->3306/tcp first-mysql
Der Grund für die Verwendung von Docker im Vergleich zu einer virtuellen Maschine ist, dass es nur sehr wenige Ressourcen verbraucht und eine „öffnen“ kann Viele isolierte Umgebungen, daher führen wir die Ausführung weiterhin aus. Die zweite MySQL-Instanz verwendet weiterhin das vorherige Image und heißt Second-MySQL.
Code kopieren Der Code lautet wie folgt:
sudo docker run --name second-mysql -p 3306:3307 -e mysql_root_password=123456 -d
#🎜 🎜#mysql2de4ddb5bf b9b9434af8e72368631e7f4c3f83ee354157328049d7d0f5523661docker: Fehlerantwort vom Daemon: Fehler beim Programmieren der externen Konnektivität des Treibers auf Endpunkt Second-MySQL. (33aa29d891a1cb540de 250bcbbbe9a0a41cd98f61a4e9f129a2ad5db69da4984): Bindung für 0.0.0.0:3306 bereits fehlgeschlagen: Port ist zugewiesen.
#🎜🎜 #Um zu überprüfen, ob die Eins die Portnummer des lokalen Computers ist und weiterhin Port 3306 verwendet wird, ist ein Fehler aufgetreten, aber es wurde eine Container-ID generiert Es wird ein Fehler gemeldet, weil die Namen in Konflikt stehen, das heißt, diese fehlgeschlagene Erstellung wird diesen Namen belegen: Code kopieren Der Code lautet wie folgt: sudo docker run --name second-mysql -p 3307:3306 -e mysql_root_password=123456 -dmysqldocker: Fehlerantwort vom Daemon: Konflikt. Der Name „/second-mysql“ wird bereits vom Container 2de4ddb5bfb9b9434af8e72368631e7f4c3 verwendet f83ee354157328049d7d0f5523661.#🎜 🎜 #Sie müssen diesen Container entfernen (oder umbenennen), um diesen Namen wiederverwenden zu können. Ein Befehl. Wir können beobachten, dass der Status von „first-mysql“ „up 34 seconds“ ist, was darauf hinweist, dass es seit 34 Minuten funktioniert und „second-mysql“ gerade erstellt wurde.
maintain@maintain-dev1:~$ sudo docker rm second-mysql maintain@maintain-dev1:~$ sudo docker ps -a container id image command created status ports names 5b6bf6f629bf mysql "docker-entrypoint.sh" 42 minutes ago up 42 minutes 0.0.0.0:3306->3306/tcp first-mysql
sudo docker run --name second-mysql -p 3307:3306 -e mysql\_root\_password=123456 -d mysql 5404fb11f29cba07b991f34056d6b40ed0888aa905a45e637e396d071bd7f331 sudo docker ps container id image command created status ports names 5404fb11f29c mysql "docker-entrypoint.sh" 12 seconds ago up 11 seconds 0.0.0.0:3307->3306/tcp second-mysql 5b6bf6f629bf mysql "docker-entrypoint.sh" 43 minutes ago up 43 minutes 0.0.0.0:3306->3306/tcp first-mysql
Stellen Sie den zweiten MySQL-Container neu her und belegen Sie den 3307-Port des physische Maschine: #🎜🎜 #
mysql -h192.168.95.4 -p3307 -uroot -p123456 warning: using a password on the command line interface can be insecure. welcome to the mysql monitor. commands end with ; or \g. your mysql connection id is 2 server version: 5.7.15 mysql community server (gpl) copyright (c) 2000, 2016, oracle and/or its affiliates. all rights reserved. oracle is a registered trademark of oracle corporation and/or itsaffiliates. other names may be trademarks of their respectiveowners. type 'help;' or '\h' for help. type '\c' to clear the current input statement.
### application.yaml ### mysql config spring: datasource: dbcp: driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://192.168.18.129:3306/test1 username: root password: 1234564.jdbc-Test (Maven & Spring Boot)
Beispielquelle:
#🎜🎜# Verwenden Sie Java Spring, um die Datenbank zu betreiben. Verwenden Sie dazu das Beispiel auf der offiziellen Spring-Website und verwenden Sie jdbctemplate, eine reine SQL-Methode, ohne Hibernate oder Myibatis zu verwenden. Das Beispiel auf der offiziellen Spring-Website verwendet h2, a Integrierte Speicherdatenbank. Es gibt keine Probleme beim Generieren von Konfigurationsdateien als Objekte.@bean @configurationproperties(prefix = "spring.datasource.dbcp") public datasource mysqlsource() { return datasourcebuilder.create().build(); } @bean public jdbctemplate mysqljdbctemplate() { return new jdbctemplate(mysqlsource()); }#🎜🎜#Es hat lange gedauert, bis ich herausgefunden habe, dass es sich bei der Abhängigkeitsinjektion um ein jdbctemplate-Objekt handelt. Ich habe die Datenquelle einfach wie folgt generiert, dann ein neues jdbctemlate-Objekt erstellt und schließlich jdbctemplate verwendet Die Datenbank zu betreiben ist sehr hässlich. Ich hoffe, Sie können mir einen Rat geben. #🎜🎜#
jdbctemplate jdbctemplate = mysqljdbctemplate(); jdbctemplate.execute("drop table if exists customers"); jdbctemplate.execute("create table customers(" + "id serial, first_name varchar(255), last_name varchar(255))"); // split up the array of whole names into an array of first/last names list<object[]> splitupnames = arrays.aslist("john woo", "jeff dean", "josh bloch", "josh long") .stream() .map(name -> name.split(" ")) .collect(collectors.tolist()); // use a java 8 stream to print out each tuple of the list splitupnames.foreach(name -> log.info(string.format("inserting customer record for %s %s", name[0], name[1]))); // uses jdbctemplate's batchupdate operation to bulk load data jdbctemplate.batchupdate("insert into customers(first_name, last_name) values (?,?)", splitupnames); log.info("querying for customer records where first_name = 'josh':"); jdbctemplate.query( "select id, first_name, last_name from customers where first_name = ?", new object[]{"josh"}, (rs, rownum) -> new customer(rs.getlong("id"), rs.getstring("first_name"), rs.getstring("last_name"))) .foreach(customer -> log.info(customer.tostring()));#🎜🎜#Das Folgende sind einige grobe Operationen in der Datenbank, die die funktionale Programmierung von jdk8 verwenden: #🎜🎜#
mysql> select * from customers; +----+------------+-----------+ | id | first_name | last_name | +----+------------+-----------+ | 1 | john | woo | | 2 | jeff | dean | | 3 | josh | bloch | | 4 | josh | long | +----+------------+-----------+ 4 rows in set (0.00 sec)#🎜🎜#Das Folgende wird auf dem MySQL-Client überprüft: #🎜🎜#
<properties> <java.version>1.8</java.version> </properties># 🎜 5. Einige Fallstricke sind aufgetreten muss in Maven konfiguriert werden, Sie sollten den Parameter --restart=always mitbringen, wenn Sie den Container ausführen #🎜🎜#
Das obige ist der detaillierte Inhalt vonSo installieren und führen Sie MySQL auf Docker aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!