docker搭建微服务(yudaocloud)合集

2023年 9月 12日 58.6k 0

docker搭建微服务(yudaocloud)合集

防火墙

建议直接先关闭防火墙,以便测试,安装结束后再逐个端口开启

查看防火墙状态:
sudo firewall-cmd --state

关闭防火墙(命令1关闭,命令2禁用防火墙服务,使其在系统重启后不再启动):
sudo systemctl stop firewalld
sudo systemctl disable firewalld

开启防火墙:
sudo systemctl start firewalld

该命令将显示在 public 区域中已开放的端口列表:
sudo firewall-cmd --zone=public --list-ports

查看所有开放的端口和相关规则:
sudo firewall-cmd --list-all

开放8080端口:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

关闭8080端口:
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

安装docker

一、准备

卸载旧版本:

yum remove docker docker-common docker-selinux docker-engine
yum remove docker-ce

卸载后将保留 /var/lib/docker 的内容(镜像、容器、存储卷和网络等)。

rm -rf /var/lib/docker

1.安装依赖软件包

yum install -y yum-utils device-mapper-persistent-data lvm2
# 安装前可查看device-mapper-persistent-data和lvm2是否已经安装
rpm -qa|grep device-mapper-persistent-data
rpm -qa|grep lvm2

2.设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.更新yum软件包索引

yum makecache fast

二、安装

1.安装最新版本

yum install docker-ce -y
# 安装指定版本docker-ce可使用以下命令查看
yum list docker-ce.x86_64 --showduplicates | sort -r
# 安装完成之后可以使用命令查看
docker version

2.配置镜像加速器

修改daemon配置文件 -> 加速器

vim /etc/docker/daemon.json

将以下内容粘贴到daemon.json文件中,并保存退出:

{
  "registry-mirrors": ["https://请自行去阿里云镜像搜索.mirror.aliyuncs.com"]
}

执行以下命令以重新加载配置文件并重启docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

设置开机重启

systemctl enable docker

三、拓展docker重启相关

重启docker服务:

sudo systemctl restart docker

--restart具体参数值详细信息:

- no        // 默认策略,容器退出时不重启容器;
- on-failure    // 在容器非正常退出时(退出状态非0)才重新启动容器;
- on-failure:3    // 在容器非正常退出时重启容器,最多重启3次;
- always      // 无论退出状态是如何,都重启容器;
- unless-stopped  // 在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

使用以下命令设置容器的重启策略:

docker update --restart=always 容器ID(或者容器名)

docker安装mysql 5.7

安装

docker pull mysql:5.7

运行容器(--net=host和宿主机共享网络命名空间,所以容器端口也是3306)

docker run -it -d --name mysql --net=host \
-m 2048m -v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/config:/etc/mysql/conf.d  \
-e MYSQL_ROOT_PASSWORD=abc123456 \
-e TZ=Asia/Shanghai mysql:5.7 \
--restart=always \
--lower_case_table_names=1

配置MySQL

  • 进入容器伪终端
  • docker exec -it mysql /bin/bash
    
  • 进入mysql
  • mysql -uroot -p
    
  • 配置支持远程连接
  • ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123456';
    # 刷新数据库
    flush privileges;
    

    docker安装nginx

  • 下载最新Nginx镜像(等同于docker pull nginx:latest):

    docker pull nginx
    
  • 创建Nginx配置文件:

    • 创建挂载目录:

      mkdir -p /home/nginx/conf
      mkdir -p /home/nginx/log
      mkdir -p /home/nginx/html
      
    • /home/nginx/conf目录下创建Nginx外部挂载的配置文件nginx.conf

      vim /home/nginx/conf/nginx.conf
      

      内容:

      user nginx;
      worker_processes auto;
      error_log  /var/log/nginx/error.log notice;
      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;
      }
      
    • /home/nginx/conf目录下创建文件conf.d/default.conf

      vim /home/nginx/conf/conf.d/default.conf
      

      内容:

       server {
             listen       80;
             listen  [::]:80;
             server_name  localhost;
      
             #access_log  /var/log/nginx/host.access.log  main;
      
             location / {
                 root   /usr/share/nginx/html;
                 index  index.html index.htm;
             }
      
             #error_page  404              /404.html;
      
             # redirect server error pages to the static page /50x.html
             #
             error_page   500 502 503 504  /50x.html;
             location = /50x.html {
                 root   /usr/share/nginx/html;
             }
      
             # proxy the PHP scripts to Apache listening on 127.0.0.1:80
             #
             #location ~ \.php$ {
             #    proxy_pass   http://127.0.0.1;
             #}
      
             # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
             #
             #location ~ \.php$ {
             #    root           html;
             #    fastcgi_pass   127.0.0.1:9000;
             #    fastcgi_index  index.php;
             #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
             #    include        fastcgi_params;
             #}
      
             # deny access to .htaccess files, if Apache's document root
             # concurs with nginx's one
             #
             #location ~ /\.ht {
             #    deny  all;
             #}
         }
      
  • 创建Nginx容器并运行:

    docker run \
    -p 80:80 -p 443:443 \
    --name nginx \
    -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /home/nginx/log:/var/log/nginx \
    -v /home/nginx/html:/usr/share/nginx/html \
    --restart=always \
    -d nginx:latest
    
  • 结果检测(需要再/home/nginx/html 目录下放入你前端dist文件夹中的内容):

    curl 127.0.0.1
    
  • 补充,如果配置更改,请执行以下命令,会重新加载Nginx配置:

    docker exec nginx nginx -s reload
    
  • docker安装nacos

  • 拉取最新nacos镜像:

    docker pull docker.io/nacos/nacos-server
    
  • 启动nacos(单机版并且使用内置数据库):

    docker run --name nacos -p 8848:8848 -p 9848:9848 --env MODE=standalone --restart=always -d nacos/nacos-server
    
  • 访问nacos:
    使用ip地址加端口号进行访问:

    http://ip:8848/nacos
    
  • docker安装redis

  • 拉取最新redis镜像:

    docker pull redis:latest
    
  • 运行容器:

    docker run -d --name redis -p 6379:6379 --restart=always redis
    
  • docker安装xxl-job

  • 拉取xxl-job镜像:

    docker pull xuxueli/xxl-job-admin:2.3.0
    
  • 运行容器(注意:首先,请配置自己的xxl-job,自行搜索拉取gitee/github。另外,这里使用docker部署的mysql5.7不能用127.0.0.1,请改成自己的ip):

    docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=123456 --xxl.job.accessToken=测试环境可以不写" -p 9090:8080 --name xxl-job-admin -d xuxueli/xxl-job-admin:2.3.0
    
  • docker容器部署踩坑

    问题:使用docker启动nacos时,报错如下:

    docker: Error response from daemon: driver failed programming external connectivity on endpoint nacos (c437a620eb1ddcf1980adc43f7200d003fb9de512a42485f2544f5504d84ca96): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9849 -j DNAT --to-destination 172.17.0.3:9849 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).
    

    解决办法:重启docker服务后问题解决:

    sudo systemctl restart docker
    

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论