Java开发

docker 安装 mysql

2021-08-09  本文已影响0人  _浅墨_
查看所有运行或者不运行容器
docker ps -a
查看服务状态

端口是否打开

lsof -i:3306

mysqld服务是否正在运行

service mysqld status

如果mariaDB,同样方法查服务是否正在运行:

service mariadb status
停止、启动、杀死、重启一个容器
docker stop Name或者ID  
docker start Name或者ID  
docker kill Name或者ID  
docker restart name或者ID
删除所有停止的容器
docker container prune
查看当前有些什么images
docker images
删除images
docker rmi <image id>
删除所有不使用的镜像
docker image prune --force --all或者docker image prune -f -a
查找 docker mysql
docker search mysql
安装mysql
# 创建文件夹
mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
# 安装
sudo docker run -p 3306:3306 --name mf-mysql -v $PWD/mysql/conf:/etc/mysql/conf.d -v $PWD/mysql/logs:/logs -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
使用docker run 时设置资源限制

我们在使用docker run的时候可以直接设置资源限制。

1 内存

假如我们希望容器的内存最多只使用512M。 我们通过 --memory 或 -m 参数设置内存限制。 参数后面跟一个数字,单位可以是b、 k、 m 或者 g, 最小值是 4M。

sudo docker run -m 512m nginx

我们也可以设置一个保留内存(memory reservation)。 这个值要小于--memory值。当docker检测到宿主机上内存较少的或存在内存竞争(memory contention)时才会启用该限制。但是因为是软限制,所以无法保证docker容器不超出这个限制。

sudo docker run -m 512m --memory-reservation=256m nginx

2. CPU
默认情况下,CPU的算力是不受限制的。我们可以通过cpus参数设置CPU限制。例如,我们限制容器最多使用两个CPU:

sudo docker run --cpus=2 ngin

我们也可以指定CPU分配的优先级。默认优先级是1024, 更高的数值的优先级更高:

sudo docker run --cpus=2 ngin
验证资源使用

在我们设置过资源限制之后,我们可以通过docker stats 命令来验证设置是否生效。

$ sudo docker stats
CONTAINER ID    NAME    CPU %    MEM USAGE / LIMIT   MEM %    NET I/O    BLOCK I/O    PIDS
8ad2f2c17078    bael_st   0.00%        2.578MiB / 512MiB   0.50%    936B / 0B 
登录 mysql
sudo docker exec -it mf-mysql bash
# 连接到mysql容器
mysql -u root -p
port is already allocated

查看进程,发现相关的容器并没有在运行,而 docker-proxy 却依然绑定着端口:

 sudo docker ps
 ps -aux | grep -v grep | grep docker-proxy

删除所有容器,停止 doker 进程,然后删除 local-kv.db 这个文件,再启动 docker

 docker rm $(docker ps -aq)
 sudo service docker stop
 sudo rm /var/lib/docker/network/files/local-kv.db
 sudo service docker start
授权远程登录
use mysql;

select user,host from user;

/*修改库中user表中,user用户的host=%(任意连接)*/
update user set host='%' where user ='root';

/*重新加载权限表*/
flush privileges;

/*给root用户赋予远程连接权限*/
grant all privileges on *.* to 'root'@'%' with grant option;

mysql -h 3.91.56.137 -P 3306 -u root -p123456 

MySQL8和5的密码加密方式不同,mysql_native_password是5的加密方式。mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_password认证方式。所以,使用类似于navicat或是sqlyog这些客户端时,默认使用还是mysql_native_password认证方式,所以即使输入正确的用户和密码依然登录不成功。

创建数据库
create database MFEfficiency character set utf8;
AWS Mysql 端口开放

如果是在 AWS 上搭建的 Mysql,直接 ping 和 telnet 端口都是不通的。要远程连接,需要在 EC2 的控制台设置安全组策略:

安全组策略设置步骤:
1.控制台-->2.网络与安全-->3.安全组-->4.入站规则

参考:

  1. 在docker内设置内存与CPU限制
  2. Docker容器CPU、memory资源限制
  3. Docker:Docker Compose 详解
上一篇 下一篇

猜你喜欢

热点阅读