Docker 入门学习
-
云计算平台分类简介
云计算平台包括IaaS基础设施即服务代表作openstack,PaaS平台即服务代表作Docker容器,LXC等,SaaS软件即服务我现在公司所用的Bugclose等等服务
IaaS云计算架构主要为基础运维人员服务,提供计算,网络,存储,及其他基础资源,单独的OS,云平台使用者可以在上面部署运行不同操作系统任意应用程序,无需担忧传统机房中的硬件,空调扇热,电压,网络交换机等等
PaaS架构主要为应用开发人员服务,提供支持软件应用运行所需的运行时环境,共用OS,让开发测试人员更专注核心业务不在为底层系统等等费心
SaaS架构主要为普通用户服务,提供全套服务,用户只需通过浏览器或客户端即可使用云端上的SaaS服务,不需要关注技术细节
-
Docker简介
Docker是一个轻量级虚拟化技术支持多种操作系统windows Linux MacOS,它由Google的go语言所编写,加入了 Linux 基金会, 遵从了 Apache 2.0 协议, 项目代码在 GitHub 上进行维护,Docker 的特点 build ship and run Any App,Anywhere。即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。结合持续集成,持续交付,开发,测试,发布一体化爽歪歪。
本文主要以Centos为基础学习Docker技术,Docker对Linux操作系统要求内核版本在3.10以上,因为要支持Cgroup,namespace实现资源隔离。Centos7系列
下图是容器和VM之间的架构区别

下图是Docker整个软件系统架构图

-
Docker命令学习
- 运行容器镜像方式
#第一个Docker运行命令,从centos镜像启动一个容器并运行echo命令打印“hello world” 命令执行完成立即退出 [root@apptest ~]# docker run centos echo "hello world" hello world
- 容器的启动停止
#docker start|stop|restart 表示启动停止重启一个已经存在的容器 [root@apptest ~]# docker start -i 5108809ffe73 hello world [root@apptest ~]# docker start -ia 5108809ffe73 hello world [root@apptest ~]# docker stop 1ca45031e506 1ca45031e506 [root@apptest ~]# docker restart 5108809ffe73 5108809ffe73
- 容器运行在后台的方式
#容器运行于后台会返回一段 64位的16进制字符串作为该容器的唯一标识,-i 使用交互模式,始终保持stdin模式,-t分配一个伪终端,-d表示后台运行,一般-itd结合使用,-p 端口映射,-v volume挂载 [root@apptest ~]# docker run -itd centos /bin/sh ee0450670f0f21f78974d785102251a1b23b91edd0a5ea142f49d416ed0d16c7 #attach ‘容器标识的前12位 用docker ps查看该编码’ 连接到正在运行的容器与容器主进程进行交互,但运行该命令后会退出会导致容器也退出,不建议使用该命令 [root@apptest ~]# docker attach ee0450670f0f sh-4.2# ls anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var #exec -i 使用交互模式,始终保持stdin模式,-t分配一个伪终端,一般-it结合使用 [root@apptest ~]# docker exec -it 1ca45031e506 /bin/sh sh-4.2#
- docker查看容器状态和删除容器
#查看正在运行的容器 [root@apptest ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ee0450670f0f centos "/bin/sh" 8 seconds ago Up 7 seconds romantic_lichterman 6d453360502f nginx "/bin/sh" 3 minutes ago Up 3 minutes 0.0.0.0:88->80/tcp ecstatic_khorana #查看所有状态容器 [root@apptest ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES #运行状态的容器 “Up” 6d453360502f nginx "/bin/sh" 11 seconds ago Up 10 seconds 0.0.0.0:88->80/tcp ecstatic_khorana #退出状态的容器 “Exited” c72d18be268b centos "echo 'hello world'" 2 minutes ago Exited (0) 2 minutes ago peaceful_perlman #查找当前环境所有docker的id [root@apptest ~]# docker ps -a -q ee0450670f0f 6d453360502f c72d18be268b
#删除属于退出状态的容器使用docker rm ID [root@apptest ~]# docker rm 5108809ffe73 5108809ffe73 #不能使用直接使用rm删除已经运行的容器 [root@apptest ~]# docker rm 1ca45031e506 Error response from daemon: You cannot remove a running container 1ca45031e506c9677db48803f21456418d1819ece03338e01c74ccf6efe9d6ff. Stop the container before attempting removal or force remove #删除属于运行状态的容器 docker rm -f ID [root@apptest ~]# docker rm -f 1ca45031e506 1ca45031e506 #删除当前环境的所有状态的容器 [root@apptest ~]# docker rm -f `docker ps -a -q` ee0450670f0f 6d453360502f c72d18be268b
-
镜像搜索拉取管理
#镜像搜索 search [root@apptest ~]# docker search tomcat NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomcat is an open source implementati… 1793 [OK] tomee Apache TomEE is an all-Apache Java EE certif… 49 [OK] dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 48 [OK] #镜像下载 pull [root@apptest ~]# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat c73ab1c6897b: Pull complete 1ab373b3deae: Pull complete b542772b4177: Pull complete 0bcc3741ab14: Pull complete 421d624d778d: Pull complete 26ad58237506: Pull complete 8dbabc90b2b8: Pull complete 982930be204d: Pull complete 80869be51738: Pull complete b71ce0f0260c: Pull complete b18814a5c704: Pull complete e3fbb69d7797: Pull complete f2a4b7aaa851: Pull complete Digest: sha256:15f12b529a268986eb86224477f22ddfdf4a42383d6758ea14eaed10b3c8a8e9 Status: Downloaded newer image for tomcat:latest
#查看 [root@apptest ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 4db09019de0d 4 days ago 554MB nginx latest 7f70b30f2cc6 2 weeks ago 109MB haproxy latest b7666c46ad75 2 months ago 70.9MB ubuntu latest 2a4cca5ac898 2 months ago 111MB centos latest ff426288ea90 3 months ago 207MB redis latest 1e70071f4af4 3 months ago 107MB django latest eb40dcf64078 15 months ago 436MB [root@apptest ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 4db09019de0d 4 days ago 554MB nginx latest 7f70b30f2cc6 2 weeks ago 109MB haproxy latest b7666c46ad75 2 months ago 70.9MB ubuntu latest 2a4cca5ac898 2 months ago 111MB centos latest ff426288ea90 3 months ago 207MB redis latest 1e70071f4af4 3 months ago 107MB django latest eb40dcf64078 15 months ago 436MB

浙公网安备 33010602011771号