Docker常见应用部署——(四)

本文详细介绍了如何使用Docker部署MySQL、Tomcat、Nginx和Redis应用,包括每个应用的镜像搜索、拉取、端口映射和目录挂载等关键步骤,提供了清晰的操作示例,帮助读者掌握Docker在实际应用部署中的使用技巧。
摘要由CSDN通过智能技术生成

一、应用部署步骤

  1. 搜索应用镜像
  2. 拉取应用镜像
  3. 根据镜像创建容器
  4. 操作容器中的应用

二、应用部署相互关系

  1. 容器内的网络服务和外部机器不能直接通信
  2. 外部机器和宿主机可以直接通信
  3. 宿主机和容器可以直接通信
  4. 当容器中的网络服务需要被外部机器访问时,可以将容器中提供的端口映射到宿主机的端口上。外部机器可以访问宿主机的该端口,从而间接访问容器的服务——端口映射

在这里插入图片描述

三、部署示例——MySQL

  1. 搜索mysql镜像
    docker search mysql
    
  2. 拉去mysql镜像
    docker pull mysql:5.7
    
  3. 创建容器,设置端口映射,目录映射
    # 1、创建mysql目录用于存储数据信息(根据自己的目录创建)
    mkdir MySQL
    cd MySQL
    # 2、创建容器,设置端口映射、目录映射
    docker run -id \
    -p 3307:3306 \
    --name=my_mysql \
    -v $PWD/conf:/etc/mysql \
    -v $PWD/data:/home/mysql/data \
    -v $PWD/logs:/home/mysql/logs \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.7
    # ----------------------参数详解-----------------------
    # -p 3307:3306 将容器的3306端口映射到宿主机3307端口
    # -v 将宿主机的目录挂载到容器目录
    # -e MYSQL_ROOT_PASSWORD 初始化MySQL root用户的密码
    # $PWD 宿主机当前目录
    # \ 换行符
    
  4. 进入mysql容器
    #进入容器
    docker exec -it my_mysql bash
    

四、部署示例——Tomcat

  1. 搜索Tomcat镜像
    docker search tomcat
    
  2. 拉去tomcat镜像
    docker pull Tomcat:8.5
    
  3. 创建容器,设置端口映射,目录映射
    # 1、创建tomcat目录用于存储数据信息(根据自己的目录创建)
    mkdir Tomcat
    cd Tomcat
    # 2、创建容器,设置端口映射、目录映射
    docker run -id \
    -p 8080:8080 \
    --name=my_tomcat \
    -v $PWD/webapps:/home/Tomcat/webapps \
    tomcat:8.5
    # ----------------------参数详解-----------------------
    # -p 8080:8080将容器的8080端口映射到宿主机8080端口
    # -v 将宿主机的目录挂载到容器目录
    # $PWD 宿主机当前目录
    # \ 换行符
    
  4. 进入mysql容器
    #进入容器
    docker exec -it my_tomcat bash
    

五、部署示例——Nginx

  1. 搜索Nginx镜像

    docker search nginx
    
  2. 拉去Nginx镜像

    docker pull nginx:1.20
    
  3. 创建映射目录和文件

    # 1、创建Nginx目录用于存储数据信息(根据自己的目录创建)
    	mkdir Nginx
    	cd Nginx
    	mkdir conf
    	cd ../
    

    创建Nginx配置文件并放入conf目录下

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
        
    	server {
    		listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
    		server_name www.xxx.cn;  #将localhost修改为您证书绑定的域名,例如:www.xxx.com。
    		root html;
    		index index.html index.htm;
    		ssl_certificate cert/6706298_www.xxx.cn.pem;   #将www.xxx.com.pem替换成您证书的文件名。
    		ssl_certificate_key cert/6706298_www.xxx.cn.key;   #将www.xxx.com.key替换成您证书的密钥文件名。
    		ssl_session_timeout 5m;
    		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
    		ssl_prefer_server_ciphers on;   
    		location / {
                root   /home/Project/Web/;
                index  index.html index.htm;
            }
    	}
    	server {
    		listen 80;
    		server_name www.xxx.cn;   #将localhost修改为您证书绑定的域名,例如:www.xxx.com。
    		rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
    		location / {
                root   /home/Project/Web/ ;
                index  index.html index.htm;
            }
    	}
    
    }
    
    
  4. 创建容器,设置端口映射,目录映射

    # 创建容器,设置端口映射、目录映射
    docker run -id \
    -p 80:80 \
    --name=my_nginx \
    -v $PWD/conf/nginx.conf:/home/nginx/conf/nginx.conf \
    -v $PWD/logs:/home/nginx/logs \
    -v $PWD/project:/home/nginx/project \
    nginx:1.20
    # ----------------------参数详解-----------------------
    # -p 8080:8080将容器的8080端口映射到宿主机8080端口
    # -v 将宿主机的目录挂载到容器目录
    # $PWD 宿主机当前目录
    # \ 换行符
    
  5. 进入mysql容器

    #进入容器
    docker exec -it my_nginx bash
    

六、部署示例——Redis

  1. 搜索Tomcat镜像

    docker search redis
    
  2. 拉去tomcat镜像

    docker pull redis:4.0.6
    
  3. 官网下载配置文件并修改redis.conf

    bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
    protected-mode no #默认yes,开启保护模式,限制为本地访问
    daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
    appendonly yes #redis持久化(可选)
    set-proc-title no # 修改为yes,默认no
    logfile "redis.log"
    
  4. 创建容器,设置端口映射

    # 创建容器,设置端口映射
    docker run -id -p 6379:6379 --name=redis -v /home/Docker/Redis/conf/redis.conf:/home/Docker/Redis/conf/redis.conf -v /home/Docker/Redis/data:/data:rw redis:4.0.6 redis-server /home/Docker/Redis/conf/redis.conf --appendonly yes
    # ----------------------参数详解-----------------------
    # -p 8080:8080将容器的8080端口映射到宿主机8080端口
    # \ 换行符
    
  5. 容器常用命令

    # 查看活跃的容器
    docker ps
    # 如果没有 redis 说明启动失败 查看错误日志
    docker logs redis
    # 查看 redis 的 ip 挂载 端口映射等信息
    docker inspect redis
    # 查看 redis 的端口映射
    docker port redis
    
  6. 使用rdb持久化文件恢复数据

    #进入容器使用redis-cli命令连接redis
    redis-cli
    #通过config get dir 命令获取目录
    config get dir
    #然后通过挂在的目录文件将dump.rdb放入改目录(先暂停redis服务再放入文件)
    #最后启动
    docker start redis
    

常见问题

1、修改宿主机的hostname导致docker 中镜像服务连接不上
需要修改docker配置中引用的hostname

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只大耗子。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值