deepin系统里通过docker来使用mysql


发布时间:2019-11-20 04:37    作者: Uncle Hui   已过去:10 月,2 周   阅读总量:403 已被赞:0


第一步:安装docker

 

sudo apt install docker-ce

  • 启动 docker:

systemctl start docker

第二步:改用国内镜像,以提高抓取速度

  • 修改/etc/docker/daemon.json 没有的话创建一个

在阿里云申请一个账号

打开连接 https://cr.console.aliyun.com/#/accelerator 拷贝您的专属加速器地址。

修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器(下面是4个命令,分别单独执行)

Note: 这里的 https://jxus37ad.mirror.aliyuncs.com 是申请者的加速器地址,在此仅仅用于演示,而使用者要个根据自己的使用的情况填写自己申请的加速器地址。
{
  "registry-mirrors": ["https://jxus37ad.mirror.aliyuncs.com"]
}

第三步:

  • 重启 docker 服务
    sudo service docker restart

第四步:

  • 查看安装的版本信息

    docker version

第五步:

 错误处理,这里运行的时候容易报错:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denie

解决:

由于 docker 守护进程启动的时候,会默认赋予名字为 docker 的用户组读写 Unix socket 的权限,因此只要创建 docker 用户组,并将当前用户加入到 docker 用户组中,那么当前用户就有权限访问 Unix socket 了,进而也就可以执行 docker 相关命令了。

我们可以依次使用如下命令解决问题:

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用

第六步:

1.查找 Docker Hub. 上的 mysql 镜像

docker search mysql

2.拉取mysql5.7 

2.1先看以下镜像库里有哪些镜像了: docker images

2.1拉取: 

docker pull mysql:5.7

2.2 启动mysql镜像:

docker run -itd -P mysql:5.7 bash

      其中 docker run是启动容器的命令;i是交互式操作,t是一个终端,d指的是在后台运行,

-P指在本地生成一个随机端口,用来映射mysql的3306端口,mysql指运行mysql镜像,bash指创建一个交互式shell。

3.

查看已经运行的docker镜像

docker ps -a

从图中可以看到mysql镜像的3306端口绑定了本地的32769端口,因此就说如果你要在局域网中访问docker中的mysql数据库就需要使用服务器IP:32769来进行访问。

 

接到mysql镜像中

docker exec -it relaxed_hodgkin bash

docker exec 是docker镜像的连接命令,类似于ssh一样的命令,relaxed_hodgkin是镜像的名字,镜像每次启动都必须有一个名字,该名字可以手动指定也可以自己生成。改名字通过docker ps -a 可以查看到

连接成功以后,如下图,已经进入到了docker mysql镜像中

查看mysql的启动状态,如上图就显示mysql没启动

service mysql status

mysql没有启动可以使用以下命令启动,如图所示启动成功

service mysql start

.输入mysql 验证mysql是否启动成功

到此为止,docker中的mysql已经启动成功。

第五步:实现外部连接mysql

1. 

  use mysql;

2.由于mysql中root执行绑定在了localhost,因此需要对root进行授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

3.首先需要设置root帐号的密码,如下

update user set authentication_string = password('root') where user = 'root';

现在mysql的root密码就是root了

测试mysql连接,成功!

日常使用总结:

第一步: 启动docker
systemctl start docker
第二步:让当前用户具有使用的权限
sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
第三步:启动我的mysql:5.7镜像 (这个命令会产生一个新容器)
docker run -itd -P mysql:5.7 bash 
    如果我们要启动一个使用过的容器,我们应该这样:
1.查看存在的容器 docker ps -a 
2.复制出ID
3.docker start b750bbbcfd88           #b750bbbcfd88:为ID

第四步:启动我的容器
docker exec -it relaxed_hodgkin bash

第五步:启动mysql
service mysql start

如果还是不能连接 就重新进入mysql 操作一次:
1.  use mysql;
2.由于mysql中root执行绑定在了localhost,因此需要对root进行授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
3.首先需要设置root帐号的密码,如下
update user set authentication_string = password('root') where user = 'root';
现在mysql的root密码就是root了
注意:如果Navicat提示连接正在被使用,应该新建一个连接。

删除容器:docker rm -f 1aa0e17572c8   #1aa0e17572c8:为ID
要注意查看端口的改变!
问题:第三步的时候每次都新生成一个容器,我要启动我以前的那个容器
需求:实现开机自动执行就上面的每一步,并不新产生容器

点赞

0




登陆后方可评论