1. Docker 安装
https://www.runoob.com/docker/ubuntu-docker-install.html
2. 打开docker的远程控制
修改配置文件
vim /usr/lib/systemd/system/docker.service
或:
vim /lib/systemd/system/docker.service
替换ExecStart
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启docker
systemctl daemon-reload
systemctl restart docker
3. idea下载docker插件
4. 打开Settings,连接Docker
5. 项目内新建Dockerfile文件
FROM java:8
# 作者
MAINTAINER most <***@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
#设置语言编码和时区
ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将jar包添加到容器中并更名为demo.jar
ADD /target/*.jar demo.jar
# 运行jar包
RUN bash -c 'touch /demo.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
6. 配置docker信息
--network=host
ip为主机ip
映射端口:
7. 单击run运行
8. 部署vue项目
8.1 项目内新建default.conf文件
server {
listen 80;
server_name localhost;
location / {
root /dist/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:19504/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
8.2 新建Dockerfile文件
FROM nginx
COPY dist/ dist/
RUN rm /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/
8.3 修改配置
8.4 点击run运行
8.5 docker命令
8.5.1 docker prune 命令
prune 命令用来删除不再使用的 docker 对象。
删除所有未被 tag 标记和未被容器使用的镜像:
docker image prune
删除所有未被容器使用的镜像:
docker image prune -a
删除所有停止运行的容器:
docker container prune
删除所有未被挂载的卷:
docker volume prune
删除所有网络:
docker network prune
删除 docker 所有资源:
docker system prune
批量停止容器
docker stop $(docker ps -a | grep "xxx" | awk '{print $1}')
docker stop 停止容器
$() 返回在括号内运行脚本的结果
docker ps -a 列出所有容器的docker
| grep “xxx” 管道上一个命令的结果,grep以搜索包含字符串xxx的行
| awk '{print $1}' 管道的结果grep搜索到的awk命令,该命令被告知仅打印在第1列,其是容器的ID的值
批量删除容器
docker rm $(docker ps -a | grep "xxx" | awk '{print $1}')
批量删除镜像
docker rmi $(docker images | grep "xxx" | awk '{print $3}')