Docker的入门到简单的使用

一,什么是Docker?                                                【官方説明】 

①、Docker是一个开源的应用容器引擎,基于Go 语言 并遵从Apache2.0 协议开源.
②、Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
③、容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone 的app),更重要的是容器性能开销极低。是容器技术的代表,可以理解为一个粗糙的轻量级的虚拟机。
④、随着大数据越来越成熟,应用越来越多,使用RDD(Resilient Distributed Dataset)越来越多,分布式,微服务,大数据云计算等,Docker就必不可少了。

 二,Docker解决了什么问题?

①    我本地运行没有问题啊
        答:Docker可以解决生产环境和测试环境的运行环境不一致会导致的问题!
②    系统很卡,那个哥们又写死循环了?!
        答:一台服务器之中,可以解决不同容器之间的服务干扰问题!
③    双11来了,现在的服务器撑不住了
        答:临时拓展性高,弹性拓展方便,只需要下载Docker,Load镜像到拓展的虚拟机!直
        接可运行。

三,Docker的思想:

       可以在同一个主机上运行多个应用程序,而应用程序的运行环境彼此隔离,互不干扰,可以充分利用主机的计算和存储资源,新机器只需要安装搬运工并导入构建好的镜像就可以完成程序部署,免去了繁琐的安装和配置工作,维护成本大大降低

Docker一个容器只做一件事的核心思想!

四,Dokcer安装

4.1,安装要求
Linux CentOS和Ubuntu
64位数操作系统,并且内核版本为3.10以上
查看系统要求
Uname -r
Docker是在Ubuntu操作系统上开发,所以对Ubuntu系统支持是最好的

4.2、Ubuntu安装Docker

第一步:  切换root 用户  
su root
第二步:  保证系统是最新版本
apt-get update  
第三步:  安装Docker
apt-get install –y docker.io
上述安装是系统自带的Docker 安装包,可能不是最新的!

curl –s https://get.docker.com |sh
安装完成 Docker version

需要启动Docker服务进程
Service docker start
再次执行Docker version

看到上述即安装成功

4.3、CentOS的安装Docker

如果没有wget 需要安装 yum install wget

sudo wget -qO- https://get.docker.com | SH 

说明:-q标识输出要简单,O-标识标准输出,而不是输出到文件

sudo usermod -aG docker用户名

例如:sudo usermod -aG docker root

默认情况下不能使用非根用户直接运行多克尔命令,将当前用户(your_user)加入搬运工用户组

Docker版安装完成,查看Docker版本

AAA

上述可知道Docker Client启动,但是Docker Server并未启动

Service Docker启动运行Docker Server服务

Docker版本查看服务版本

AAA

看到上述即安装和启动成功。

五, Docker的三大核心概念:

Docker 的三大核心:镜像[images] ,容器[Container] ,仓库[Repository]

三大核心概念的关系,用户去仓库拉取镜像,运行在容器中!

5.1、镜像[images]:

        镜像是创建搬运工容器的基础,Docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读的文件,包含文件系统创建镜像有三种方法:

①:基于已有镜像的容器创建【就是在当前现有容器中进行操作,然后提交成新的镜像】。主要是利用docker commit命令。

②:基于本地模板导入推荐利用OpenVZ的提供的模板来创建。

③:基于Dockerfile创建。首先按照Dockerfile的格式,编写好Dockerfile文件,之后通过docker build命令来创建镜像.docker构建会取得制定的dockerfile,由Dockerfile务来创建镜像文件。

5.2、容器[Container]:

       Docker 容器类似一个轻量级的沙箱,Docker 利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以将其启动,开始,停止,删除,而这些容器都是相互隔离,互不可见的。可以把容器看做一个简易的Linux 系统环境(这包括根用户权限,进程空间,用户空间和网络空间等),以及运行在其中的应用程序打包而成的应用盒子,镜像本身是只读。容器从镜像启动的时候,Docker会在镜像的最上层建一个可写层,镜像本身保持不变。可以利用docker create命令创建一个容器,创建后的的容器处于停止状态,可以使用docker start 容器ID,命令来启动它。也可以直接利用docker run命令来直接从镜像启动运行一个容器.docker run = docker creat + docker start当利用docker run创建并启动一个容器时,docker在后台的标准操作包括:

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

