部分笔记来自黑马课堂:【黑马程序员Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+DockerCompose项目实战一套搞定-哔哩哔哩】 https://b23.tv/niWEhEF
一、什么是docker:
快速构建、运行、管理应用的工具。--帮助我们快速部署提高开发效率。
二、Docker是做什么的
Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用。
三、什么是镜像
将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像
(镜像相当于一个免安装的包,直接可以创建容器运行)
镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:Docker Hub
四、什么是容器
Docker会在运行镜像时创建一个隔离环境,称为容器
五、docker安装
安装Docker
本安装教程参考Docker官方文档,地址如下:
https://docs.docker.com/engine/install/centos/
1.卸载旧版
首先如果系统中已经存在旧的Docker,则先卸载:
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2.配置Docker的yum库
首先要安装一个yum工具:
yum install -y yum-utils
安装成功后,执行命令,配置Docker的yum源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4.启动和校验
# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps#命令来查看所有的容器,包括运行中的和已停止的容器
docker ps -a
5.配置镜像加速
这里以阿里云镜像加速为例。
5.1.注册阿里云账号
首先访问阿里云网站:
https://www.aliyun.com/
注册一个账号。
5.2.开通镜像服务
在首页的产品中,找到阿里云的容器镜像服务:
点击后进入控制台:
5.3.配置镜像加速
找到镜像工具下的镜像加速器:
页面向下滚动,即可找到配置的文档说明:
具体命令如下:
# 创建目录
mkdir -p /etc/docker# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker
六、安装redis
注意数据卷挂载要自己提前准备好宿主机对应的文件
docker run --restart=always \
-p 6379:6379 \
--name myredis \
-v /home/data/redis/redis.conf:/etc/redis/redis.conf \
-v /home/data/redis/data:/data \
-d redis:7.0.12 redis-server /etc/redis/redis.conf
docker run: 这是启动Docker容器的命令。
--restart=always: 这是容器的重启策略。always表示如果容器意外停止,Docker将自动重新启动容器。
-p 6379:6379: 这是端口映射的部分。这将容器的6379端口映射到主机的6379端口,允许主机与Redis容器通信。
--name myredis: 这为容器指定了一个名称,即myredis。
-v /home/data/redis/redis.conf:/etc/redis/redis.conf: 这是一个卷挂载操作,它将本地主机上的/home/data/redis/redis.conf文件挂载到容器内的/etc/redis/redis.conf路径,用于配置Redis。
-v /home/data/redis/data:/data: 同样是卷挂载,将本地主机上的/home/dj/redis/data目录挂载到容器内的/data路径,用于存储Redis的数据。
-d 后台运行
redis:7.0.12 redis-server /etc/redis/redis.conf: 这是容器的映像及其启动命令。它告诉Docker使用Redis版本7.0.12的映像,并在容器内运行redis-server命令,传递/etc/redis/redis.conf作为配置文件。
总的来说,这个命令启动了一个Redis容器,使用指定的配置文件和数据存储目录,同时设置了容器的重启策略以确保容器在意外停止时重新启动。
进入redis容器命令
docker exec -it myredis bash
redis-cli
set k1 v1 #你会发现失败的
get k1
auth ningzaichun # 验证密码
七、安装minio
docker run -p 9000:9000 -p 9090:9090 \--name minio \-d --restart=always \-e "MINIO_ACCESS_KEY=minioadmin" \-e "MINIO_SECRET_KEY=minioadmin" \-v /home/data/minio/data:/data \minio/minio server \/data --console-address ":9090" -address ":9000"
docker run: 这是Docker的命令,用于运行一个新的容器。
-p 9000:9000 -p 9090:9090: 这部分指定了端口映射。容器内的MinIO服务器将通过端口9000对外提供服务,而端口9090用于MinIO的Web管理界面。
--name minio: 这部分为容器指定了一个名字,即minio,以便您可以使用该名字来管理容器。
-d: 这表示以后台(守护进程)模式运行容器。
--restart=always: 这部分表示当Docker守护进程启动时,容器将自动重新启动,以确保MinIO服务器一直可用。
-e "MINIO_ACCESS_KEY=minioadmin" 和 -e "MINIO_SECRET_KEY=minioadmin": 这里设置了MinIO服务器的访问密钥和密钥。在这个示例中,访问密钥和密钥都设置为"minioadmin",请确保在生产环境中使用更强的安全凭据。
-v /home/data/minio/data:/data: 这部分创建了一个数据卷,将MinIO服务器的数据存储在主机的/home/data/minio/data目录中。这是为了确保数据持久性,即使容器被删除,数据也不会丢失。
minio/minio server /data --console-address ":9090" -address ":9000": 这是要运行的MinIO服务器的镜像和启动命令。它将MinIO服务器设置为使用/data目录来存储数据,Web管理界面通过端口9090访问,MinIO服务器本身通过端口9000提供服务。
八、安装rabbitmq
1、拉取镜像
management:表示可以通过web页面管理。 alpine:表示是linux最小版本,不推荐新手安装
docker pull rabbitmq:management
2、创建用于挂载的目录
mkdir -p /home/data/rabbitmq/{data,conf,log}
# 创建完成之后要对所创建文件授权权限,都设置成777 否则在启动容器的时候容易失败
chmod -R 777 /mydata/rabbitmq
3、获取配置文件
3.1创建临时容器
docker run -d --name rabbitmq1 --restart=always --hostname=rabbitmqhost \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-p 5672:5672 -p 15672:15672 \
rabbitmq:management
3.2 复制配置文件到宿主机
docker cp rabbitmq1:/etc/rabbitmq/ /home/data/rabbitmq/conf
3.3 删除临时容器
docker stop rabbitmq1
docker rm rabbitmq1
4、使用镜像创建容器
docker run -d --name rabbitmq --restart=always --hostname=rabbitmqhost \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-v /home/data/rabbitmq/data:/var/lib/rabbitmq -v /home/data/rabbitmq/conf:/etc/rabbitmq -v /home/data/rabbitmq/log:/var/log/rabbitmq \
-p 5672:5672 -p 15672:15672 \
rabbitmq:management–restart=always :表示随着Docker容器重启
-e :指定环境变量 RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码,rabbitmq默认账号和密码是guest
--hostname :主机名
-p :端口映射
-v :文件挂载
-d :表示后台运行
–name rabbitmq :表示启动后的容器实例名称为rabbitmq