MySQL 容器
MySQL 是一个广泛使用的数据库管理系统。创建 MySQL 的 Docker 容器,你需要确保容器可以持久化数据,并且可以通过网络访问。
拉取 MySQL 镜像
docker pull mysql
启动 MySQL 容器
docker run --name some-mysql -v ./mysql-data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=mypass \ -p 3306:3306 \ -d mysql --character-set-server=utf8 --collation-server=utf8_unicode_ci
--name some-mysql
: 给容器命名。-v ./mysql-data:/var/lib/mysql
: 将 MySQL 数据目录挂载到宿主机的./mysql-data
目录,这样可以保证数据的持久性。-e MYSQL_ROOT_PASSWORD=mypass
: 设置 MySQL root 用户的密码。-p 3306:3306
: 映射容器的 3306 端口到宿主机的相同端口。--character-set-server=utf8 --collation-server=utf8_unicode_ci
: 设置字符集为 UTF-8。
RabbitMQ
拉取 RabbitMQ 镜像
注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面docker pull rabbitmq:3.8-management
启动 RabbitMQ 容器
docker run \ -e RABBITMQ_DEFAULT_USER=admin\ -e RABBITMQ_DEFAULT_PASS=123456\ -v ./rabbitmq:/var/lib/rabbitmq \ --name mq \ --hostname mq \ -p 15672:15672 \ -p 5672:5672 \ -d --restart=always \ rabbitmq:3.8-management
- -d:表示以后台(守护进程)模式运行容器。
- --name mq:指定容器的名称为my-rabbitmq。
- -p 5672:5672 -p 15672:15672:将主机的5672和15672端口映射到容器内对应的端口,其中5672是RabbitMQ的消息传递端口,15672是RabbitMQ的管理界面端口。
- -v ./rabbitmq:/var/lib/rabbitmq:将主机上的/home/rabbitmq目录挂载到容器内的/var/lib/rabbitmq目录,用于持久化存储RabbitMQ的数据。
- --hostname mq:设置容器的主机名为my-rabbitmq-host。
- -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456:设置默认用户名和密码为admin/admin。
- --restart=always:设置容器在启动时自动重启。
minio
创建目录
一个用来存放配置,一个用来存储上传文件的目录启动前需要先创建Minio外部挂载的配置文件( /minio/config),和存储上传文件的目录( /minio/data)
mkdir -p /minio/config mkdir -p /minio/data
创建Minio容器并运行
docker run \ -p 9000:9000 \ -p 9001:9001 \ --name minio \ -d --restart=always \ -e "MINIO_ROOT_USER=minio" \ -e "MINIO_ROOT_PASSWORD=minio123" \ -v /minio/data:/data \ -v /minio/config:/root/.minio \ minio/minio server \ /data --console-address ":9001" --address ":9000"
端口映射 (
-p
):
-p 9000:9000
: 将容器的 9000 端口映射到宿主机的 9000 端口。9000 端口是 MinIO 的默认对象存储服务端口。-p 9001:9001
: 将容器的 9001 端口映射到宿主机的 9001 端口。9001 端口是 MinIO 的管理控制台端口。网络模式 (
--net=host
):
--net=host
: 使用宿主机的网络命名空间。这意味着容器将共享宿主机的网络接口,容器内的进程可以直接使用宿主机的网络端口。注意,使用--net=host
时,端口映射 (-p
) 会被忽略。容器名称 (
--name
):
--name minio
: 给容器命名为minio
。这样在后续操作中可以通过这个名字来引用这个容器。后台运行 (
-d
):
-d
: 以守护进程模式(后台)运行容器。重启策略 (
--restart
):
--restart=always
: 设置容器的重启策略为always
,这意味着无论容器因什么原因停止,Docker 都会自动重启它。这在生产环境中非常有用,确保服务的高可用性。环境变量 (
-e
):
-e "MINIO_ACCESS_KEY=minio"
: 设置 MinIO 的访问密钥(Access Key)为minio
。-e "MINIO_SECRET_KEY=minio123"
: 设置 MinIO 的秘密密钥(Secret Key)为minio123
。数据卷挂载 (
-v
):
-v /minio/data:/data
: 将宿主机的/minio/data
目录挂载到容器的/data
目录。这用于持久化 MinIO 存储的数据。-v /minio/config:/root/.minio
: 将宿主机的/minio/config
目录挂载到容器的/root/.minio
目录。这用于持久化 MinIO 的配置文件。访问
http://你的ip:9001
Redis
docker run -d \ --name redis \ -p 6379:6379 \ -v redis_data:/data \ redis:latest \ redis-server \ --appendonly no \ --requirepass 123456
参数说明:
-d
: 后台运行容器。
--name redis
: 容器名称。
-p 6379:6379
: 将宿主机的6379端口映射到容器。
-v redis_data:/data
: 使用Docker卷redis_data
持久化数据。
redis-server --appendonly yes
: 启用AOF持久化。
--appendonly no # 显式关闭AOF(默认已关闭,可选)
--requirepass 123456
: 设置访问密码(替换123456
为你的密码)。