Docker简介与常用命令

1.概述

1.简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,
然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,
开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。
说白了,docker是一种用了新颖方式实现的轻量级虚拟机,类似于VM,但是在原理和应用上和VM的差别还是很大的.并且docker的专业叫法是应用容器(Application Container)。

一个完整的Docker有以下几个部分组成:
dockerClien       #客户端
Docker Daemon     #守护进程
Docker Image      #镜像
DockerContainer   #容器

2.基本概念

Docker包括三个基本概念:
      镜像(Image)
      容器(Container)
      仓库(Repository)

(1).镜像

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。
镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像构建时,会一层层构建,前一层是后一层的基础。
每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。

(2).容器

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,
使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

(3).仓库

镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,
Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

2.基础命令

1.docker的启动、停止、重启

systemctl start docker        #启动docker服务     
service docker start          
systemctl stop docker         #关闭docker服务 
service docker stop  
systemctl restart  docker     #重启docker服务
service docker restart       
systemctl daemon-reload       #重载守护进程 
chkconfig docker on           #开机自启docker

2.容器管理

docker run -it --name vm1 ubuntu bash   #创建并运行一个新的容器(run=create+start)    -it 表示交互式行
docker run -d  --name vm1 nginx         #创建并运行一个新的容器;-d表示打入后台
docker info                             #显示Docker系统信息,包括镜像和容器数等
docker version                          #查看docker容器版本  
docker search  ...                      #搜索符合条件的镜像
docker ps -a                            #查看所有容器状态
docker ps                               #查看正在运行的容器进程
docker pull nginx                       #拉取镜像
docker push                             #将镜像推送至远程仓库
docker history nginx                    #查看指定镜像的创建历史
docker attach vm1                       #连接容器
docker top vm1                          #查看容器进程
docker logs vm1                         #查看容器指令输出; -f表示可以实时查看
docker inspect vm1                      #查看容器的参数(获取容器元数据)
docker stats vm1                        #查看容器资源使用率
docker diff vm1                         #查看容器修改
docker start vm1                        #启动容器
docker stop vm1                         #停止容器
docker restart vm1                      #重启容器
docker kill vm1                         #强制杀死容器
docker pause vm1                        #暂停容器
docker unpause vm1                      #恢复容器
docker rm vm1                           #删除容器; -f表示强制删除
docker export vm1 > vm1.tar             #导出容器
docker import vm1.tar image             #导入容器为镜像image

3.镜像管理

镜像用来创建容器,是容器的只读模板,默认可以从 docker hub 上下载。docker 的镜像是
增量修改,每次创建新的镜像都会在父镜像上构建一个增量的层,基于 AUFS 技术。
docker search                      #查询镜像
docker pull      				   #拉取镜像
docker push      			       #推送镜像
docker inspect    				   #查看镜像详情
docker images     				   #列出本地已有的所有镜像
docker save ubuntu > ubuntu.tar    #导出镜像
docker load -i ubuntu.tar          #导入镜像
docker commit                      #更新镜像
docker rmi        				   #删除镜像
docker build      			       #创建镜像

4.网络管理

ip netns add [name]                              #添加一个 namespace(虚拟网络空间)
ip netns exec [name] ip link set lo up           #在 namespace 中启用一个设备
ip link set [dev-name]   netns [name]            #在 namespace 中新加一个设备
ip netns exec [name] ip link set [dev-name] up   #启用设备
ip netns exec [name] ip addr show [dev-name] permanent scope global                                    #查看指定namespace中指定设备的参数信息
ip netns exec [name] ip -4 addr add 192.168.1.2/24 brd 192.168.1.255 scope global dev  [dev-name]      #为namespace中指定设备设置ip
ip netns list                                    #查看所有network namespace
ip netns exec [name] ping 192.168.1.3            #ping 虚拟机实例

猜你喜欢

转载自blog.csdn.net/lilygg/article/details/88544440