docker部署web项目

docker部署目录

提示:工作中使用docker拉取运行镜像
例如:部署emqx、 部署mysql 、部署minio


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:工作中使用到docker做简单基础日志:

工作中使用到docker做简单基础日志,docker更多日常使用介绍 查看doocker部署nginx-web。链接: docker-nginx


提示:以下是本篇文章正文内容,下面案例可供参考

一、部署emqx

拉取的是最新版本: docker pull emqx/emqx:latest
当然可以指定版本: docker pull emqx/emqx:latest:v5.0

docker run -d --name emqx --privileged=true -p 1883:1883 -p 8883:8883 -p 8083:8083 -p 8084:8084 -p 8081:8081 -p 18083:18083  emqx/emqx:latest

参数 --privileged=true 表示赋予容器特权,用于需要与主机系统交互的操作。
参数 -p 指定了端口映射,将容器内的端口映射到主机上,以便可以从外部访问 EMQ X 服务。
参数 emqx/emqx:latest 表示使用 emqx/emqx 仓库中最新版本的镜像运行容器

只要是为了容器内外共享数据或持久化存储容器内的数据。通过挂载文件目录,可以将主机系统上的文件或目录与容器内部的文件系统进行关联,使得容器内的操作可以直接影响主机系统上的文件,也可以使主机系统上的文件在容器内保持持久化,即使容器被删除或重建,数据仍然保留。这样做可以方便地进行数据备份、共享和管理

mkdir -p /home/jaxf/emqx/etc /home/jaxf/emqx/lib /home/jaxf/emqx/data /home/jaxf/emqx/log

这个指令需要注意,如果你是在根目录进行输入,一定要包含全部的路径名称。
如果已经在你想要指定创建的文件夹里面,只需要指定要创建的文件夹名称即可。

从临时容器内复制配置文件到挂载目录下

docker cp emqx:/opt/emqx/etc F:\document\0awork\docker\mqtt\emqx
  • –restart=always --privileged=true
docker run -d --restart=always --name emqx -p 1883:1883 -p 8883:8883 -p 8083:8083 -p 8084:8084 -p 8081:8081 -p 18083:18083 -v F:\document\0awork\docker\mqtt\emqx\etc:/opt/emqx/etc emqx/emqx:latest
  • 上述 如果要做持久化存储 ,把数据放到宿主机上,你需要知道 emqx 各类数据 对应的位置 (如日志log、数据data)

二、部署mysql

1. 拉取mysql 镜像

docker pull mysql :tag

docker pull mysql #默认最新 tag
docker pull mysql:5.7 #会拉取 MySQL 5.7 版本的镜像。

拉取镜像后,你可以使用 docker images 命令来查看本地已经下载的镜像列表,确认 MySQL 镜像是否成功下载。

2.运行mysql

可以使用 docker run>命令来运行一个 MySQL 容器实例

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

在这个命令中,--name some-mysql 指定了容器的名称(你可以将其替换为你自己的名称),-e MYSQL_ROOT_PASSWORD=my-secret-pw 设置了 MySQL 数据库的 root 用户密码(请替换为你自己的密码),-d 参数让容器在后台运行,mysql:tag 指定了要使用的 MySQL 镜像版本(如果省略 tag,则默认为最新版本)。

请注意,为了简化命令,上面的例子中的 mysql:tag 应该替换为实际的镜像标签,如 mysql:5.7。如果使用的是最新版本的镜像,则可以直接使用 mysql

展示了如何运行 MySQL 容器并将容器的 3306 端口映射到宿主机的 3307 端口上

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3307:3306 -d mysql:tag

在这个命令中:

  • --name some-mysql:指定容器的名称为 some-mysql(你可以根据需要更改这个名称)。
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 MySQL 数据库的 root 用户密码为 my-secret-pw(请替换为你自己的密码)。
  • -p 3307:3306:将容器内的 3306 端口映射到宿主机的 3307 端口上。
  • -d:让容器在后台运行。
  • mysql:tag:指定要使用的 MySQL 镜像版本。tag 是可选的,如果不指定,则默认为最新版本。如果你想要使用特定版本的 MySQL,比如 5.7,你应该将 tag 替换为 5.7

因此,如果你想要使用最新版本的 MySQL,命令将是:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3307:3306 -d mysql

如果你想要使用 MySQL 5.7 版本,命令将是:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3307:3306 -d mysql:5.7

执行上述命令后,MySQL 容器将在后台运行,并且你可以通过宿主机的 3307 端口来访问 MySQL 服务了。

忘记MySQL密码代码如下(示例):

docker inspect root-mysql-1 | grep MYSQL_ROOT_PASSWORD
docker inspect 3980a26fb9e9 | grep MYSQL_ROOT_PASSWORD  # 运行的容器 3980a26fb9e9

2.删除、停止与删除镜像

停止容器如下(示例):

docker stop 3980a26fb9e9 # 3980a26fb9e9 为运行容器  启动 start 与 重启 restart

删除如下(示例):

