欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker实例入门(下)

程序员文章站 2022-07-13 22:55:55
...

接上一篇:docker实例入门(上)

https://www.iteye.com/blog/songdi5403-2477645

 

继续以nginx镜像为例介绍docker的一些基本操作

 

 

7. 编写Dockerfile文件创建自己的镜像

Dockerfile 文件用于指示如何创建你的镜像。格式由一行行命令语句组成,并且支持以 # 开头的注释行。Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令

docker文件的编写比较复杂,本文只以一个例子让大家体验dockerfile文件的作用

 

dockerfile有以下常用指令:

FROM指令
指明所基于的镜像名称

之前说过docker是分层,相当于一层文件以另一层为基础创建,我们实际编写时也要

以来已存在的一层或多层的基础镜像,不重复造*

 

格式为 FROM <image>FROM <image>:<tag>
 
MAINTAINER

指定维护者信息,让别人知道这个镜像是谁创建的,类似于git仓库创建时要指定用户名和邮箱

格式为

MAINTAINER <name>

 

RUN

执行命令并创建新的镜像层,通常用于安装软件包

每运行一条 RUN 指令,镜像添加新的一层,并提交

格式为

RUN <command>RUN ["executable", "param1", "param2"]

 

ADD
格式为 ADD <src> <dest>
该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)
 
例子:以nginx为基础镜像,将当前目录下所有文件添加到nginx容器的html目录中
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
创建好dockerfile文件后,就可以用docker build命令运行它来创建自己的镜像

 

 

8.docker build
命令用于使用 Dockerfile 创建镜像
常用参数:
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式,不写tag就是latest(最新版本)
-f :指定要使用的Dockerfile路径
1)在dockerfile文件所在目录创建一个html文件another.html,随便编辑点啥保存退出
vi another.html
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
2)docker build -t 镜像名 .
使用当前路径的dockerfile文件创建镜像,创建完成后使用docker images查看
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 

3)使用该镜像启动一个新的容器(docker run)

docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 

访问之前build时构造到该容器的文件


docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 

可以看到,nginx的首页已被替换成我们自己的页面,nginx的基础功能仍然复用基础镜像。实际的工作中通常也是这样,以已存在的一个或多个镜像为基础构建新的镜像,再分发给团队成员使用。

 

9. docker stop 容器
停止一个运行中的容器并用docker ps查看
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 例子中命令后跟着的是要停止容器id的前几位用于定位唯一容器
 
10. docker rm  容器
删除一个或多个容器
使用docker ps -a 查看所有容器(包括停止的),发现之前stop的容器仍然存在,只是exited了

docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
docker rm删除容器,再用docker ps -a 查看,发现确实删除了
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 

11.docker rmi 镜像

删除本地一个或多少镜像
注意,如果还有容器正在使用该镜像运行,则不能删除该镜像
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
可以增加-f选型强制删除,但是不推荐,类似于外键约束,可能会造成不一致的问题。正确的做法是先把使用该镜像的容器停止,删除,然后再删除对应镜像
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 可以看到 ,同构建时一样,删除镜像时也是逐层删除的
12.docker save > 文件
将指定镜像保存成 tar 归档文件。> 表示输出重定向
 
镜像构建好了(不管是用dockerfile从头构建镜像还是通过修改别人镜像的容器commit成新的镜像),可以用docker save命令导出为归档文件,分发给团队成员使用,使大家可以在完备,一致的环境下开发,测试和部署
例子:
1)将一个镜像导出到tar文件中,可以发给别人使用

 

docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
2)删除容器和镜像

docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
可以看到,现在本地已没有myimg1这个镜像,我们访问其之前映射的端口也不再能访问
3)使用之前save的tar文件还原镜像,参见下面的docker load命令

 

13.docker load<文件
导入之前使用 docker save 命令导出的镜像tar文件到本地,用于还原镜像
<表示输入重定向
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
用恢复的镜像运行一个nginx容器,还是映射到100端口
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
应用恢复
docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 

附录1:提供一些扩展学习内容,请大家根据我们提供的文档链接和网络自行扩展提高

扩展1:自行查阅 save export load import命令的区别
扩展2:自行在docker hub或网易云(docker仓库,不是云音乐)上注册,将本地镜像上传到远程仓库上
扩展3:自己去pull tomcat,mysql等镜像,并run
扩展4:将一个web应用打包成docker镜像(自己百度,非常多文章)
 

附录2:

使用docker进行实际工作场景描述:
1.专业运维会编写基础镜像的dockerfile文件,save->tar
2.开发人员拿到tar后,通过load-》还原成基础镜像
3. 开发人员完成开发后,编写自己的dockerfile文件,以基础镜像为基础构建自己的镜像
4.运行自己的dockerfile文件(build),构建自己web应用的镜像
5. save自己的镜像-》tar,发给测试人员去还原并测试,发给运维人员去部署

docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
以上就是我们的docker实例入门,介绍了docker的基本概念和作用,docker仓库/镜像/容器三大组件,并以nginx应用的一些简单操作为例介绍了docker常用操作场景和命令。限于篇幅分为上下两篇文章
操作过程基本都有截图,大家可结合我们的截图和建议的命令手册自己进行实验,只有自己动了手才能真正理解概念,学会实际使用。
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 21.9 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 8 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 4.2 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 21.9 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 138.6 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 12.1 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 9.6 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 9 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 11 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 11.5 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 7 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 15.7 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 10.5 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 1.2 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 14.3 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 18.2 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 14.8 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 5.6 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 73.4 KB
  • docker实例入门(下)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 73.4 KB