
常用docker命令dockerimages#显示dockers目前安装的所有镜像#每个容器可以里当做一个精简版的Linux虚拟机dockerps#显示在运行的容器dockerps-a#显示所有容器包括在运行的和停止的dockerrun-d--name容器名-p宿主机端口:容器端口-v宿主机目录:容器目录 镜像名:tag或者镜像id#从一个镜像启动一个容器或者叫从一个镜像启动一个虚拟机并且指定容器名称容器端口和宿主机端口映射关系将容器某个目录持久化到宿主机某个目录dockerrun-d--name容器名-p宿主机端口:容器端口-v卷名:容器目录 镜像名:tag或者镜像id#跟上个命令不同的是采用Docker Named Volume命名卷 挂载语法Docker 会自动在 /var/lib/docker/volumes/ollama_data/_data 下管理这个卷。如果该卷不存在Docker 会自动创建它dockervolumels#查看所有卷dockervolume inspect 卷名#查看卷详情dockerstop 容器id#停止一个容器dockerstart 容器id#启动一个停止的容器dockerexec-it容器id /bin/bash#进入容器或者叫进入虚拟机dockerlogs-f-t--tail100容器id#查看容器日志比如容器的镜像只是把jdk和一个业务jar包打在一起那么容器跑起来日志其实就是jar包的日志dockerrm容器id#删除容器删除前必须先停止容器dockerrmi 镜像名:tag或者镜像id#删除镜像dockersave-o导出的目标tar文件(服务器中全路径)镜像名:tag#导出镜像将docker中某个容器导出为一个tar包方便后期移植到其他机器上继续使用 例如docker save -o /home/libb/guarantee_web.tar guarantee_web:1.0dockerload-i要导入的tar文件#导入镜像对应导出镜像的功能将导出的tar包还原到另一台机器的dockers中 例如docker load -i /home/libb/guarantee_web.tardocker 构建Java项目的Dockerfile示例1、在宿主机(我用的是WSL2安装的Ubuntu)中创建docker目录mkdir /usr/local/docker2、将要部署的jar包 guarantee-web-5.1-SNAPSHOT.jar copy到第一步中创建的文件目录中/usr/local/docker3、在/usr/local/docker目录中创建镜像构建文件dockerfile.txt,内容如下# 基础镜像使用javaFROM java:8# 添加一个卷卷独立于容器容器删除卷也会一直存在多个容器可以共用一个卷用来共享数据VOLUME /tmp# 将jar包添加到容器中并更名为app.jarADD guarantee-web-5.1-SNAPSHOT.jar app.jar# 运行jar包ENTRYPOINT[java,-jar,app.jar]#暴露9070端口作为微服务EXPOSE9070其中暴露的端口就是jar包用到的端口从这一点可以看出docker容器其实是一台虚拟机有端口。4、进入到/usr/local/docker目录开始构建镜像 docker build -f dockerfile.txt -t guarantee_web:1.0 .其中 -f 后面的是Dockerfile文件名 -t 后面的是构建完成后镜像的名字和版本tag就是版本.这个点表示 Dockerfile 所在的当前目录。Docker 会从这个目录开始构建镜像。5、从刚刚打包好的镜像 docker run -d --nameguarantee_web -p 9070:9070 guarantee_web:1.0启动一个容器6、进入刚刚启动的容器 docker exec -it 17e09c82efe7 /bin/bash 17e09c82efe7是容器id7、查看日志 docker logs -f -t --tail 100 17e09c82efe7docker持久化的方式1、Bind Mount绑定挂载-v 宿主机路径:docker容器内路径或新语法–mount typebind,source宿主机路径,targetdocker容器内路径2、命名卷的方式-v 卷名:docker容器内路径或新语法–mount typevolume,source卷名,targetdocker容器内路径3、Named Volume 自定义驱动/选项–mount typevolume,source卷名,targetdocker容器内路径,volume-driverlocal,volume-opttypenone,volume-optdevice宿主机路径,volume-optobindvolume-opttypenone,volume-optdevice宿主机路径,volume-optobind 这三个必须组合使用缺一不可typenone表示不指定文件系统obind表示绑定挂载而非设备挂载设备挂载需要指定挂在设备的文件系统volume-driverlocal 表示本地磁盘存储使用–mount命令typevolume表示挂载docker卷此时这个卷由docker托管可以使用docker volume 命令管理在宿主机内的映射路径默认是/var/lib/docker/volumes/。如果typebind,就只是宿主机和容器的路径映射。路径映射可以在宿主机内指定映射的路径但不能用docker volume命令管理。卷可以用docker volume命令管理但不能指定映射到宿主机内的路径。Named Volume 自定义驱动/选项 这种方式既可以在宿主机内指定映射的路径又可以用docker volume命令管理。