②,利用镜像创建并启动一个容器

③,从宿主机配置的网桥接口中桥接一个虚拟的接口到容器中

④,从地址池中配置一个IP地址给容器

⑤,执行用户指定的应用程序

⑥,执行完毕后容器终止

备注:当你在容器内部的操作配置,容器停止运行,所有的操作还是会存在!Docker ps -a查看找到容器ID,提交之后,可生成新的镜像!如果你不提创建新的镜像,之前的操作就会丢失!容器内部操作为一次性的,Docker commit容器ID镜像名提交生成新的镜像用来保存操作的配置

5.3、仓库[Repository]:

       仓库是存放Docker images [镜像]的地方。仓库和注册服务器还是有区别的。注册服务器是存放仓库的地方,在其中存放了很多仓库,每个仓库存放一类镜像文件。仓库分为公有仓库和私有仓库,DockerHub是目前最大的公有仓库。可以通过docker push / pull命令从仓库中上传和下载镜像,docker search命令来搜索镜像。

网易云镜像中心:c.163.com

AAA

在保证Docker服务启动成功的前提下,黏贴回车即可!

六,Docker的使用

6.1、Docker                 所有的运行都是需要镜像文件作为基础的
Docker images                                         查看所有的镜像

6.2、Docker ps              查看正在运行的容器

6.3、Docker ps –a           查看所有结束运行的容器信息

备注Linux操作系统重启之后,docker服务会停止,正在运行的所有容器都会停止,docker ps 查不到任何正在运行的服务,docker ps –a 可以查询到历史所有的运行服务,直接docker start ‘容器ID’,可以重启容器服务,保证所有服务和Linux关机之前状态是一样的!【可以设置开机自启】

七、容器生命周期管理

docker run运行镜像文件,生成服务容器
-d:后台运行容器,并返回容器ID;
-i:以交互模式运行容器,通常与-t同时使用;
-p:端口映射,格式为:主机(宿主)端口:容器端口
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
--name ="Mynginx":为容器指定一个名称;
--dns 8.8.8.8:指定容器使用的DNS服务器,默认和宿主一致;
-m:设置容器使用内存最大值;
--net ="bridge":指定容器的网络连接类型,支持bridge / host / none / container:四种类型

docker run -p -itd -v /root/software/ : /mnt/software/05115a755af0/bin/bash
-p 端口映射 外部端口:内部端口
-v 文件路径 映射宿主机目录:容器目录
-d 后台运行
-P 随机映射对外所有端口

docker build                创建镜像,命令用于使用Dockerfile 中
system prune              删除所有已经运行结束的容器docker
rm '容器ID'                  删除容器【此容器必须为未运行状态】

docker cmmit '容器ID'  新镜像名       提交当前容器,保存为新的镜像文件

docker start '容器ID'                     启动一个或多少已经被停止的容器docker
docker stop '容器ID'                     停止一个运行中的容器
docker restart '容器ID'                  重启容器

docker kill                                     杀掉一个运行中的容器
例如:docker kill -s Kill '容器ID'            

docker rm                                      删除一个或多少容器
例如:docker rm -f '容器ID1' '容器ID2'              删除两个容器

docker create                             创建一个新的容器但不启动它
例如:docker镜像nginx:          最新创建一个容器,并将容器命名为myrunoob docker
create --name myrunoob nginx:latest --name是重命名容器

八,容器相关操作

docker ps
-a:显示所有的容器,包括未运行的
-l:显示最近创建的容器
-n:列出最近创建的n个容器
-q:静默模式,只显示容器编号
-s :显示总的文件大小
docker ps -n 5                          显示最近创建的5个容器
docker ps -a -q                         列出所有创建的容器ID

