笼统概念:Docker
是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,发布到任何流行的 Linux
或Windows
*** 作系统的机器上,也可以实现虚拟化。
举个例子,比如说我们需要在linux/
window部署 一个springboot
项目。以往我们需要先部署环境,才能进行项目启动。一旦服务器变换,则需要重新安装环境,较为繁琐。而docker
支持将 jar包以及相关依赖环境打成镜像,这样子便可以直接在装有docker
的环境上运行(linux/windows),省去了环境配置这一环节,节约了运维成本。同时docker
仓库提供了较多的基础镜像,便于集成。
docker三要素:镜像、容器、仓库。举个例子,仓库就是我们手机商城,镜像就是商城里面的软件,而容器就是我们的手机,也就是提供镜像运行的地方。一般我们都是先登录仓库(私服仓库,不登陆默认https://hub.docker.com
),然后拉取镜像,最后运行。注:每次运行镜像,都会默认生成一个容器。如果我们想要删除删除镜像,需要先删除容器。
启动镜像(自动生成容器):docker run [options] 镜像名 [command]
[options]:
-i # 启动一个可交互的容器,并且持续打开标准输入
-t # 表示使用终端关联到容器的标准输入输出上
-d # 后台运行
--rm=true # 退出后删除容器
--name=容器名 # 给容器命名
-p 主机端口:容器端口 # 映射端口
-P # 大写P,暴露容器所有端口
-v 主机地址:容器地址 # 挂载,映射端口文件夹
-e 属性名=属性值 # 配置环境变量
[command]:
/bin/bash # 控制台
启动容器:docker start 容器id
关闭容器:docker stop/kill 容器id
暂停容器:docker pause/unpause 容器id
重启容器:docker restart 容器id
查看运行中的容器:docker ps
查看所有的容器:docker ps -a
容器信息:docker inspect 容器id
查看容器中的进程信息:docker top 容器id
查看容器日志:docker logs [options] 容器id
[options]:
--since 30m # 最近30分钟
-f # 动态打印
删除容器:docker rm 容器id
进入容器(必须是可交互的容器):docker exec -ti 容器id bash
退出容器:exit
进入容器正在执行的终端:docker attach 容器id
在运行的容器中执行命令:docker exec 容器名 命令(如id add)
从容器内拷贝文件到主机上:docker cp 容器id:容器内路径 主机文件路径
容器打包成镜像:docker commit [options] 容器id 名称:版本号
[options]:
-m # 描述
-a # 作者
五、dockerfile构建镜像
命令介绍
命令 | 效果 |
---|---|
FROM | 基于镜像 |
MAINTAINER | 镜像作者+邮箱 |
RUN | 镜像构建的时候需要运行的命令 |
ADD | 将本地文件拷贝到容器中(tar自动解压) |
WORKDIR | 镜像工作目录(进入容器时的目录) |
VOLUME | 挂载/持久化的目录 |
EXPOSE | 暴露端口配置 |
CMD/ENTRYPOINT | 指定这个容器启动时要运行的命令(CMD替代先前命令,ENTRYPOINT在先前命令后追加) |
COPY | 类似于ADD,将文件拷贝到镜像中(不能自动解压) |
ENV | 构建时设置环境变量(printenv:打印环境变量;cat /etc/redhat-release:linux版本;rpm -qa bind:bind版本) |
USER | 指定容器的子进程是哪个用户(pid=1 |
#继承jdk8
FROM java:8
#作者
MAINTAINER zzk
#指定临时文件夹,效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。
#/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
VOLUME /tmp
#将jar包添加到容器并且改名字为zzk.jar
ADD docker.jar zzk.jar
#运行jar包
RUN bash -c 'touch /zzk.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/zzk.jar"]
六、docker部署实例
https://blog.csdn.net/weixin_40496191/article/details/122714245
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)