Docker学习总结

转自:http://www.cnblogs.com/I-will-be-different/p/4353597.html

Docker个人学习总结

最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少量代码。

刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处。比如:

1、Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多

2、Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。

3、更快速的交付和部署、更轻松的迁移和扩展

等等……

因为我是做java开发的,我们现有的模式是在一个服务器上安装统一一个jdk,运行多个tomcat,每个tomcat里面一个java应用,大家也知道tomcat不用安装,当我们项目要迁徙的时候也只需要把整个tomcat打包然后在另一台服务器上解压就ok了,也很简单。。。当时我就不懂Docker有什么好处,一度以为对我们现有的模式没用。知道昨天跟其他人交流我才弄明白一个问题,那就是应用隔离与资源独立!!

这是我刚画的一个图,现在我们的模式是A1,所有的应用共享服务器的CPU、内存等资源,这时如果一个应用出现问题,比如CPU爆满等等,另一个应用也就玩完了。所以要这时就要做到资源独立,一个应用一份资源,现在要做到这样只有做成A2那样,一个服务器上装几个虚拟机,一个虚拟机一个应用。这时如果你要重启虚拟机,你想想你重启电脑要多久。而且你想迁移应用的话,你就又要装虚拟机,配环境等等,麻烦不?我是觉得麻烦。如果有了Docker,就是A3 的模式,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,完全满足了应用隔离的需求。而且容器重启,1秒搞定!应用迁移的时候,这个大家应该也知道,所有装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!

下面是我的Dockerfile,,,,这个主要是供我自己以后回忆的。。


FROM ubuntu
MAINTAINER Rafael lzj <386649347@qq.com>
# 更新源,安装ssh server
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y openssh-server
RUN apt-get install unzip
RUN mkdir -p /var/run/sshd
# 设置root ssh远程登录密码为123456
RUN echo "root:123456" | chpasswd
# setup tomcat
RUN mkdir /opt/bag
COPY tomcat  /opt/bag/
RUN perl -p -i -e "s/8080/5880/g" /opt/bag/conf/server.xml
# install example app on wildfy
COPY bag.war /opt/bag/webapps/bag/
RUN unzip /opt/bag/webapps/bag/bag.war -d /opt/bag/webapps/bag/
# setup maven
RUN mkdir /opt/maven
COPY apache-maven-3.2.2-bin.zip /opt/maven/
RUN unzip /opt/maven/apache-maven-3.2.2-bin.zip -d /opt/maven/
# setup Java
RUN mkdir /opt/java
COPY jdk-7u75-linux-x64.gz /opt/java/
# change dir to Java installation dir
WORKDIR /opt/java/
#RUN apt-get install -y maven
RUN tar -zxf jdk-7u75-linux-x64.gz
# setup nvironment variables
RUN update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.7.0_75/bin/javac 100
RUN update-alternatives --install /usr/bin/java java /opt/java/jdk1.7.0_75/bin/java 100
RUN update-alternatives --display java
RUN java -version
# Expose the ports we‘re interested in
EXPOSE 8080 5880
# Set the default command to run on boot
# This will boot WildFly in the standalone mode and bind to all interface
#CMD /opt/bag/bin/startup.sh && tail -f /opt/bag/logs/catalina.out
CMD /opt/bag/bin/startup.sh && /usr/sbin/sshd -D
# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行
#ENTRYPOINT service tomcat7 start

  然后创建镜像,为了提交到私有仓库所以如此命名:

docker build -t 192.168.1.104:5000/bag .

  然后运行:

docker run -d -p 8001:8001 -v /home/luzijun/Bag/bag:/opt/Bag/webapps/bag 192.168.1.104:5000/bag

  通过把宿主机上的项目目录挂载到容器里面的tomcat内的webapps目录下,就能做到实时更新了,不过如果是更新的.class文件则需要重启tomcat

下面这幅图是我找到的,个人感觉非常好,大家学习后可以把这幅图的流程都走通就差不多啦,至于对这幅图的理解这里我就不说了

好了,这就是我的一些收货,希望对大家有所帮助,纯原创,duang~~

时间: 2024-10-03 21:53:39

Docker学习总结的相关文章

