Docker 环境部署

Center OS Docker 安装

使用官方安装脚本自动安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

卸载旧版本:

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

启动Docker:

sudo systemctl start docker

 重新启动Docker服务:

systemctl restart  docker

关闭Docker:

systemctl stop docker

 

 Docker 容器及服务自动启动设置:

参考:https://blog.csdn.net/wxb880114/article/details/82904765

1.Docker 服务自动启动设置

systemctl enable docker.service

 2.在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:

docker run --restart=always

3.如果已经启动了则可以使用如下命令:

docker update --restart=always <CONTAINER ID>

重启系统后:

docker  ps -a 

 

在下载或者进行其他操作时,如果不写TAG则默认为 latest,如果下载的不是最新的需要在后面加上TAG

查询:

docker images

 例:

docker run -d -p 8080:8080 --name tomcat -v /usr/local/dev/docker-tomcat:/usr/local/tomcat/webapps --restart=always tomcat:9.0.41-jdk8-corretto

 

MySQL 部署:

参考:https://zhuanlan.zhihu.com/p/203653692

1.拉取MySQL(最新)

MySQL镜像库地址:https://hub.docker.com/_/mysql?tab=tags&page=1&ordering=last_updated

docker pull mysql:latest

2.创建容器(守护的方式),密码设置为 root

docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:latest

3.进入容器

docker exec -it mysql /bin/bash

4.打开MySQL

mysql -uroot -p

 

Tomcat

部署:https://www.cnblogs.com/spll/p/9957769.html

1.搜索tomcat镜像

docker search tomcat 

2.根据搜索出来的列表下载tomcat

docker pull tomcat 

3.启动tomcat:

#方式1:解释一下,-d表示后台运行,-p端口映射,前面的8080是外围访问端口(也就是本机ip对外开放的端口),后面8080是docker容器内部的端口
 docker run -d -p 8080:8080 tomcat    #方式2:加--name tomcat的意思,表示为此容器启一个别名叫tomcat,以后再也不用操作容器id进行关闭、进容器目录什么的,直接把容器ID换成tomcat别名 加上--restart=always  表示此容器开机启动,只要docker也设置了开机自启,docker不死
 docker run
-d -p 8080:8080 --name tomcat --restart=always tomcat 

目前使用方式1,最简单的

404错误:https://www.jb51.net/article/197174.htm

此时访问端口地址会出现404错误,出现的原因是webapps下面没有资源

解决办法:

#查找tomcat的containerID
docker ps 
#进入tomacat目录
docker exec -it <CONTAINER ID> /bin/bash
cd webapps
ls -l
#发现文件为空
#删除webapps,将webapps.dist修改名称为webapps
rm -rf webapps
mv webapps.dist webapps

没有提交的话,在镜像重启后,又会报404错误,要commit一下

docker commit <CONTAINER ID> tomcat

Tomcat挂载目录

  • 设置挂载目录:意思把宿主机的一个文件夹映射到容器的webapps目录,直接把war包上传到宿主机的文件夹,不用再复制到tomcat容器里面了,tomcat容器的webapps目录会直接使用这个文件夹下的文件。
  • 设置容器别名:之前不设置别名,操作关闭容器,或进入容器内我们都要找到此容器ID,并根据此容器ID来操作,很不方便。--name xxx之后我们可以直接操作xxx别名
  • 设置开机自启:--restart=always参数
  1. 为挂载目录之前做准备:在根目录下创建一个docker目录,docker目录下再创建一个tomcat目录
  2. 目录创建好了,下面进行挂载目录,运行tomcat容器
#挂载usr/local/dev/docker-tomcat目录,并运行容器命令如下

docker run -d -p 8080:8080 --name tomcat -v /docker/tomcat:/usr/local/tomcat/webapps --restart=always tomcat

可能会报出容器名称已存在的错误,使用命令查看一下所有容器:

#docker查看所有容器
docker ps -a

删除之前容器:

docker rm <CONTAINER ID>

再重新运行挂载命令即可

对于此处出现404错误在于 /tomcat 目录下没有资源文件,打包一个简单的 war 包即可 

 

 Nginx 部署

1.取最新版的 Nginx 镜像

docker pull nginx

2.查看本地镜像,查看是否已安装了 nginx

docker images

3.运行容器

docker run --name nginx -p 80:80 -d nginx

参数说明:

  • --name nginx:容器名称
  • -p 80:80: 端口进行映射,将本地 80 端口映射到容器内部的 80 端口
  • -d nginx: 设置容器在在后台一直运行

自启:

docker update --restart=always <CONTAINER ID>

 

4.通过浏览器直接访问 80 端口的 nginx 服务

 Nginx 挂载目录:

创建文件夹:(注意需要再 /docker/nginx 目录下上传 nginx.conf 文件)

mkdir -p /docker/nginx/conf.d docker/nginx/logs /docker/nginx/cert /docker/nginx/html

挂载启动:

docker run -d --name nginx --restart always -p 80:80 -p 443:443 -e "TZ=Asia/Shanghai" \
 -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
 -v /docker/nginx/conf.d:/etc/nginx/conf.d \
 -v /docker/nginx/logs:/var/log/nginx \
 -v /docker/nginx/cert:/etc/nginx/cert \
 -v /docker/nginx/html:/usr/share/nginx/html nginx

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       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

    }

}

 

Redis 部署

1.取最新的 Redis 镜像

docker pull redis

2.运行容器

docker run -itd --name redis -p 6379:6379 redis

3.自启

docker update --restart=always <CONTAINER ID>

4.安装成功,docker ps 查看容器信息

 

5.通过 redis-cli 连接测试 redis 服务

docker exec -it redis /bin/bash

 

posted @ 2020-12-29 11:25  宁任翃  阅读(202)  评论(0编辑  收藏  举报