docker inspect                          获取容器/镜像的元数据docker、包括IP
inspect mysql:5.6获取mysql:5.6     数据的原信息

docker top '容器ID'                    查看容器中运行的进程信息,支持ps命令参数

docker exec -it '容器ID' bash    切入到容器内部【交互式】,退出后,容器还会在运行docker
docker attach '容器ID'               切入到容器内部【非交互式】,exit后,容器停止运行

docker logs '容器ID'                  获取容器的日志
例如:docker logs --since ="2016-07-01"--tail = 10'容器ID'
查看容器mynginx从2016年7月1日后的最新10条日志

docker port                               列出指定的容器的端口映射
例如:docker port'容器ID'            

docker load <web.tar              加载导出的镜像文件到Docker容器中
例如:docker load <导出的镜像文件名.tar 

九、容器rootfs命令

docker commit:                     从容器创建一个新的镜像

-a:提交的镜像作者
-c:使用Dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit时,将容器暂停

docker commit -a "root" -m "my apache" a404c6c174a2 mymysql:v1

docker cp用于容器与主机之间的数据拷贝
例如:docker cp'本地全路径'容器ID:'容器内部ID'

docker cp /root/AAAA.war 2a501f61a426:/usr/java/tomcat/apache-tomcat- 20170508/webapps/

十、镜像仓库docker

Docker pull '镜像名'                                      从镜像仓库中拉取或者更新指定镜像docker
Docker search '镜像名'                                 从镜像中心查找镜像

十一、本地镜像管理

码头图像列出本地镜像

docker rmi '镜像ID'                      删除本地一个或多少镜像【前提是此镜像不被其他镜像依赖】
docker build                             命令用于使用Dockerfile创建镜像文件
docker history                           查看指定镜像的创建历史
docker save -o javaweb.tar  '镜像ID'          将docker中的镜像导出
例如:docker save -o '存储本地的镜像名字'.tar 'docker中的镜像ID'
上述存储语法有一个缺陷根据镜像ID存储的为镜像文件,当加载到其他机器上的码头工人容器中会丢失镜像名称和没有名称

docker save -o javaweb.tar 镜像名称.Tar 将docker中的镜像导出
例如:docker save -o '存储本地的镜像名字':tag 'docker中的镜像名称':镜像tag

当前存储语法,会保存当前镜像的名称和镜像文件的Tag,当加载到其他机器上的Docker容器中不会丢失镜像名称和Tag名称
 

十二,info 版本

docker info显示Docker系统信息,包括镜像和容器数docker
version显示Docker版本信息

上述所有使用镜像ID、和容器ID、的所有操作都可以使用镜像名称、容器名称、镜像标签、容器标签替换

备注、Docker使用的注意事项

注意事项①

当一个镜像文件已经运行后,停止在Docker容器中,(Docker ps -a)可以查看,如果想要再运行相同的shell命令启动这个服务,必须要先删除掉容器中的进程,才能重新运行!

报错信息如下:

docker: Error response from daemon: Conflict. The container name "/liuwunan-es" is already in use by container "6b7cbf12d49242bdaebf2cae9e0a3bcdfb3bd0623c39a5e2d1068048e00c451b". You have to remove (or rename) that container to be able to reuse that name.

请参阅'docker run --help'。

docker system prune 删除停止的所有容器

 重新运行Shell启动这个服务就可以了

注意事项②

        当修改了一个容器内部的配置之后,如果需要当前修改配置永久生效需要重新提交当前容器,生成新的镜像文件,否则当下次删除了已经停止运行的容器,配置会重新还原,之前所有的修改配置文件都会丢失!为保证下次删除容器,配置不丢失最好的办法是重新提交容器生成新的镜像文件

(docker commit 容器id镜像名:tag标签)镜像名:标签都必须为小写

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值