赞
踩
下载镜像前可以先查询镜像仓库有哪些镜像,执行如下命令查询MySQL镜像。
docker search mysql
当然去Docker Hub搜索能看到更详细的信息。
docker pull mysql:5.7
如上命令表示把标签为5.7的MySQL镜像拉取到本地。
docker images
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明:
docker ps
可以看到一个名为mysql的容器正在运行。
docker exec -it mysql mysql -uroot -proot
如下,可以连接到mysql的命令行工具,执行查询数据库的命令。
创建MySQL容器时,使用的是MySQL的默认配置,可以按需做一些更改,这里主要是改默认的字符配置信息。
①
创建一个my.cnf的mysql配置文件,因为已经把宿主机的目录和容器的目录做了映射,所以可以直接在宿主机修改配置文件,MySQL容器重启时会读这个目录下的配置。
vi /mydata/mysql/conf/my.cnf
②
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:解决MySQL连接慢的问题,可以在配置文件中加入如下,并重启 mysql。
[mysqld]
skip-name-resolve
③
重启mysql容器
docker restart mysql
在上一步创建Docker容器的命令中使用两个常用的参数:
下面详细介绍下这两个参数,在我们创建Docker容器中常常使用这两个参数。
Docker 容器的目录挂载和端口映射是两种非常重要的特性,它们允许容器与宿主机之间进行数据和网络的交互。下面是这两种特性的原理和作用的详细解释,以及具体的示例。
目录挂载允许宿主机文件系统中的目录被“挂载”到容器内。这意味着容器可以读写宿主机上的文件,反之亦然。挂载的目录在容器内部表现为普通的本地文件系统路径,但实际上它指向的是宿主机上的实际目录。
假设你有一个 MySQL 数据库容器,你希望数据存储在宿主机上以确保数据持久化。你可以使用如下命令:
docker run -d \
--name mysql-container \
-v /path/to/local/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
mysql:latest
在这个例子中,-v /path/to/local/data:/var/lib/mysql
表示宿主机上的 /path/to/local/data
目录被挂载到了容器内的 /var/lib/mysql
目录。这样,所有容器内的数据库文件都将保存在宿主机的指定目录中。
端口映射允许容器内的网络端口与宿主机上的端口进行关联。这意味着外部网络可以通过宿主机的特定端口访问容器内的服务。Docker 在容器启动时创建这种映射关系。
假设你运行了一个 web 服务器容器,它监听在容器内部的 80 端口,但你想通过宿主机的 8080 端口访问它。你可以使用以下命令:
docker run -d \
--name web-server \
-p 8080:80 \
nginx:latest
在这个例子中,-p 8080:80
表示宿主机上的 8080 端口被映射到容器内的 80 端口。因此,任何对宿主机 8080 端口的请求都会被转发到容器内的 web 服务器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。