Docker

敞开虚拟机,翻开 finalshell 客户端

  • 敞开docker service docker start

镜像操作

  • 检查镜像 docker images
  • 查找镜像 docker serarch 镜像名
  • 拉取镜像 docker pull 镜像名:标签号 例如: docker pull mysql:5.7.26
  • 删除镜像 docker rmi 镜像ID/称号

容器操作

  • 查询容器 docker ps , 检查一切容器docker ps -a

  • 删除容器 docker rm 容器ID/容器名

  • 敞开容器 docker start 容器ID/容器名

  • 中止容器 docker stop 容器ID/容器名

  • 进入容器操作 docker exec -it 容器ID bash

  • 检查容器日志 docker logs Name/ID

  • 复制文件到宿主机 docker cp -a bb397b55cde0:/tmp/ /tmp

  • 复制文件到容器 docker cp -a /tmp bb397b55cde0:/tmp/

敞开Docker的远程衔接

  1. 修改文件 docker.service

    vi /usr/lib/systemd/system/docker.service

    找到 ExecStart=/usr/bin/dockerd这一行

    将其改为如下内容:

    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  2. 重新加载装备文件

    systemctl daemon-reload

  3. 重启docker

    systemctl restart docker

  4. 检查 2375 端口是否敞开

    netstat -nlpt

    也能够直接拜访 curl http://127.0.0.1:2375/info,假如有回来信息,则已敞开

IDEA 下载 插件

PS:总觉得这个插件有bug,如在 容器里设置了参数不收效。。。

在 Settings->Plugins->Marketplace 查找 docker

IDEA 部署Docker镜像

装置完重启 IDEA

然后在 Settings 里查找 docker ,装备上docker 地址,下面显示 successful 即衔接成功

IDEA 部署Docker镜像

在 IDEA 页面的下面 有个 docker 的按钮,点开能够看到docker里一切的容器,一切的镜像

IDEA 部署Docker镜像

IDEA 推送镜像

首先maven clean 清理本地代码

maven package 打包本地项目,生成 jar

在 DockerFile 页面,修改

IDEA 部署Docker镜像

/usr/share/fonts/dejavu/

假如需要 docker里的mysql ,则 在装备文件里 这样写即可:

url: jdbc:mysql://mysql:3306/DBname?characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai

点击运转就能够将上面生成的 jar 打包成 docker 镜像,并上传到 docker 里。

假如项目依赖较多,需要较长时刻

在IDEA 控制台就能够看到上传成功的 镜像,能够新建容器,运转

在IDEA 控制台也能够装备 容器的参数,比如端口映射,挂载文件,发动日志等,非常便利。

就酱,后台项目就发动完成了,物理机拜访虚拟机ip 加上映射出来的端口号就能够拜访到接口

不过,仅能拜访后台接口不是咱们最终要的效果,得有界面啊!

装置MySQL

  1. 拉取镜像docker pull mysql:5.7.26

  2. 发动docker run -p 3306:3306 --name mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

  3. 装备外网拜访

    进入容器 docker exec -it 47e74a93cf87 bash

    登录mysql -uroot -p输入暗码

    指令 grant all privileges on *.* to root@"%" identified by "123456" with grant option;

    改写 flush privileges;

    之后就能够咱们就能够在物理机上经过nvicate 来衔接上。

装置nginx

  1. 拉取镜像: docker pull nginx

  2. 检查镜像: docker images

  3. 在宿主机创建装备文件目录

    mkdir -p /data/nginx/{conf,conf.d,html,log}

  4. 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;
        sendfile        on;
        #tcp_nopush     on;
        #keepalive_timeout  0;
        keepalive_timeout  65;
        #gzip  on;
        server {
            listen       80;
            server_name  localhost;
            #charset koi8-r;
            #access_log  logs/host.access.log  main;
            location / {
                index  index.html index.htm;
                root /usr/share/nginx/html;
                 charset utf-8;
                  try_files $uri $uri/ /index.html;
            }
            	location ^~/api/ {
                  proxy_pass http://192.168.1.130:8080/;
            }
            #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   html;
            }
        }
    }
    
  5. index.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>docker建立nginx</title>
    </head>
    <body>
        <h1>docker建立nginx映射成功</h1>
    </body>
    </html>
    
  6. 发动并挂载装备文件目录

    docker run --name my_nginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html nginx

  7. 在物理机拜访 虚拟机ip ,看是否成功

  8. 重启nginxdocker restart 容器ID

部署项目

  1. 将前端项目,build ,将生成的 dist 文件夹里的内容上传到 html 目录
  2. 在 nginx.conf 装备文件里装备后台接口地址
  3. 拜访nginx 服务器ip,测验是否能够拜访。

远程拜访

  1. 经过上面的操作,咱们现已能够在本地跑起来idea 里的项目了,在idea控制台也能够直接看到项目的运转日志。

  2. 那么,假如咱们要给领导或者客户看项目的进度怎么办?

  3. 能够运用 内网穿透,将局域网的 ip 映射出去。

  4. 之前运用的 ngrok.cc, 免费的总是断,体会不是很好。引荐一个稳定点的。utools,里边有内网穿透的功用,目前来说还是挺快挺好用的。

  5. 运用界面如下图所示:

  6. 完结撒花~~

    IDEA 部署Docker镜像

Docker 容器中文字体乱码问题

​ 在宿主机内装置中文字体

  1. 检查现已装置的中文字体 fc-list :lang=zh

  2. 假如没有这个指令,装置上 yum -y install fontconfig

  3. Windows 上的 C:\Windows\Fonts 文件夹下的字体文件上传到 服务器目录 /usr/share/fonts/dejavu/

    ​ 比如 : 宋体字 (simsun.ttc)

  4. 清除缓存 fc-cache

然后在需要中文字体的容器里挂载宿主机的 字体文件, ==,冒号前为宿主主机目录,冒号后为容器对应目录==

docker run -p 80:80--name demo -v /usr/share/fonts/dejavu/:/usr/share/fonts/