ps: Persekitaran percubaan ialah: ubuntu 14.04, 64-bit
1 Dapatkan imej mysql
daripada hab docker. gudang Dapatkan imej mysql
sudo docker pull mysql
Lihat imej
sudo docker images mysql latest 18f13d72f7f0 2 weeks ago 383.4 mb
2. Jalankan bekas mysql
Arahan untuk menjalankan instance mysql adalah seperti berikut:
Salin kod Kod tersebut adalah seperti berikut:
sudo docker run --name first-mysql -p 3306:3306 - e mysql_root_password=123456 -d mysql
<6> 5B6BF6F629BFE46B4C8786B555DB1947680138B2DE1F268F310A15CED7247amaksud di atas
: jalankan bekas
-Nama Nama -p 3306: 3306 ditunjukkan dalam ini Nombor port yang dipetakan ke mesin tempatan menggunakan port 3306 (yang kedua) dalam bekas juga adalah 3306 (yang pertama)
-d bermaksud berjalan menggunakan proses daemon, iaitu perkhidmatan hang di latar belakang
Lihat status bekas yang sedang dijalankan:
Salin kod Kod adalah seperti berikut:
sudo docker ps
arahan imej id bekas mencipta port status names5b6bf6f629bf
mysql "docker -entrypoint.sh" 32 jam yang lalu sehingga 5 jam 0.0.0.0:3306->3306/tcp first-mysql
<🎜 pangkalan data mysql, saya perlu memasang mysql-client pada mesin saya.sudo apt-get install mysql-client-core-5.6<p >
Di bawah kami menggunakan arahan mysql untuk mengakses pelayan Kata laluan ialah 123456 sebagai ditunjukkan sebentar tadi. 192.168.95.4 ialah IP mesin saya, 3306 ialah port yang diduduki oleh mesin fizikal ini seperti yang ditunjukkan tadi (bukan port dalam docker) sudo apt-get install mysql-client-core-5.6<br/>
mysql -h192.168.95.4 -p3306 -uroot -p123456
akses Hasilnya adalah seperti berikut:
mysql> show databases; +--------------------+ | database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
3 Jalankan instance mysql kedua
Sebab mengapa docker digunakan berbanding dengan mesin maya ialah. bahawa ia menggunakan sangat sedikit sumber, boleh "membuka" banyak persekitaran terpencil, jadi kami terus menjalankan contoh mysql kedua, menggunakan imej sebelumnya bernama second-mysql.
mysql4f7f48b 4c3 f83ee354157328049d7d0
f5523661docker: respons ralat daripada daemon: pemacu gagal memprogramkan kesambungan luaran pada endpoint second-mysql (33aa29d891a1cb540de250bcbbbe9a0a41cd98f61a4e9f129a2ad5db69da49.0.3: bind sudah 684.0.3: sudah gagal cated.Untuk mengesahkan bahawa yang pertama adalah nombor port tempatan , port 3306 masih digunakan, maka penciptaan adalah seperti yang ditunjukkan di atas Ralat telah berlaku, tetapi id kontena telah dihasilkan Apabila kita mengubah suai port, ralat akan dilaporkan kerana nama bercanggah, iaitu penciptaan yang gagal akan menduduki Nama ini:
Salin kod Kod adalah seperti berikut:
sudo docker run --name second-mysql -p 3307:3306 -e mysql_root_password=123456 -d
mysqldocker: respons ralat daripada daemon: konflik nama "/second-mysql" sudah digunakan oleh bekas 2de4ddb5bfb9b9434af8e72368631e7f4c3f83ee354157328049d7d60f5523d7db5bfb9b9434af8e72368631e7f4c3f83ee354157328049d7d60f5523 (atau boleh keluarkan semula) guna semula nama tu. .
untuk Sahkan bahawa bekas mysql kedua masih dalam proses docker Kami menggunakan perintah ps -a bekerja selama 34 minit, dan mysql kedua baru sahaja dibuat.
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
Kami menggunakan arahan rm untuk memadamkan bekas ini, seperti yang ditunjukkan dalam arahan berikut:
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
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.
Ujian 4.jdbc (maven & spring boot)
Contoh sumber: Gunakan java spring untuk mengendalikan pangkalan data, gunakan Contoh pada tapak web rasmi spring menggunakan jdbctemplate, kaedah SQL telanjang, tanpa menggunakan hibernate atau myibatis.
### 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: 123456
@bean @configurationproperties(prefix = "spring.datasource.dbcp") public datasource mysqlsource() { return datasourcebuilder.create().build(); } @bean public jdbctemplate mysqljdbctemplate() { return new jdbctemplate(mysqlsource()); }
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()));
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)
5 . Beberapa perangkap yang dihadapi
konfigurasi maven
menggunakan ungkapan lamda jdk8 dan java.version mesti dikonfigurasikan dalam maven
Mulakan semula perkhidmatan docker
Apabila perkhidmatan docker hang, bekas itu juga hang dan tidak dimulakan semula Anda harus membawa parameter --restart=always semasa menjalankan bekas
Atas ialah kandungan terperinci Bagaimana untuk memasang dan menjalankan mysql pada docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!