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的远程衔接
-
修改文件 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
-
重新加载装备文件
systemctl daemon-reload
-
重启docker
systemctl restart docker
-
检查 2375 端口是否敞开
netstat -nlpt
也能够直接拜访
curl http://127.0.0.1:2375/info
,假如有回来信息,则已敞开
IDEA 下载 插件
PS:总觉得这个插件有bug,如在 容器里设置了参数不收效。。。
在 Settings->Plugins->Marketplace 查找 docker
装置完重启 IDEA
然后在 Settings 里查找 docker ,装备上docker 地址,下面显示 successful 即衔接成功
在 IDEA 页面的下面 有个 docker 的按钮,点开能够看到docker里一切的容器,一切的镜像
IDEA 推送镜像
首先maven clean 清理本地代码
maven package 打包本地项目,生成 jar
在 DockerFile 页面,修改
/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
-
拉取镜像
docker pull mysql:5.7.26
-
发动
docker run -p 3306:3306 --name mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
-
装备外网拜访
进入容器
docker exec -it 47e74a93cf87 bash
登录
mysql -uroot -p
输入暗码指令
grant all privileges on *.* to root@"%" identified by "123456" with grant option;
改写
flush privileges;
之后就能够咱们就能够在物理机上经过nvicate 来衔接上。
装置nginx
-
拉取镜像:
docker pull nginx
-
检查镜像:
docker images
-
在宿主机创建装备文件目录
mkdir -p /data/nginx/{conf,conf.d,html,log}
-
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; } } }
-
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>docker建立nginx</title> </head> <body> <h1>docker建立nginx映射成功</h1> </body> </html>
-
发动并挂载装备文件目录
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
-
在物理机拜访 虚拟机ip ,看是否成功
-
重启nginx
docker restart 容器ID
部署项目
- 将前端项目,build ,将生成的 dist 文件夹里的内容上传到 html 目录
- 在 nginx.conf 装备文件里装备后台接口地址
- 拜访nginx 服务器ip,测验是否能够拜访。
远程拜访
-
经过上面的操作,咱们现已能够在本地跑起来idea 里的项目了,在idea控制台也能够直接看到项目的运转日志。
-
那么,假如咱们要给领导或者客户看项目的进度怎么办?
-
能够运用 内网穿透,将局域网的 ip 映射出去。
-
之前运用的 ngrok.cc, 免费的总是断,体会不是很好。引荐一个稳定点的。utools,里边有内网穿透的功用,目前来说还是挺快挺好用的。
-
运用界面如下图所示:
-
完结撒花~~
Docker 容器中文字体乱码问题
在宿主机内装置中文字体
-
检查现已装置的中文字体
fc-list :lang=zh
-
假如没有这个指令,装置上
yum -y install fontconfig
-
将Windows 上的 C:\Windows\Fonts 文件夹下的字体文件上传到 服务器目录
/usr/share/fonts/dejavu/
下 比如 : 宋体字 (simsun.ttc)
-
清除缓存
fc-cache
然后在需要中文字体的容器里挂载宿主机的 字体文件, ==,冒号前为宿主主机目录,冒号后为容器对应目录==
docker run -p 80:80--name demo -v /usr/share/fonts/dejavu/:/usr/share/fonts/