8.10——Docker容器管理、Dockerfile

一、容器管理

运行镜像:

docker run 镜像名称

这个过程可以理解为:把镜像文件创建成docker容器的一部分,然后再进行启动,特别需要注意的是:容器内的进程必须是前台运行状态,否则容器直接退出。

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

  1. -d:后台运⾏
  2. -it:交互式命令(bash)
  3. --rm:容器挂掉后⾃动被删除
  4. --name:给容器起⼀个名字
  5. -(小)p:端⼝映射
  6. -(大)P:指定任意的端口
    image

二、log查看

查看日志方式:(能查看到容器的任何操作)
1、查看动态的日志——日志在实时的更新,一直查看最后的日志信息)

docker logs -f 容器id

image
注意:查看动态日志时,有两个命令控制台,一个操作容器,另一个实时查看,这时所有的操作都会实时显示出来。
2、查看静态的日志——把日志文件下载下来,打开查看

docker logs 容器id

image
3、筛选查看日志(windows不能用此命令)

docker logs 容器ID | head -N:开始N行日志文件
docker logs 容器ID | tail -N:最后N行日志文件

image

三、提交容器

场景:

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

语法格式

docker commit 容器id 新镜像名字

操作步骤:
  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 新镜像名字
    image

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

四、镜像导出与导入

场景

在企业案例中,我们往往打包成⼀个镜像后,就会打包,然后把它发送给其他的同学来使⽤。那么在本案例中,我主要包⼀个centos的镜像,⾥⾯也是安装了vim的编辑器,然后再在另外⼀个docker的导⼊和执⾏。
镜像导⼊导出的场景:异地的办公模式,那么场景就是:异地的开发同学写完代码后,然后把⾃⼰的应⽤程序打包成镜像,打包成镜像后,发送给测试同学,测试同学运⾏镜像(前提是把镜像导⼊中docker中),镜像运⾏成功后,等于环境部署成功,可以测试通许可以开始测试了。
开发同学操作:
1、写代码
2、写的代码打包成镜像
3、把镜像导出
4、发送给测试同学
测试同学操作:
1、接收开发发送的镜像
2、导⼊镜像到docker中
3、运⾏镜像
4、开始测试

1、导出镜像

安装vim
image
开始导出
image
(1)先删除镜像
image
(2)重新导入
image

五、容器停⽌&启动

image
image

六、Dockerfile实战

Dockerfile概述

使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等等情况。

Dockerfile组成部分

  • 基础镜像信息
  • 制作镜像操作指令 RUM
  • 容器启动时执⾏指令CMD["/bin/bash"]

Dockerfile指令

Dockerfile基本指令

  • FROM #指令基础镜像
  • MAINTAINER #指定维护者信息,也可以没有
  • dc42dd7323a3
  • [root@wuyaShare ~]# docker port dc42dd7323a3
  • 80/tcp -> 0.0.0.0:80
  • 运⾏容器信息
  • [root@wuyaShare ~]# docker run -it --rm centos:7.8.2003 bash
  • [root@3466f8fe336c /]# touch index.txt
  • 通过exec命令的⽅式进⼊到交互式的命令信息
  • [root@wuyaShare ~]# docker exec -it 3466f8fe336c bash
  • [root@3466f8fe336c /]# ls
  • anaconda-post.log dev home lib media opt root sbin sys usr
  • bin etc index.txt lib64 mnt proc run srv tmp var
  • RUN #具体执⾏的操作,在命令前⾯加上RUN即可
  • ADD #COPY⽂件,会⾃动进⾏解压
  • WORKDIR #设置当前⼯作⽬录
  • VOLUME #设置卷,挂载主机⽬录
  • EXPOSE #指定对外的端⼝
  • CMD #指定容器启动后需要⼲的事情
  • COPY #复制⽂件
  • ENV #环境变量
  • ENTRYPOINT #容器启动后执⾏的命令

通过dockerfile构建centos镜像的过程

(1)新建一个文件夹,在文件夹中新建一个文件,文件内输入:

FROM centos:7.8.2003 (指定基础镜像)
MAINTAINER XX (创建人)
ENV name Docker (定义一个变量,变量的值是Docker)
ENTRYPOINT echo "Hello $name" (运行程序,输出变量的值,输出的值是 Hello Docker)
如:创建一个 learndocke文件夹,在文件夹中创建一个dockerfile的文件。
image
(2)打开控制台,进入创建的文件夹dockerfile中
cd D:\Users\29660\Desktop\dockerfile
d:
image
(3)输入docker scan 后,再输入y
image
4)登录到docker hub的账户
命令如下:

docker login
然后输入docker hub的账户和密码
image
(5)再次开始构建镜像 docker build -t centos_name -f dockerfile .
docker build 构建镜像;

-t:
-d:指定Dockerfile文件夹。
image
6)运行镜像 docker run -it --rm centos_name
image

2、nginx部署

(1)新建一个文件夹,在文件夹中新建一个文件,文件内输入:

FROM nginx (指定基础镜像)
MAINTAINER XX (创建人)
RUN echo "Hi, This Is A Docker Continer WebSite" > /usr/share/nginx/html/index.html (运行在html中输出Hi, This Is A Docker Continer WebSite)
EXPOSE 80(80端口)

如:创建一个 dockerfile文件夹,在文件夹中创建一个dockerfile的文件。
image
2)打开控制台,进入创建的文件夹dockerfile中
命令如下:

cd D:\Users\29660\Desktop\dockerfile
d:
image
(3)再次开始构建镜像docker build -t website .
docker build 构建镜像;

-t:指定文件名(自定义);
-d:指定Dockerfile文件夹。
image
(4)运行镜像 docker run -it --rm centos_name
image
在网页中输入https://localhost:80回车,出现下图则上传成功

image-20220810180725472

如果端口被占用,可参考该网址解决

win7.win10进程pid4占用80端口的解决办法 - 电脑教程 (geren-jianli.org)

posted @ 2022-08-11 09:26  NANA~  阅读(310)  评论(0编辑  收藏  举报