Docker应用部署

MySQL部署

需求:在Docker容器中部署MySQL,并通过外部MySQL客户端操作MySQL Server

首先明确一下几点:

  • 容器内的网络服务和外部机器不能直接通信
  • 外部机器和宿主机可以直接通信
  • 宿主机和容器可以直接通信

因此,我们进行一个端口映射,如下图,外部容器访问3307端口,就映射到3306端口

步骤:

  1. 搜索MySQL镜像  docker search mysql
  2. 拉取MySQL镜像   docker pull mysql:5.7
  3. 创建容器  
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

 参数说明:

  • -p 3307:3306  将容器的3306端口映射到宿主机的3307端口
  • -v $PWD/conf:/etc/mysql/conf.d  将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf 。配置目录
  • -v $PWD/logs:/logs  将主机当前目录下的logs目录挂载到容器的/logs。日志目录
  • -v $PWD/data:/var/lib/mysql  将主机当前目录下的data目录挂载到容器的/var/lib/mysql 。数据目录
  • -e MYSQL_ROOT_PASSWORD=root   初始化root用户的密码

   5. 操作容器中的mysql

   远程连接MySQL(本机Navicat)

如果使用阿里云服务器,则需要配置安全组规则。 

Tomcat部署

 

需求:在Docker容器中部署Tomcat,并通过外部机器访问Tomcat部署的项目

实现步骤:

  1. 搜索tomcat镜像  docker search tomcat
  2. 拉取tomcat镜像  docker pull tomcat
  3. 创建容器   
    mkdir ~/tomcat
    cd ~/tomcat
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \ 
    tomcat
    # -v $PWD:/usr/local/tomcat/webapps将主机中当前目录挂载到容器的webapps

     

  4. 部署项目

         直接把项目扔到tomcat目录访问,若使用阿里云服务器,那么外部访问时要添加安全组规则

Nginx部署

基本需求和搜索拉取镜像步骤同上。

创建容器步骤如下

mkdir nginx
cd nginx
mkdir conf
cd conf
vim nginx.conf
# 在nginx.conf下添加如下内容
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

 配置完成后,返回到nginx目录开始创建

docker run -id --name=c_nginx -p 80:80\
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf\
-v $PWD/logs:/var/log/nginx\
-v $PWD/html:/usr/share/nginx/html\
nginx

Redis部署

基本需求和搜索拉取镜像步骤同上。

  • 创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis
  • 使用外部机器连接Redis (阿里云服务器要先配置安全组规则):进到本机Redis目录里打开dos窗口输入一下命令
redis-cli.exe -h 101.37.19.90 -p 6379

方法二:配置文件启动

  ①创建配置文件目录存放redis.conf,文件从官网下载

 

②创建文件夹,新建配置文件贴入从官网下载的配置文件并修改

mkdir /usr/local/docker

vi /usr/local/docker/redis.conf

  ③修改启动默认配置(从上至下依次):

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。

dir  ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

④官方启动命令:

docker run -p 6379:6379 --name redis -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

命令解释说明:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。

--name myredis  指定该容器名称,查看和进行操作都比较方便

-v 挂载目录,规则与端口映射相同。

为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。

-d redis 表示后台启动redis

redis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf

--appendonly yes  开启redis 持久化

 

Redis最佳启动步骤:https://blog.csdn.net/qmqm33/article/details/105891985

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值