Docker 学习笔记【1】Docker 相关概念,基本操作

计划:Docker 学习笔记[2] Docker 基础操作实操记录,Docker仓库.数据卷,网络基础学习---40 注:所有操作在root下执行 --1--概念: 1.Docker镜像: 镜像就是一个只读的模板,用于创建docker容器. Docker提供了简单的机制创建或者更新现有镜像,也可以从别处拿来现成镜像直接使用. 2.Docker容器: 可以认为是精简版的linux运行环境包含 [root权限,进程空间,用户空间,网络空间等]和应用程序 另外:镜像是只读的,容器基于镜像启动后创建一层

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

Docker学习笔记(一)什么是Docker

Docker学习笔记(一)什么是Docker Docker:容器技术是虚拟化技术的一种,是操作系统的虚拟化. 传统硬件虚拟化:虚拟硬件,事先分配资源,在虚拟的硬件上安装操作系统,虚拟机启动起来以后资源就会被完全占用. 操作系统虚拟化:docker是操作系统虚拟化,借助操作系统内核特性(命名空间.cgroups)实现,不需要模拟硬件行为,不需要安装操作系统. 优点: 硬件虚拟化需要安装操作系统占用空间大. 硬件虚拟化需要模拟硬件系统行为,内存和cpu消耗更大. 缺点: 容器进程崩溃,可能影响宿主机

Docker学习笔记(四)走进docker的世界

Docker学习笔记(四)走进docker的世界 一个容器实际上是运行在宿主机上的一个进程. 只不过在启动这个进程之前进行了一些特殊处理,让这个容器进入了一个全新的虚拟环境,与宿主机的环境分开, 所以这个进程及其子进程认为自己运行在一个独立的世界里面. #查看进程 sudo docker run -d cyf:sshd /usr/sbin sshd -D ps axf 可以看到在宿主机里面的5948这个sshd进程 下面进入docker容器查看 sudo docker-enter.sh 6867

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

docker学习笔记1 -- 安装和配置

技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔记:http://www.open-open.com/lib/view/open1423703640748.html 深入浅出docker:http://www.infoq.com/cn/articles/docker-core-technology-preview 安装 参考:http://www

docker学习(1)----基础概念

转载请注明源文章出处:http://www.cnblogs.com/lighten/p/6841677.html 1.前言 docker的官网:这里.下一段摘自官网描述. docker是世界领先的软件容器平台.开发人员使用docker可以消除与同事的代码协作时产生的"在我机器上运行是正常的"等问题.运营商使用docker在独立的容器中运行和管理应用程序,以获得更好的计算密度.企业使用docker构建灵活的软件传送通道,可以更快,更安全地运行新功能,并且对于Linux和Windows S

个人--Docker学习笔记

Docker学习笔记 docker让应用分发,测试,部署变得前所未有的高效和轻松 docker利用率很高,一台主机上可以同时运行数千个docker容器 docker容器除了运行其中应用外,基本不消耗额外的系统资源 docker容器不需要额外的hypervisor支持,是内核级的虚拟化 docker容器几乎可以在任意平台上运行 docker的三个基本概念 镜像(image) 容器(container) 仓库(repository) 以上是docker的整个生命周期 镜像的作用是用来创建容器的.镜像

docker学习笔记(2)---Dockerfile

在docker学习笔记(1)中,我们提到了通过commit 的命令来提交新的image,下面我们来通过Dockerfile文件来生成image,而且使用Dockerfile,很方便移植. 一.Dockerfile中几个常用的指令: (1)FROM 格式: FROM <image> 或者 FROM <image>:<tag> (2)MAINTAINER 格式: MAINTAINER <name> 说明:设置生成image的作者 (3)RUN 格式: 使用she

Docker学习笔记——镜像、容器、仓库

Docker三个基本概念 镜像(image) 容器(container) 仓库(Repository) 镜像(image) 搜索镜像 docker search nginx 获取镜像 docker pull nginx 指定Registry地址和具体的仓库名下载镜像,没有指定Registry地址,默认从Docker Hub上下载 docker pull jwilder/nginx-proxy 查看镜像 docker images  REPOSITORY          TAG