docker学习笔记

镜像:Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器

命令:

docker run  --name=x  y//run 是启动一个镜像y成为docker容器,并起名为x

实例:

docker run --name=container01 -i -t ubuntu /bin/bash  //解释:启动一个ubuntu镜像并且起别名为container01 -i是能够输入 -t是tty终端模拟, /bin/bash  是启动ubuntu的一个命令行

 

docker ps -a -l  //展示所有容器 -a 全部容器包括未运行的,-l(lastest)显示最近的容器

 

docker inspect xx  xx可以是container id  也可以是run 镜像时起的别名

docker start  -i xx  启动已经建立过的容器xx

docker rm xx   删除xx容器,xx容器必须是没有运行的容器

 

 

守护式容器:就是在后台一直运行的容器,不像之前的交互式容器。两种容器可以相互转换

一些基本操作

当我们建立了一个交互式容器后

使用CTRL+P  --> CTRL+Q  将其转为守护式容器,会在后台一直跑

如何回到交互式容器:

  docker attach xx(容器名称)

 

直接启动一个守护容器:

docker run -d

docker log   //查看一个容器的日志

docker top xx(容器名称)//查看一个运行中容器的进程

docker exec  (-t) (-i)  //为运行的容器启动一个新的进程

docker stop //等待容器执行完,进行关闭

docker  kill  //不等待容器的执行,直接关闭

 

查看帮助命令

例: man docker run xxxxxxxx

 

利用docker部署一个静态网页:

首先开启一个ubuntu容器,在里面写一个静态页面, 然后下载nginx监听80端口 ,以守护式容器退出,访问本地加上端口就可以访问到

 

如何创建映射式端口?

 


这四种映射模式:

第一种是开放docker的80端口,宿主机的对应端口为随机

第二种是开放docker的80端口,宿主机的端口为对应的8080

第三种为指定docekr80端口和宿主机id,端口号随机(经过测试这个方法并不行)
第四种为指定docker80端口,宿主机ip地址和宿主机端口

 

大写P是表示开放docker的所有端口

 

注意:当我们结束一个容器时,这个容器启动的进程也停止,如果使用start重启仍不会启动之前启动的服务,我们就需要使用exec命令来重启,像刚才的例子容器重启后,nginx会被关闭,我们需要使用 docker exec web(容器名称) nginx

 

 

docker的cs架构:

其实docker的运行是这样的:

宿主机有一个守护进程,客户端也就是我们起的ubuntu的bash命令,也可以理解为docker容器,当我们向客户端执行操作时,客户端会向服务端守护进程发起命令,服务端完成操作后返回相应的结果给客户端。

 

dockerfile的命令:

FROM:from  <image>    //指定要运行的镜像,这个镜像时候后面所有命令的基础镜像,必须是非注释指令的第一条语句

MAINTAINER: maintainer xx //xx就是作者信息

RUN :后面跟我们真正要执行的语句,他执行的命令是我们运行时的命令

EXPOSE: expose xx  后面跟运行该镜像的容器使用的端口

CMD命令:它执行的命令,是构建时的命令,如果run启动一个容器,run后的命令会覆盖cmd里的命令

ENTRYPOINT:也是构建时需要执行的命令,但是不会被覆盖,如果cmd后面跟的是一个参数,那么可以和Entrypoint结合,entrypoint是要执行的语句,cmd后加参数组合的模式  ,只有最后一条生效

dockerfile中可以有多条cmd命令,但只是最后一条有效

 

dockerFile的构建过程:

每执行一条命令就会新生成一个镜像,这个镜像会有一个id,并且会构建一个容器,如果执行了下面的命令,就会删除这个容器,并且在刚才的镜像上再建一个镜像生成一个id,以此类推完成创建,注意:删除之前的中间层容器并不会删除之前的中间层镜像,我们可以使用中间层的镜像id进行启动来调试错误

 

因为上面的步骤很繁琐,因此docker使用了缓存技术,启动第二次时会使用缓存为基础构建,也可以关闭缓存,也可以再dockerfile中设置缓存时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值