技术改变生活

博客园 首页 新随笔 联系 订阅 管理

docker起源于2013年,目前新版的docker需要linux 7版本环境。

docker的三个基础概念:镜像、容器、仓库。

 

docker安装:

 yum install docker      #docker安装

 systemctl start docker.service   #docker启动

 docker              #docker命令的执行

 docker search  mysql -s 100  #查看mysql的镜像源,-s指显示STARS大于100的镜像源

 

镜像获取:  

 镜像是一个模板,可以从镜像服务器上获取做好的镜像。docker使用docker pull命令来获取镜像。

 docker pull mysql       #获取一个mysql镜像

 docker images         #显示本地已有的镜像,有几个字段,分别是来自哪个仓库/镜像,镜像标志,镜像id,创建时间,镜像大小 

 docker run -t -i 镜像名称 /bin/bash  #使用获取的镜像,创建一个容器,在容器中运行bash应用,-t指运行之后产生一个命令行(terminal),-i让容器的标准输入保持打开

 docker ps           #ps查看运行的容器有哪些

 

创建镜像:

 创建镜像有很多种方法,用户可以更新镜像,也可以利用本地文件系统创建镜像。

 a、docker pull training/sinatra    #先下载镜像

 b、docker run -t -i training/sinatra /bin/bash     #启动镜像

 c、gem install json         #在镜像中添加gem和json应用

 d、exit               #使用exit退出容器

 e、docker commit -m 'add gem json' -a 'Docker Container' 7b789b19572d my/sinatra:v2  #利用docker commit命令来提交更新后的副本,-m参数指定提交的说明描叙信息,-a参数指定维护的用户信息,后面是用来指定镜像的容器ID(d之前的容器ID),最后面是创建镜像的仓库名和tag信息。创建成功后,命令会返回这个镜像的ID信息。

 

 f、docker images        #查看刚才创建的镜像

 g、docker  run -t -i my/sinatra:v2 /bin/bash  #使用自己创建的镜像来启动容器

 

  方法二:使用Dockerfile创建镜像

  使用Dockerfile来创建镜像,使用docker commit虽然很容易扩展镜像,但不便于团队分享,我们可以使用docker build 来创建一个新的镜像。为此首先要创建一个Dockerfile文件,这个文件中包含如何创建镜像的指令。

  a、首先创建一个目录和Dockerfile

    mkdir sinatra&&cd sinatra&&touch Dockerfile

  b、Dockerfile中输入指令,每条指令都创建镜像的一层

  cat >>Dockerfile <<eof

  ---------------------------------------------

  #注解

  FROM centos

  MAINTAINER REGAN 11658999869@qq.com

  RUN yum -qqy install python

  ---------------------------------------------

  <<eof      #其中from告诉docker使用哪个镜像作为基础,接着是维护者的信息,run开头的指令会在创建中运行,例如安装一些软件包,这里使用yum安装python,需要定制参数-qqy,否则可能报错。

  docker build -t='/my/python:v1'.  #其中-t标记来添加tag,指定新的用户的信息。“.“是Dockerfile所在的路径(当前目录),也可以替换为一个具体的Dockerfile的路径。可以看到build进程在执行操作。它要做的第一件事情就是上传这个Dockerfile内容,因为所有的操作都要依据Dockerfile来进行。然后,Dockerfile中的指令被一条一条的执行。每一步都创建一个新的容器,在容器中执行指令并提交修改(就跟之前的docker commit一样)。当所有的指定都执行完毕之后,返回了最终的镜像id。所有的中间步骤所产生的容器都被删除和清理了。需要注意的是,一个镜像是不能操作127层,否则会报错。

  当然Dockerfile中还可以输入其他的命令,例如可以使用ADD命令复制本地文件到镜像中;用EXPOSE命令对外开放端口;使用CMD命令描述容器启动后运行的程序。

 

  docker  images命令查看容器的标签信息,如果觉得不好看,可以使用docker tag命令来更改标签的名字。

 

 

 

本地导入镜像:

使用docker import命令进行导入

例如下载了一个rarlinux-x64-5.3.0.tar.gz镜像文件,使用下列命令导入

cat rarlinux-x64-5.3.0.tar.gz|docker import  - rarlinux:5.3

 

 可以看到导入完成后,docker为我们生成了一个镜像的ID,使用docker images也可以看到我们刚才导入的镜像。注意镜像文件必须是tar.gz类型的文件。

 上传镜像:用户可以通过docker push命令,把自己创建的镜像上传到仓库中共享。

 docker push rarlinux    #注意,上传到公有库时,需要注意上传的镜像名称,前面要加上github的注册账户名/软件仓库名。

 

镜像的保存、载入、删除

使用docker save命令,保存镜像到本地

docker save -o rarlinux.tar.gz rarlinux

 

 

使用docker load命令,将本地保存的镜像再次载入到docker中。

 docker load --input rarlinux.tar.gz

或者  docker load <rarlinux.tar.gz

 

 

docker镜像过时了,需要删除,使用docker rmi image_id

 

docker容器的创建、启动和停止

容器是独立运行的一个或一组应用,及他们的运行环境。容器是docker的一个重要概念。

docker容器的启动有2种方式,

  a、基于镜像新建容器并启动

    例如我们可以启动一个容器,打印出当前的日历表

    docker run centos cal

    我们还可以通过指定参数,启动一个bash交互终端。

    docker run -t -i centos /bin/bash

   

  b、将在终止状态的容器重新启动

    可以使用docker start命令,直接将一个已经终止的容器启动运行起来。

    docker start mysql  

    docker stop  containerID

2、守护态运行

  很多时候,我们希望容器在后台以守护态运行,此时可以添加-d参数来实现(daemon)例如我们启动centos后台容器,每隔一秒打印当天的日历。

  docker  run  -d  centos  /bin/bash  -c  "while true;do echo hello docker;sleep 1;done"

  启动之后,我们使用docker ps查看容器的信息

  要查看启动的centos容器的输出,可以使用docker  logs  containerID

3、终止容器

 使用docker  stop来终止一个运行中的容器。并且可以使用docker  ps  -a来看终止状态的容器

  docker stop  containerID  #终止一个正在运行的容器

  

 

 

 

 

使用docker run命令来启动容器,docker在后台运行的标准操作包括

    1、检查本地是否存在指定的镜像,不存在则从公有仓库下载

    2、使用镜像创建并启动容器

    3、分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层

    4、从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去

    5、从地址池分配一个ip地址给容器

    6、执行用户指定的应用程序

    7、执行完毕之后容器被终止

 

posted on 2020-02-01 21:11  小阿峰  阅读(216)  评论(0编辑  收藏  举报