docker拉镜像、创建容器、停止容器、移除容器、构建镜像

导语:最近发现好多面试者不会docker,虽然不是开发必备,但是偶尔会弄个demo,或者解析个什么自己搭建项目也很方便,以我微薄的docker经验在这里留下记录并供自己以后巩固

以下内容可学会docker相关命令:

查询项目的镜像:docker search [项目]
拉取项目的镜像:docker pull [项目] 或者 docker pull [项目:版本号]
查看拥有的镜像:docker images
查看所有的容器:docker ps -a
查看运行的容器:docker ps
当前页面查看容器的日志:docker logs [容器id]
进入容器内部查看日志:docker logs -f [容器id]
停止容器:docker stop [容器id]
移除停止的容器:docker rm [容器id]
移除镜像:docker rmi [镜像id]
重启容器:docker restart [容器id]
启动容器:docker start [容器id]
创建容器并启动:docker run [镜像id]
创建容器并指定端口:docker run -d -p [指定暴露端口]:[镜像的端口] --name [容器名] [镜像id、镜像名]
构建镜像: docker build -t [自定义镜像名] .

开始本文正题在这里插入图片描述

在不使用docker的情况下在服务器上部署项目的流程:

1、环境准备,能执行java相关命令
2、给项目打成一个jar包
3、给jar包上传至linux服务器
4、找到上传的位置或者直接使用java -jar 【jar名、jar包地址/jar包名】来运行项目

使用docker后

1、给项目打成一个jar包
2、给jar上传至指定的地方并创建一个项目的Dockerfile文件用于制作镜像
3、给jar包制作成镜像方便后续docker管理
4、指定镜像创建成容器并运行方便进行容器统一管理

这里的方便管理举个例子大家就能理解

在不使用docker的情况下在linux上部署5个甚至10及更多的项目时,
1、不方便查看对应项目的日志打印,在系统出现问题时不能方便的定位问题
2、不能全局的查看有哪些端口可以使用
3、不方便管理项目

使用了docker的优势,最显而易见的当然是方便管理和可复用镜像
下面六条是我百度的在这里插入图片描述

1.更高效的利用系统资源
2.更快速的启动时间
3.一致的运行环境
4.持续支付和部署
5.更轻松的迁移
6.更轻松的维护和拓展

话不多说,开始核心内容

这里是已经安装好了docker的,Linux还没有安装docker的得先安装docker

docker需要创建容器,首先得有一个镜像
查看已有镜像命令 docker images

如图所示
docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第1张图片

镜像列相关介绍
repository: 镜像的仓库名,可以理解为项目名
tag: 镜像的版本号,可以理解为项目的版本号
image id: 镜像id,在拉取镜像时docker会给一个保证不重复随机的id
created: 镜像创建的时间
size: 镜像的大小

有人开始疑问了,那么镜像是怎么来的呢,下面开始介绍镜像的来源
大家都知道代码管理有github,那么docker对应的就是dockerhub了,这样非常好记
百度直接搜索dockerhub就能看到,具体地址https://hub.docker.com/
进去后就能看到这样一个页面
docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第2张图片

当你想查询某个具体的项目镜像时,可以在搜索框查询,比如查询mysql,然后出来选择一个需要的点进去

docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第3张图片

有一个描述和一个版本号,点击版本号可以看到对应镜像的历史版本,可以按需索取

docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第4张图片

对应的版本右边都有一个快捷的复制命令功能供大家去linux粘贴执行,也可以自己给项目上传至dockerhub供其他人下载使用,这里就不扩展了

当然,不想去dockerhub查看的也可以在linux使用docker search [项目名] 来查看相关的镜像

docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第5张图片

拉取镜像命令 docker pull [项目名],这里就是docker pull mysql   ,不填写版本号默认拉取最新版本 
若想要对应版本号则 docker pull [项目镜像名:版本号]   类似于上面 docker pull mysql:8.0.30
这样指定版本号的镜像就被下载拉取下来了,接下来执行 docker images 就能查看到你有哪些镜像

如何给镜像运行成一个容器呢

执行 docker run --name [容器名称] [镜像id]  就给对应镜像id运行起来了(ps:这里没有指定项目的端口,继续往下看),
接下来执行 docker ps -a 就可以查看到所有的容器了
container id列 就是容器id,
可以执行docker logs -f [容器id] 就能查看容器的相关执行日志了
docker ps -a 查看所有的容器
docker ps 查看运行的容器
有运行的容器就有对应的没有运行的容器,运行失败的容器对应的状态是exited
那么就需要进去看日志为什么运行失败了,或者直接删除这个失败的容器
docker stop [容器id] 停止容器 
docker rm [容器id] 移除失败的容器
然后重新执行docker run 启动镜像

在这里插入图片描述

如果多余的镜像也不想要怎么办呢 
删除镜像命令:docker rmi [镜像id]

这一套命令下来就能自己从dockerhub上拉取镜像搭建自己的项目了
汇总一下学到了的命令

查询项目的镜像:docker search [项目]
拉取项目的镜像:docker pull [项目] 或者 docker pull [项目:版本号]
查看拥有的镜像:docker images
查看所有的容器:docker ps -a
查看运行的容器:docker ps
当前页面查看容器的日志:docker logs [容器id]
进入容器内部查看日志:docker logs -f [容器id]
停止容器:docker stop [容器id]
移除停止的容器:docker rm [容器id]
移除镜像:docker rmi [镜像id]
重启容器:docker restart [容器id]
启动容器:docker start [容器id]
创建容器并启动:docker run [镜像id]
创建容器并指定端口:docker run -d -p [指定暴露端口]:[镜像的端口] --name [容器名] [镜像id、镜像名]

上述是从dockerhub获取的镜像,如果给自己的项目的jar包怎么变成镜像并运行成容器呢?

1、给项目打成一个jar包
2、给jar上传至指定的地方,防止出错放在一个创建的空的文件夹,并创建一个项目的Dockerfile文件用于制作镜像
3、给jar包制作成镜像

如图:在一个空的文件夹放上传的jar包,并创建一个Dockerfile文件用于制作镜像
docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第6张图片
Dockerfile我这里具体的内容,java大多项目可以套用
docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第7张图片

# Docker image for springboot file run
# VERSION master
# Author: nuoyi
# 基础镜像使用java
FROM java:8

# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar

ADD xxl-job-executor-sample-springboot-2.3.0.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-jar","/app.jar"]

小伙伴们只需要给自己打包上传的jar包的名字替换配置文件中的xxl-job-executor-sample-springboot-2.3.0.jar就可以了

然后通过cd命令来到jar包所在的文件夹
docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第8张图片
然后执行构建镜像的命令 docker build -t [自定义镜像名] .
看到下图中构建的步骤完成就给镜像打包好啦
后面继续执行上面学到的docker run就可以给自己的项目jar运行啦

docker拉镜像、创建容器、停止容器、移除容器、构建镜像_第9张图片
这里学到了项目命令有

构建镜像: docker build -t [自定义镜像名] .

这里docker小白就基本掌握docker啦,掌握了这些就可以学习外置配置文件及高级配置,和挂载进阶玩法啦

你可能感兴趣的:(docker,docker,容器)