docker-容器管理、Dockerfile

一、容器管理

运行镜像:

docker run 镜像名称 

这个过程可以理解为:把镜像文件创建成docker容器的一部分,然后再进行启动

容器命令 在运⾏镜像中,后⾯需要带⼀些指令的信息,这些指令的信息具体汇总为如下:

-d:后台运⾏ 

-it:交互式命令(bash)

--rm:容器挂掉后⾃动被删除

--name:给容器起⼀个名字

-p:端⼝映射

 

 

查看运⾏容器的记录信息

docker ps -a | findstr 容器名称

 

查看容器的详细记录信息

 docker container inspect 容器id

 

二、log查看

容器日志查看场景:

你们之前是使用Docker来部署环境的吗?

-是的

那如果被测试的程序出问题了,你是在哪里看的,怎么反馈给开发的

-1、获取到程序运行的容器id

2、通过docker logs 容器id来查看错误的日志

3、日志信息获取成功后,发送给开发

 

查看日志方式:(能查看到容器的任何操作)

1、查看动态的日志(日志在实时的更新,一直查看最后的日志信息)

2、查看静态的日志(把日志文件下载下来,打开查看)

 

查看静态日志:

docker logs 容器id

 

查看动态日志:(实时查看)

docker logs -f 容器id
 

比如有两个命令控制台,一个操作容器,另一个实时查看,这时所有的操作都会实时显示出来。

 

当日志容器很多的时候,只想查看最后的N行(windows不能用此命令)

docker logs 容器id | tail -N

 

提交容器

docker commit 容器id 新镜像名字

在⼀个容器⾥⾯,⽐如centos⾥⾯安装了vim的编辑器,如果没进⾏提交,那么下次进⼊还需要安装vim的编辑器,这其实是⾮常不友好的,我们更加想要的是⼀个容器⾥⾯安装对应的应⽤程序后,下次进⼊还是存在的,这就需要我们提交容器。

操作步骤:

1、先进入到容器里面 docker run -it --rm centos:7.8.2003 bash

2、在容器里面安装第三方的软件 yum install vim

3、查看容器的ID docker ps -a | findstr centos

4、然后提交(提交期间,容器是不能退出) docker commit 容器id 新镜像名字

提交的容器是一个新容器,如果要操作 需要退出exit原来的容器,再run运行提交的容器。

 

三、Dockerfile

使用Docker部署环境流程:(面试题)

1、开发编写代码完成后

2、开发编写Dockerfile文件来构建成镜像

3、然后使用docker run 来启动镜像 也就是容器

4、通知如上步骤就可以完成了环境部署,测试可以开始测试

 

什么是Dockerfile?

其实可以把它理解为操作docker一系列命令的集合

使⽤dockerfile主要是⽤于构建docker镜像⽂件信息,相当于⼀个脚本,通过dockerfile⾃⼰的指令,来构建软件 依赖,⽂件依赖,存储等等情况。

 

Dockerfile组成部分

dockerfile的主要组成部分可以汇总为:

基础镜像信息

制作镜像操作指令 RUM

容器启动时执⾏指令CMD["/bin/bash"]

 

Dockerfile指令

Dockerfile基本指令 dockerfile的指令主要可以汇总为如下,使用dockerfile的前提是学习会这些指令的基本使用,具体如下:

• FROM #指令基础镜像

• MAINTAINER #指定维护者信息,也可以没有

• RUN #具体执行的操作,在命令前面加上RUN即可

• ADD #COPY文件,会自动进行解压

• WORKDIR #设置当前工作目录

• VOLUME #设置卷,挂载主机目录

• EXPOSE #指定对外的端口 • CMD #指定容器启动后需要干的事情

• COPY #复制文件

• ENV #环境变量

• ENTRYPOINT #容器启动后执行的命令

 

实例:

部署centos

Dockerfile文件名必须

 

创建一个记事本来编辑内容,Dockerfile的名称不能变,并且有且只有一个Dockerfile 构建的时候会自动识别这个文件, 并且不能带后缀(记事本写完后 把后缀删除)

 构建镜像

docker build .
 

上面运行镜像成功后 就会执行我们在Dockerfile中写的代码。

注意:镜像名字为空 tag是修改名字,名字不为空 tag是复制出一个修改 

 

部署nginx

 

这时打开一个新的控制台 执行输出:curl http://localhost:80     (对nginx发送请求)

 

 或者是通过浏览器输出:

 

 就会出现我们构建的镜像内容

四、wind ows端口被占用问题:

1、window查看哪个进程占用了某端口:

netstat -ano | findstr 端口号

 

2、通过pid来查看那个程序占用了80的端口:

tasklist | findstr 进程id

 

总结:通过端口查看进程id,再通过进程id找到占用端口的程序,就知道哪个程序占用了端口

posted @ 2022-05-07 16:33  jia---  阅读(55)  评论(0)    收藏  举报