欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker实例入门(上)

程序员文章站 2022-07-13 22:56:37
...

       docker是目前微服务和devops中流行的自动化部署技术,也是目前对开发和运维岗位新的要求。docker的概念相对比较新颖,抽象,本文以实例为引导,图文并茂,尽量以比较通俗的语言描述docker的概念及使用入门,以帮助初学者快速上手。限于篇幅,本教程分为上下两部分

   

docker基本概念:
docker是一种容器虚拟化技术。是一种实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,简化容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
Docker 和传统虚拟化方式的不同之处,传统方式则是在硬件层面实现虚拟化,虚拟机只是共享宿主机的硬件设备,操作系统是自己的。而docker等容器虚拟化技术是在操作系统层面上实现虚拟化,直接复用本地主机(宿主机)的操作系统
 
你可以把任何你想得到的程序放在Docker里。既可以把一个简单的Hello World应用放在Docker里,也可以把一个复杂的网站放在Docker里,不同应用之间相互隔离,有一套自己的运行环境,互不影响

  docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
                             
  传统的计算机虚拟化(硬件虚拟化)方式与docker虚拟化(操作系统虚拟化)方式的区别
 
Docker解决了什么问题
测试:“你这里有bug”
 
开发:“我本地运行没问题啊,是不是你测试环境的问题”
Docker解决了运行环境不一致所带来的问题。
 
“系统好卡,谁又写死循环了?”
Docker启动时候就已经限定好了最大能够使用的CPU、硬盘等资源,如果超过,只会自己挂掉,丝毫不影响其他的程序。(应用隔离
 
“双11来了,这么多应用要启动!”
运维最怕的节日,需要在各台机器上部署各种各样的环境和服务,比如要装Java、Tomcat等等,还要调试。有了Docker后,这个过程就很轻松。(自动化部署
 
 
沙箱的概念
Sandboxie(又叫沙箱、沙盘),是一个虚拟系统程序,允许你在沙盘环境中运行程序及周边环境,因此运行所产生的变化可以随后删除。它创造了一个独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。
 
Docker核心思想及组件
 
Docker里三大核心:镜像、容器、仓库。
 
为了方便大家理解,我们同java做个类比:
 
镜像(image)--集装箱--类比Java类(静态、编译时)
容器(container)--运行镜像的地方(镜像的一个实例)--类比Java类new出来的对象(动态、运行时)
仓库(repository)--超级码头(可以放各种各样的集装箱)(类似于maven仓库或者java本地library)
 
 
*一个镜像可以创建多个容器
 
使用Docker运行一个程序的过程就是:
1)去仓库(repository)把镜像(image)拉到(pull)本地
2)然后用一条命令把镜像运行(run)起来,变成容器(container)
3)使用容器。
 
下面再稍详细点解释三个组件:
Docker镜像
 
镜像本质上就是一系列文件,既包括应用程序的文件,也可以包括应用运行环境的文件。其利用了linux联合文件系统(unionfs)分层构建镜像。最底层是操作系统的引导(boot),第二层是具体的Linux操作系统,上面是相关的软件。
 
Docker镜像把每一层加载完成之后,这些文件都会被看做是同一个目录,相当于是一个文件系统。Docker的这种文件系统就被称为镜像。
 
Docker容器
可以把容器想象成一个虚拟机。和虚拟机的区别是,容器里面的文件系统是一层一层的,并且最下面的N层都是只读的,只有最上面的一层是可写的。
 
Docker仓库
 
先把本地的镜像传到Docker仓库(push),再由目的地从Docker仓库把镜像拉过去(pull)。
 
仓库(repository)由Docker*服务器提供:
hub.docker.com(国外,速度慢)
 
Docker常用组件及常用命令

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
学习方式:理解基本概念的基础上重点学习各种操作的命令
实验模拟环境:play with docker 一个docker的模拟沙箱实验环境,注册后登录,每次可用4小时,用完退出或超时后所做的操作自动清理,下次又重新开始。网速可能会比较慢
linux上的安装:用yum命令很快就可以装好,步骤请自己百度。注意centos6.x版本已不支持
中文参考手册:
中文命令手册:
1.docker images
查看当前本地镜像

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
可以指定镜像名
docker images 镜像名

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
 
2. docker pull 镜像名[:tag(标签名/版本名)]
从镜像仓库中拉取或者更新指定镜像。比如,拉取(下载)nginx镜像

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops  

查看仓库中某个镜像所有版本(以docker hub为例)

https://hub.docker.com/


docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 


docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
3. docker run 镜像名(镜像id)
运行指定镜像的容器
 
默认是在前台运行,通常我们要加上-d参数,使其在后台运行,前台还可以做别的事
-d: 后台运行容器,并返回容器ID
-P (大写p): 随机端口映射,将容器内部端口随机映射到宿主机的端口
比如这里,后台运行之前拉取到本地的nginx镜像,可用docker ps命令查看启动的nginx容器
docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 随机端口号不便于记忆和操作,通过我们可以通过-p参数为宿主机指定一个外部端口号,映射到容器内部某个端口号上,之后就可以在宿主机上使用映射出的端口号访问容器的指定端口,仿佛就在宿主机上运行应用一般。
-p(小写p):指定端口映射,格式为:主机(宿主)端口:容器端口

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 在宿主机浏览器中输入localhost:宿主机映射的端口号,可以访问nginx容器的80端口,也就是nginx首页。如果是play with docker这种实验环境,就在实验环境中点击相应链接

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 

 4. docker ps

刚才docker run以后,我们已经用过docker ps命令。不加参数时,默认只

查看正在运行的容器


docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 

 

-a 参数:查看所有容器
 

5. docker exec 容器 命令

在运行的容器中执行命令,相当于从宿主机进入容器内部。
常用参数:
  • -d :分离模式: 在后台运行
  • -i :展示容器输入信息STDIN
  • -t :交互模式,分配一个伪终端。让你在宿主机操作容器内部,仿佛应用部署在宿主机上
通常用的是后面两个参数
docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 此例中修改容器中nginx首页内容,刷新页面即可看到修改
 

6.docker commit 容器名 镜像名[:tag]

将一个容器提交为新的镜像,即从容器创建一个新的镜像(通常会对该容器做一些修改),常用参数:
-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停
docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 
docker run 运行自己的镜像,注意带上版本号(tag)

docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
play-with-docker中查看自己容器提交的镜像启动的新容器
 
docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
 

以上是教程的上半部分,涉及了docker的概念,仓库/镜像/容器的一些常用操作,主要以nginx应用来演示。既可以在真实docker环境中使用,也可以先用play with docker模拟环境做实验。下半部分将会介绍dockerfile文件,如何导入导出镜像,镜像与容器的删除等内容。

下篇链接:https://www.iteye.com/blog/songdi5403-2508553

  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 31 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 22.1 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 55.7 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 10 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 240.7 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 11.7 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 39.3 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 25.5 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 19.4 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 61.4 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 35.4 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 19.3 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 68.2 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 304.2 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 14.8 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 21.2 KB
  • docker实例入门(上)
            
    
    博客分类: docker&微服务&devops docker入门微服务容器虚拟化devops 
  • 大小: 83.7 KB