docker rm 3980a26fb9e9 # 删除容器前 需要停止容器运行
docker rm -f container_id_or_name # 强制删除正在运行的容器(不推荐,因为这可能会导致数据丢失),可以添加-f(或--force)

删除镜像

docker rmi image_id_or_name 

Docker镜像和容器ID是唯一的,但名称可以是重复的,特别是在不同的命名空间中。因此,在指定要删除的资源时,请确保你使用的是正确的ID或名称。

三、部署minio

1. 创建文件夹

mkdir -p /root/minio/data  # win 界面创建文件夹

这个命令在/root/minio/目录下创建了一个名为data的文件夹(如果minio目录不存在,则连同它一起创建)。这个文件夹将用作MinIO的数据存储目录,MinIO会将所有上传的文件保存在这里。

2.拉取minio 镜像

指令如下(示例):

docker pull minio/minio

拉取 docker pull minio/minio 之前,

3.运行minio容器

docker run -d -p 9000:9000 -p 9001:9001 -v /root/minio/data:/data -v /root/minio/config:/root/.minio --name minio -e "MINIO_ACCESS_KEY=your_access_key" -e "MINIO_SECRET_KEY=your_secret_key" minio/minio server /data --console-address ":9001"

这个命令用于启动一个新的Docker容器,运行MinIO服务。下面是命令各部分的详细解释:

  • docker run: Docker运行容器的命令。

  • -d: 在后台运行容器。

  • -p 9000:9000: 将容器的9000端口映射到宿主机的9000端口,MinIO的API和HTTP服务默认通过这个端口。

  • -p 9001:9001: 将容器的9001端口映射到宿主机的9001端口,用于MinIO的Web控制台。

  • -v /root/minio/data:/data: 将宿主机的/root/minio/data目录挂载到容器的/data目录,作为MinIO的数据存储位置。

  • -v /root/minio/config:/root/.minio: 将宿主机的/root/minio/config目录挂载到容器的/root/.minio目录,用于存储MinIO的配置文件。

  • --name minio: 设置容器的名称为minio

  • -e "MINIO_ACCESS_KEY=your_access_key": 设置环境变量MINIO_ACCESS_KEY,这是MinIO的访问密钥(Access Key),你需要将其替换为你自己的密钥。

  • -e "MINIO_SECRET_KEY=your_secret_key": 设置环境变量MINIO_SECRET_KEY,这是MinIO的密钥(Secret Key),你也需要将其替换为你自己的密钥。

  • minio/minio: 指定要运行的镜像名称。

  • server /data: 容器启动时执行的命令,server /data表示启动MinIO服务,并指定/data目录作为数据存储位置。

  • --console-address ":9001": 指定MinIO Web控制台的监听地址和端口,这里指定为:9001,即容器内部的9001端口。

    总之,这条命令通过Docker部署了一个MinIO服务,并将其数据存储目录和配置文件目录映射到了宿主机的指定位置,同时设置了访问密钥和密钥,并通过宿主机的9000和9001端口分别提供API和Web控制台服务。

    如果是win

    • 不使用dockers 直接下载minio.exe 使用 (后台9090端口 9000端口)
    minio.exe server F:\MinIo\Data --console-address ":9000" --address ":9090"
    
    • 使用docker
    docker run -d -p 9009:9000 -p 9001:9001 -v F:\document\0awork\docker\minio\data:/data -v F:\document\0awork\docker\minio\config:/root/.minio --name minio -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" minio/minio server /data --console-address ":9001"
    

四、部署redis

1. 拉取redis

docker pull redis # 默认最新

2.运行redis

拉取完镜像后,你就可以运行一个Redis容器了。以下是一个基本的命令,用于在后台运行Redis容器,并设置容器内的Redis数据持久化到宿主机的/myredis/data目录(注意:你需要先创建这个目录,或者Docker会自动为你创建,但出于权限考虑,手动创建通常更安全):

mkdir -p /myredis/data  
docker run --name my-redis -d -p 6379:6379 -v /myredis/data:/data redis
docker run -d --restart=always --name my-redis -d -p 6379:6379 -v /myredis/data:/data redis  # 重启docker 就会启动 redis

总结

提示:这里对docker常用指令进行总结:

如果要做持久化存储 ,把数据放到宿主机上,你需要知道 你的容器 各类数据 对应的位置 (如日志log、数据data)

在端口映射时,注意宿主机端口是否被占用,如果是云服务器 可能会存在防火墙,需要将对应端口开启。

docker --version # 
docker version

docker ps # 

docker image ls #

启动Docker服务,并设置其为开机自启。

sudo systemctl start docker  
sudo systemctl enable docker #

如果需要离线包

离线 

docker save -o [保存文件全路径] [镜像名称]:[镜像版本]
docker save -o /Users/Aion/mysql-8.0.31.tar mysql:8.0.31
docker save -o F:\document\p\mysql-8.0.31.tar mysql:8.0.31 # mysql离线例子
docker save -o  D:\DockerImage\nginx.tar nginx:1.17.8 # 

docker load命令 
   docker load -i F:\document\p\mysql-8.0.31.tar
   docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=your_password mysql:8.0.31

–restart=always --privileged=true

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值