Docker容器创建命令备忘录

网上创建容器的命令有点点小问题,为避免以后到处找命令,所以写一个备忘录记一下

MySQL

1
2
3
4
5
6
7
8
9
10
11
docker run --name mysql \
-v /home/docker/mysql/log:/var/log/mysql \
-v /home/docker/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/ \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest \
--init-connect="SET collation_connection=utf8mb4_0900_ai_ci" \
--init-connect="SET NAMES utf8mb4" \
--default-authentication-plugin=mysql_native_password
--skip-character-set-client-handshake

当然也可以写好配置文件后,使用配置文件方式进行启动

配置文件:

1
2
3
4
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake
default_authentication_plugin=mysql_native_password

创建命令:

1
2
3
4
5
6
7
docker run --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=密码 \
-d mysql

需要注意,创建的MySQL容器可能会有一个问题,因为没有给外部连接的权限,所以你可能需要做如下更改:

1
2
3
4
docker exec -it mysql /bin/bash
#进入MySQL容器
mysql -uroot -p{密码}
#这里有可能设置的密码也没有生效,可以-p后直接回车
1
2
3
4
5
use mysql;
select host,user,plugin,authentication_string from user;
#查看一下root的host列是否为%,如果不是使用以下命令修改
update user set host=‘%’ where user=‘root’; #修改成运行外网连接
flush privileges; #刷新权限

需要注意!!plugin是加密的方式,在MySQL8中默认加密方式为caching_sha2_password,此时数据库软件默认的连接使用的是mysql_native_password,所以需要修改加密方式。

在这个地方被坑了很久,已经修改了创建命令,建议还是检查一遍以防被坑。

1
2
use mysql;
alter user 'root'@'%' identified with mysql_native_password by '密码';

这样就可以正常使用MySQL了。

Redies

要记得先创建配置文件和数据存放地址

1
2
mkdir -p /home/docker/redis/conf
mkdir -p /home/docker/redis/data

然后去官方文件配置地址

找到对应的版本,然后cd到目录下,把配置文件下载下来

1
2
cd /home/docker/redis/conf
wget 配置文件地址

根据需要修改完配置后,然后就可以运行命令

1
2
3
4
5
6
7
docker run \
-p 6379:6379 \
--name redis \
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes