docker image 基础使用

 

一、docker 镜像介绍

           docker images是d acker的三大组件之一, docker把下毅的images存健到docker主机上, 如果一个image不在主机上,docker会从一个镜像仓库下, 默认的仓库是DOCKER HUB公共仓库, 接下来将介绍更多关于docker images的内容, 包括:·使用和管理本地主机上的images·创建一个基础的images·上传images到docker hub(公共images仓库) ·列出

本地主机上已经存在的images

    1.使用docker 镜像 显示本机的镜像

docker images

   

       在列出信息中, ·REPOSITORY来白于哪个仓库·TAG的标记, 比如latest+IMAGEID:境像它的ID号-CREATED.创建时间·SIZE:桶像的5IZE

        一个仓库可能有一个images的都个发行版, 比如ubuntu, 他们有10.0412.0412.1013.0414.04.每个发行版的标记都不同, 可以使用tag命令来指定images注:如果你不指定具体的发行版, 比如仅使用ubuntu, 那么docker会使用最新的发行版ubuntu later t提示:建议最好指定发行版, 只有这样你才可以保证你真正使用的image是那个

   2.下载镜像

docker pull centos

   3.查找镜像下载

        docker的一个特点是很多人因为各种不同的用途创建了各种不同的images, 它们都被上传到了dacker hub共有仓库上, 我们可以在docker hub的网站上来查找它们, 使用docker search命令

docker search  httpd

        我们看到返回了很多包含mysql的images.其中包括image名字、描述、最级(表示该image的受欢迎程度) 、是香方创建、是亡自动创建, 直方的images是stack brew项目组创建和维护的, automated源允许你验证image的来源和内

  base镜像有两层含义:

        1.不依赖其他境像, 从scratch构建,

        2.其他镜像可以之为基础进行扩展, 所以, 能称作base镜像的通常都是各种Linux发行版的Docker镜像, 比如Ubuntu.Debian.CentOS等

二、Linux 操作系统由内核空间和用户空间组成:

   rootfs内核空问是kernel, Linux刚启动时会加bootfs文件系统, 之后bootfs会被卸掉, 用户空间的文件系统是rootfs, 包含我们默形的/dev, /proc/bin等目录, 对于base填像来说, 底层直接用Host的kemel, 自己只需要提供rootfs就行了, 而对于一个精简的OS, rootfs可以很小, 只需要包括最基本的令、工具和程序库就可以了, 相比其她Linux发行版, CentOS的rootfs已经算臃肿的了, alpine还不到10MB, 我们平时安装的CentOS除了rootfs还会选装很多软件、服务、图形桌面等, 需要好几个GB就不足为奇了, base销像提供的是最小安装的Linux发行版。

    支持运行多种Linux OS不同Linux发行版的区别主要就是rootfs, 比如Ubuntu 14.04使用upstart管理服务, apt管理软件包; 而CentOS 7使用systemd和yum, 这些都是用户空间上的区别, Linux kernel差别不大, 所以Docker可以同时支持多种Linux镜像, 模拟出多种操作系统环境, L docker mages 3) 下敷images现在我们指定了一个image,training/sinatra, 我们可以使用docker pull命令来下载它

   下载过程中, 会输出获取境像的每一信息, 该命令实际上相当于#docker pull registry.hub.docker com/ubuntu:12.04命令,即从注册服务器registry.hub.docker.com中的ubuntu仓库来下载标记为12.04的椅像, 有时候方仓库注册服务器下载较慢,可以从其结仓库下载,从其它仓库下载时需要指定完整的仓库注册服务部地址

 1.查看镜像详细信息

docker inspect  httpd

docker images --no-trunc

2.进入镜像方法

  1.直接进入容器 但是 后果是exit后会结束程序

docker run -it  centos  /bin/bash

     ①:创建容器时,可能会出现如下报错:     

          WARNING: IPv4 forwarding is disabled. Networking will not work.

      

   解决办法:

vim  /usr/lib/sysctl.d/00-system.conf

net.ipv4.ip_forward=1  (添加的内容)

   重启网卡和docker

systemctl restart network
systemctl restart docker

2.使用后台方式进入系统

docker run -itd  centos  /bin/bash   (以后台方式启动容器)

docker attach a11c044f1e4d   (进入容器)

docker exec -it a11c044f1e4d /bin/bash (进入容器)



       --restart=always:始终保持运行(随着docker开启而运行)          

       -d:(daemon)后台运行

        区别:exec进入的方式需要添加-i -t选项,后边还需要给容器一个shell环境。但attach就不需要这么麻烦。

                  exec进入的方式:如果执行exit退出,容器仍然保持运行。

      attach:如果执行exit退出,容器会被关闭。如果想要保持容器不被关闭,可以使用键盘:Ctrl  p + Ctrl  q可以实现。

 

       本质上的区别:exec进入的方法,会生成新的进程。

                       attach不会生成新进程。同步操作。

三、创建镜像

 2个方法;

 1.第一个方法:使用docker commit来扩展一个image先使用image启动客器, 更新后提交结果到新的image,

     1.)启动镜像 (如果直接退出后查看不到程序运行)

 docker run -i -t centos:latest /bin/bash   (适用于启动系统镜像)
选项解释:
         -i:可交互 

         -t:模拟伪终端。

         --name:为容器取名。

         -p:端口号。

        2.进入镜像安装程序 (进入时记住ID是多少,好为下一步做准备)

yum -y install mariadb-server

      3.创建镜像

docker commit  -m "add mariadb" -a "test"  fa7a8c5f4781  mariadb:madb

             -m来指定提交的说明信息,跟我们便用的版本控制工具一样;

             -a可以指定更新的用户信息;之后是用来创建情像的容器的ID;

             -t:打标签

             最后指定目标境像的仓库名和tag信息,

             创建成功后会返这个情像的ID信息, 使用docker images来查看新创建的像

  

          再次启动新添加镜像就可以有 那会添加的服务

docker run -i -t  centos:mariadb /bin/bash

             

   2.)第2种方法:从docker file来创建image        

            使用docker commit来扩展一个image比较简单, 但它不容易在一个团队中分享它。我们使用docker build来创建一个新的image, 为此, 我们需要创建一个dockerfle, 包含一些如何创维我们的image的搬令,

四、从本地文件导入

           要从本地文件系统导入一个镜像, 可以使用openvz(容顾虚拟化的先技术) 的模板来创建:openvz的模板下载地址为https://wiki.openvz.org/Download/template/precreated  下载镜像

       我是提前把镜像下载好了 只需要导入就可以了

docker import  centos-7-x86_64.tar.gz   centos7

cat centos-7-x86_64-minimal.tar.gz  | docker import  - centos7-min

(两种方式都可以)

五、上传镜像到docker储存库

        1.首先登陆网站注册账户

https://hub.docker.com/  网址

        2.登陆到docker储存库中

docker login

       3.给镜像打标签,如果没有标签上传会失败

docker tag centos:mariadb wangjianye1/mariadb:latest

    

    4.上传镜像

docker push wangjianye1/mariadb:latest

六、删除镜像 (删除的前提是容器出于关闭状态)

      1.删除单个镜像

docker rmi centos:mariadb

     2.强制删除镜像

 docker rm   +名称或容器ID   -f

    3.删除全部镜像

docker rmi `docker images -q`

   4.停止删除后台启动镜像容器

docker  ps -a -q | xargs docker rm -f   (生产环境禁止使用)

 七、存出和载入镜像

     1.存出镜像

docker save -o centos:mariadb.tar  centos:mariadb   

   或者:

docker save > centos7.tar centos:mariadb

   2.载入镜像

docker load --input  centos:mariadb.tar

   或者

docker load < centos:mariadb.tar

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值