docker部署springboot和vue项目
Docker一、Docker 架构Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。Docker面向对象容器对象镜像...
Docker
一、Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
容器 | 对象 |
镜像 | 类 |
- Docker安装(centos7)
1、如果之前已安装旧版本,请卸载它们以及相关的依赖项。
①查询安装过的包
yum list installed | grep docker 例:docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo |
②删除安装的软件包(一个一个的删除)
yum -y remove docker-engine.x86_64 |
③删除镜像/容器等
rm -rf /var/lib/docker |
④查看docker相关的rpm源文件(没有就删除完成)
rpm -qa |grep docker |
2、安装(以下命令可直接复制粘贴)
①安装依赖(必须的)
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 |
②设置远程仓库
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo |
③安装docker(太长了,没截图)
最新版本(直接执行命令安装)
sudo yum install docker-ce docker-ce-cli containerd.io |
指定版本(稳定)
列出并排序存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序 yum list docker-ce --showduplicates | sort -r 例: docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable 通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。服务器上我装的是18.09.0版本。 sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io |
④启动docker
sudo systemctl start docker |
⑤通过运行 hello-world 映像来验证是否正确安装
sudo docker run hello-world |
docker一些常用命令
启动:systemctl start docker 停止:systemctl stop docker 重启:systemctl restart docker;systemctl daemon-reload 查看状态:systemctl status docker 查看版本:docker version 开机启动:systemctl enable docker 查看概要信息:docker info 查看帮助文档:docker --help |
三、Docker镜像操作
1、列出镜像docker images
- REPOSITORY:镜像所在的仓库名称
- TAG:镜像标签
- IMAGE ID:镜像ID
- CREATED:镜像的创建日期(不是获取该镜像的日期)
- SIZE:镜像大小
- 这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
搜索镜像docker search 镜像名
- NAME:仓库名称
- DESCRIPTION:镜像描述
- STARS:用户评价,反应一个镜像的受欢迎程度
- OFFICIAL:是否官方
- AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的63.4拉取镜像
拉取镜像docker pull 镜像名
①直接从Docker Hub拉取(很慢)
docker pull 镜像名 |
②镜像加速器
编辑该文件:vi /etc/docker/daemon.json // 如果该文件不存在就手动创建;说明:在centos7.x下,通过vi。
在该文件中输入如下内容并保存退出:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } Docker官方提供的中国镜像库:https://registry.docker-cn.com 七牛云加速器:https://reg-mirror.qiniu.com 阿里镜像加速器:https://dhq9bx4f.mirror.aliyuncs.com(这个要快一点) Ustc:https://docker.mirrors.ustc.edu.cn 这里列出四个,加速器自由选择,换着使用,这个不行就换另一个 |
注意:添加加速器后一定要重启docker服务
sudo systemctl daemon-reload sudo systemctl restart docker |
删除镜像
docker rmi $IMAGE_ID:删除指定镜像 docker rmi `docker images -q`:删除所有镜像 |
四、docker容器操作
1、查看容器
①查看正在运行的容器
docker ps |
②查看所有容器
docker ps -a |
③查看最后一次运行的容器
docker ps -l |
④查看已停止的容器
docker ps -f status=exited |
创建与启动容器
- 创建容器常用的参数说明:
- 创建容器命令:docker run
- -i:表示以交互模式运行容器,通常与 -t 同时使用
- -t:表示容器启动后会进入容器命令行(交互式)。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
- --name :--name="nginx-lb": 为容器指定一个名称。
- -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
- -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
- -p:指定端口映射,格式为:主机(宿主)端口:容器端口 。可以使用多个-p做多个端口映射
①交互式容器
创建一个交互式容器并取名为mycentos
docker run -it --name=mycentos centos:7 /bin/bash |
通过ps命令查看,发现可以看到启动的容器,状态为启动状态
使用exit命令 退出当前容器
然后用ps -a 命令查看发现该容器也随之停止:
退出容器马上停止.
②守护式容器
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):
docker run -di --name=mycentos2 centos:7 |
- 登录守护式容器方式:
docker exec -it container_name (或者 container_id) /bin/bash(exit退出时,容器不会停止)
停止与重启容器
- 停止正在运行的容器:docker stop $CONTAINER_NAME/ID
- 启动已运行过的容器:docker start $CONTAINER_NAME/ID
查看容器IP
通过以下命令查看容器运行的各种数据
docker inspect $CONTAINER_ID/NAME |
也可以直接执行下面的命令直接输出IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID/NAME |
5、删除容器
- 删除指定的容器:docker rm $CONTAINER_ID/NAME
注意,只能删除停止的容器
- 删除所有容器:docker rm `docker ps -a -q`
- docker部署springboot项目
私有仓库搭建
①下载私有仓库镜像
docker pull registry |
②启动私有仓库容器(守护式容器,退出不会停止)
docker run -di --name=registry -p 5000:5000 registry |
name:自己命名
测试:服务器ip:5000/v2/_catalog
③让docker信任私有仓库
修改vi /etc/docker/daemon.json
添加
"insecure-registries":["192.168.11.174:5000"] |
保存退出
重启docker
拉取基础镜像
拉取官方jdk
docker pull sidereal/jre8 |
Maven构建
①修改宿主机的docker配置
根据docker版本修改宿主机配置方式不同
第一种方式
vi /lib/systemd/system/docker.service 其中ExecStart=后添加配置 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 修改后如刷新配置,重启服务 systemctl daemon-reload systemctl restart docker docker start registry 防火墙对该端口放行 firewall-cmd --permanent --zone=public --add-port=2375/tcp systemctl restart firewalld |
第二种方式(我选的这种)
修改vi /etc/docker/daemon.json { "registry-mirrors":["https://dhq9bx4f.mirror.aliyuncs.com"], "insecure-registries":["192.168.11.174:5000"], "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } 修改后如刷新配置,重启服务 systemctl daemon-reload systemctl restart docker docker start registry |
效果如下:
②在pom.xml中()
<build> <!--打包的命名,自定义--> <finalName>digital</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--这里写上main方法所在类的路径--> <configuration> <mainClass>com.hospital.digital.web.DigitalHospitalApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <!--docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>服务器ip:5000/${project.artifactId}:${project.version}</imageName> <!--根据拉取自己拉取的jdk镜像版本--> <baseImage>sidereal/jre8</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory} </directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <dockerHost>http://服务器ip:2375</dockerHost> </configuration> </plugin> </plugins> </build> |
以上配置会自动生成Dockerfile
进入所在模块目录,输入以下命令,打包上传
mvn docker:build -DpushImage |
查看镜像
浏览器访问 http://服务器ip:5000/v2/_catalog ,输出
{"repositories":["digital-hospital-web"]}
说明镜像以上传到私有容器
启动容器
docker run -d -p 28888:28888 $IMAGE ID |
-d后台启动
-p暴露端口
通过: 服务器ip:映射端口号/....可以访问
- docker部署前端项目
拉取nginx镜像
docker pull nginx |
准备文件
①前端项目打包(这里随意用一个前端项目演示,打包成dist)
②准备Dockerfile文件(不要后缀)
# 设置基础镜像 FROM nginx # 将dist文件中的内容复制到 /usr/local/nginx/html/ 这个目录下面 COPY dist/ /usr/local/nginx/html/ # 将该目录的下的nginx.conf文件复制到/etc/nginx/下 COPY nginx.conf /etc/nginx/nginx.conf RUN echo 'echo init ok!!' |
③nginx.conf文件
server { listen 29999; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /{ root /usr/local/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 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; #} } |
④存放
将前端打包项目、dockerfile、nginx.conf文件传到服务器,存放在同一个文件夹下(任意目录)
这里我存放在root下自建的jdkdockerfile目录下
⑤运行
进入jdkdockerfile
cd jdkdockerfile/ |
打包生成镜像
docker build -t longdb . 注意: -t 后镜像名,自定义,最后一定要加“.”表示执行该目录下的dockerfile |
查看生成的镜像
创建容器运行
docker run -d --name long -p 29999:29999 9e8a428aa034 -d后台运行 --name自定义 -p暴露端口 最后接镜像ID |
运行结果:浏览器输入服务器ip:端口
报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这个问题没有解决,我是直接卸载docker,重装
更多推荐
所有评论(0)