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

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

  • 一、应用部署步骤
  • 二、应用部署相互关系
  • 三、部署示例——MySQL
  • 四、部署示例——Tomcat
  • 五、部署示例——Nginx
  • 六、部署示例——Redis
  • 常见问题

一、应用部署步骤

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

二、应用部署相互关系

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

Docker常见应用部署——(四)_第1张图片

三、部署示例——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

你可能感兴趣的:(Docker,Linux(CentOS7),docker,容器)