docker使用基础总结

1、基础知识
python

Docker特性:docker

1.启动速度为秒级,共享Kernel几乎没有性能损耗,资源消耗小shell

2.提供隔离的运行环境centos

-文件系统隔离bash

-网络隔离网络

-进程号隔离app

-进程间通讯隔离运维

3.提供资源限制socket

-CPU计算资源tcp

-内存资源

-磁盘I/O资源

4.一个容器只干一件事情

保证容器提供服务的服务质量而且能够下降容器之间的相互干扰

5.docker镜像是分层的,好比把一个centos启动成容器,而后装一个服务保存,就是在本来的镜像层上又加了一层

隔离的原理

CGroups:限制容器的资源使用,

Namespace机制实现容器间的隔离

chroot:文件系统的隔离

liunx内核提供的限制,记录和隔离进程组所使用的资源

经过不一样的子系统来实现对不一样资源使用的控制和记录

docker的守护进程和客户端的链接方式

经过socket连接

unix:///var/run/docker.sock

tcp://host:port

fd://socketfd

docker的运行模式

用户能够经过命令行的接口或者自定义的应用和客户端链接,客户端能够是docker提供的二进制程序、shell中运行的docker命令、用户自定义的程序,程序是经过remoteAPI来调用docker的服务,docker的客户端和服务端经过socket链接,这种链接意味着docker的客户端和服务端既能够在同一台机器上运行也能够在不一样的机器上运行,docker的客户端能够经过远程访问的方式来访问docker服务端

2、命令操做

镜像操做

下载镜像

docker  pull  centos

上传镜像

docker  push  centos

删除镜像

docker rmi  p_w_picpathID

打标签

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

列出镜像

docker p_w_picpaths

导出镜像

docker save -o p_w_picpath.tar 镜像名称+tag

导入镜像

 
docker load  --input tar包名称

查找镜像:从官方仓库中

docker  search  centos

构建镜像:把镜像启动起来就是容器而后进行修改,修改完exit退出,commit命令保存

docker commit p_w_picpathID

列出镜像

docker p_w_picpaths

容器操做

启动容器

docker  run [OPTIONS] IMAGE[:TAG]  [COMMAND] [ARG...]
docker run -t -i centos:latest /bin/bash
docker  run  --help
-i:交互式操做
-t:分配一个tty
-d:后台运行

二、启动容器

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

若是不指定具体的标记,则默认使用 latest 标记信息

三、容器基本使用

容器生命周期管理 docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操做运维   docker [ps|inspect|top|attach|events|logs|wait|export|port]
镜像仓库     docker [login|pull|push|search]

4.不进入容器对容器进行操做

docker run p_w_picpath_name  yum install -y app_name

5.中止一个容器

docker stop CONTAINER_ID

6.启动一个中止的容器,并附着

docker start CONTAINER_ID  
docker attach CONTAINER_ID   #须要多敲一次回车

7.重启一个容器

docker restart CONTAINER_ID

8.删除一个容器

docker rm   CONTAINER_ID

9.列出某个容器与宿主机之间的端口映射关系

docker port CONTAINER_ID

10.docker删除全部stop的容器

docker rm $(docker ps -q -a)

脚本还原p_w_picpaths并跟系统已有镜像对比,若是系统不存在这个镜像,就还原

#!/bin/bash
c=`docker p_w_picpaths  | awk '{print $1}' | grep -v REPOSITORY` #过滤出镜像名称
echo $c >> p_w_picpaths.txt                                      #把全部镜像名称追加到
for i in `ls *.tar`                                        #tar包名赋值给i
do
   a=`echo  $i | awk -F '.' '{print $1}'`                  #去掉.tar
   grep  "$a" p_w_picpaths.txt                                   #查询$a是否在文件中
   if [ $? != 0 ]                                          #返回值不为0就是
   then
      cat $i  |  docker   import - $a                      #就还原
   else
      continue
   fi

done
相关文章
相关标签/搜索