安装docker
- 更新软件库确保可以访问最新版。
1 | sudo apt update |
- 卸载旧版本
1 | sudo apt-get remove docker docker-engine docker.io |
- 安装软件库中的docker
1 | sudo apt install docker.io |
- 设置自启动
1 | sudo systemctl start docker |
其他安装方法的可以参考官方文档Install Docker Engine on Ubuntu | Docker Docs
拉取Redis镜像并运行
以拉取redis镜像为例。
- 拉取
使用命令sudo docker pull redis:6.2拉取tag为6.2的redis镜像。
不指定tag则默认为latest,若要查看所有tag可以使用命令sudo docker search redis查看。或者在Docker Hub Container Image Library | App
Containerization中查找。
- 准备
redis.conf
在redis官网Redis
configuration |
Redis找到对应版本的默认配置。创建redis.conf文件。
并修改
1 | 将bind 127.0.0.1 注释 |
- 运行
1 | sudo docker run -d -v /home/username/software/redis:/usr/local/etc/redis -p 36379:6379 --name myredis redis:6.2 redis-server /usr/local/etc/redis/redis.conf |
其中/home/username/software/redis目录下有redis.conf文件。
这段命令中-d是后台运行容器。
-v /home/username/software/redis:/usr/local/etc/redis是将/home/username/software/redis目录挂载到/usr/local/etc/redis目录下,因为redis容器运行时不会生成redis.conf配置文件,以默认配置运行,需要运行时手动挂在自定义配置。
-p 36379:6379是端口映射,将宿主机36379段口映射到容器的6379端口。
--name myredis指定容器名字为myredis。
redis:6.2为运行的镜像名字:tag。
redis-server /usr/local/etc/redis/redis.conf为运行容器后执行的命令,此命令是让redis服务器以/usr/local/etc/redis/redis.conf配置文件运行。
拉取mysql并运行
拉取mysql:8.2镜像
1 | docker pull mysql:8.2 |
运行镜像,同redis一样,需要指定挂载目录,将自己的配置文件放在本地目录,挂载到容器中相应的目录中。
其中挂载到哪个目录可以通过官方文档查看。
1 | docker run -d \ |
如果启动后就退出,使用命令docker logs mymysql1查看日志。
出现
1 | ERROR] Could not open file '/var/log/mysql/error.log' for error logging: Permission denied |
这种权限报错,原因是启动容器中的mysql用户和宿主机不同,导致权限问题。此时可以使用命令cat /etc/group查看宿主机的user_id
获取后在执行命令时添加参数--user user_id即可。如果仍出现问题,将宿主机data和log文件夹删除再新建(可能之前的运行会导致这两个文件夹用户权限发生变化)。
参考链接:分析docker启动MySQL挂载目录提示权限不足Permission denied原因_docker挂载目录权限问题_jiangyunfan16的博客-CSDN博客