安装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博客