docker基本知识理解及命令

技术分享  / 只看大图  / 倒序浏览   ©

#楼主# 2020-2-10

跳转到指定楼层

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
之前本人的文章前端也来玩玩docker呗
里面是本人对照英文的docker官方网站写的一点关于docker最基本的起步使用。然后这遍笔记记录一点docker比较重要的概念和操作命令。
image镜像


  • docker把应用程序及其依赖,打包在image文件里面,只有通过这个文件,才能生成容器(container)
  • image文件可以看作容器的模版
  • 同一个imgae可以产生多个同时运行的容器(container),比方一个mysql的image可以生成多个mysql的container,只要端口差别即可
  • 镜像不是一个单一的文件,而是很多层
  • 容器实在就是在镜像上加了一层读写层,在运行容器里做任何文件的改动,都会写在这个读写层中,如果容器被删除,最上面的读写层也就没了,然后改动也就丢失了
  • 可以通过docker history [ID/NAME] 查看镜像中各层内容及巨细,每层对应着Dockerfile中的一条指令
image相关的操作命令


  • docker image ls : 查看全部镜像
  • docker search 【imagesName】:  查找镜像
  • docker inspect【imagesName】:  体现一个镜像的详细信息
  • docker pull【imagesName】:  拉取一个镜像
  • docker push【imagesName】:  发布一个镜像到镜像仓库
  • docker rmi【imagesName】:  删除一个镜像
  • docker image prune【imagesName】:  删除没有产生容器的镜像
  • docker export -o ***.tar 【imageId】 :  将一个容器导出一个tar包
  • docker import  ***.tar:  导入一个tar包
container容器


  • 容器生成以后,就会同时存在两个文件,image文件和容器文件
  • 关闭容器不会删除容器文件,只是容器停止运行
  • image文件生成的容器实例,本身也是一个文件,称为容器文件
container相关的操作命令


  • docker container run  [imageName] : 从镜像运行一个容器
  • docker container ls  : 列出容器列表(只查看在运行的容器)
  • docker attach : 要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕
  • docker container  stats : 体现容器资源使用统计
  • docker container top: 体现一个容器运行的历程
  • docker container port : 更新一个或多个容器配置
  • docker container inspect : 展示一个容器的详细信息
  • docker container port : 查看容器的端口暴露情况
  • docker container stop : 停止一个容器
  • docker container start :开启一个容器
  • docker container rm : 删除一个容器
  • docker container exec -it  [containerID]  /bin/bash : 启动一个正在运行的容器13. docker container cp  [containerID] :/文件 宿主机路径 : 拷贝一个docker容器内的文件到宿主机
  • docker container  run -it [imageName]  /bin/bash : 启动交互式的容器
-i : 交互式(比方执行node hello ,输出到控制台)
-t:分配一个伪终端
-d: 运行容器到后台
-a: 附加到运行的容器(访问一个正在运行的容器,但是退出会停止容器的运行,现在不实用)
-e: 设置环境变量 (docker run -it -e name="shawvi" centos /bin/bash) 传入了一个变量给centos容器
-p: 发布容器端口到主机,比方nginx的容器会暴露80端口给宿主机(docker run -p 8080:80 nginx)
-P: 发布所有
-v: 挂载宿主机分区到容器
--mount: 挂载宿主机分区到容器
commit制作个性化镜像

1.docker container commit -m '备注' -a '作者名'  容器ID 版本号 : 从容器创建一个个性化镜像
2.通过dockerfile来创建个性化镜像
命令:FROM 镜像 (继承谁人镜像)COPY  宿主机文件夹  指定一个文件夹WROKDIR 文件夹 (工作目录)RUN shell命令  (执行一个脚本命令)EXPOSE 端标语 (掩护一个端标语给宿主机)CMD 命令 (容器启动后执行一个cmd命令)例:FORM node            ====> 继承node镜像COPY ./app  /app     ====> 把宿主机的app目录拷贝到镜像app目录WOKRDIR  /app        ====> 指定镜像的工作目录RUN npm install      ====> 执行一个脚本命令,安装npm包依赖EXPOSE 3000          ====>  向宿主机暴露3000端口CMD npm start    ====> 当启动容器的执行,启动一个node服务其中cmd与run的区别在于,run是在生成一个镜像时执行的命令,而cmd是当我们通过docker run 启动一个容器以后执行的命令。
譬如我们node服务,我们会在生成express服务的镜像时,先下载好那些npm包,然后这个镜像生成以后,我们通过这个镜像去生成一个node服务时,容器内部自动执行了npm start去启动服务,而不需要我们进入容器去执行这个命令,以至于我们一直卡在容器运行的状态,一退出服务就down掉了
按照上面的步骤写好Dcokerfile文件以后,通过命令(docker build -t node_app_demo  .  )
后开始生成一个node的个性化镜像
-t用来指定镜像的名称,后面还可以加冒号指定标签,如果没有就是最新的,
. 代表dockerfile文件的位置
数据盘


  • docker volume create 文件
创建一个docker卷轴,用于宿主机的文件映射到docker容器中去


  • docker run -d --name nginx_server   --mount src=nginx-html,dst=/usr/share/nginx/html nginx
  • docker run -d --name nginx-html:/usr/share/nginx/html nginx (上面的一种简写)
将 宿主机上面的nginx-html文件挂在docker的nginx 容器中去,位置为dst后面的位置,然后这两个文件就打通了,nginx服务器里面的文件就在宿主机中看得到,然后改了宿主机上的文件,docker容器也会发生改变
033038w15srr8sn9u59nni.png


  • docker  volumn rm  卷轴
删除一个卷轴,不能删除正在使用的卷轴,


  • docker  run  -volumes-from  logger  --name nginx_1 -it  nginx  bash
  • docker  run  -volumes-from  logger  --name nginx_2 -it  nginx  bash
nginx1 和 nginx2 都继承这一个卷轴,如许不用每建一个nginx容器都需要挂在一次
分享淘帖
回复

使用道具

您的回复是对作者最大的奖励

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于作者

★★老头★★

新手猿

  • 主题

    1

  • 帖子

    1

  • 关注者

    0

楼主新帖

Archiver|手机版|小黑屋|云大陆 | 赣ICP备18008958号-4|网站地图
Powered by vrarz.com!  © 2019-2020版权所有云大陆