深入浅出 Docker

一、什么Docker

  • 从作用的角度:
Docker是一个为开发人员和系统管理员开发、迁移和运行应用程序的平台。应用程序通过Docker打包成Docker Image后,可以实现统一的方式来下载、启动、扩展、删除和迁移,这样方便了应用程序的部署和运维。
  • 从实现的角度(与虚拟机相比):
  1. 相同:虚拟机与容器都能够虚拟化计算机资源从而提高资源利用率,实现应用隔离与资源独立。

   2. 容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。 

  [对于java开发,要想实现程序的打包和迁徙,我们现有的模式是在一个服务器上安装统一一个jdk,运行多个tomcat,每个tomcat里面一个java应用,大家也知道tomcat不用安装,当我们项目要迁徙的时候也只需要把整个tomcat打包然后在另一台服务器上解压就ok了,也很简单

  每台虚拟机都能够获得唯一的操作系统和负载(应用程序),每个容器化应用都会共享相同的操作系统(单个主机操作系统)

  相比于虚拟机,容器拥有更高的资源使用效率,因为它并不需要为每个应用分配单独的操作系统——实例规模更小、创建和迁移速度也更快。云提供商十分热衷于容器技术,因为在相同的硬件设备当中,可以部署数量更多的容器实例 。

二、基于docker的wordpress博客搭建   小例子

  • 一、 项目介绍

1、简介

docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

本项目使用Docker搭建了一个WordPress应用,基础架构包含一个Nginx服务器来路由/代理请求、WordPress应用服务器 来部署应用以及MySQL数据库来提供存储。

本项目的搭建环境使用腾讯云平台的云服务器,系统版本为ubuntu 64位。

2、架构

构建一个简单的基础框架,其上运行一个WordPress的自包含实 例,WordPress是被全世界很多公司和作家使用的流行博客工具。这个基础架构包含一个Nginx服务器来路由/代理请求,WordPress应用服 务器来部署应用以及MySQL数据库来提供存储。最终的架构类似于:

  • 二、 实施过程

1、安装虚拟机和ubuntu系统

下载VMware Workstation Pro安装,新建虚拟机并安装ubuntu系统。

进入terminal并获得root权限。

2、安装docker环境

使用百度的命令进行软件安装。

3、查看docker信息

通过docker info 命令可以查看当前docker的运行信息。

(提示:Cannot connect to the Docker daemon. Is the docker daemon running on this host?

可以使用serivce docker start来启动docker服务。)

4、配置docker加速器

由于docker自带的镜像源在国外,下载镜像的速度不理想。所以可以使用国内的镜像源进行加速,如daocloud的仓库。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://acef54a4.m.daocloud.io

5、创建数据库容器

容器名为wordpress-db, 同时设置数据库密码。

docker run --name wordpress-db -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql

参数的含义如下:

-name表示分配给新容器的名字(或者标签)

-e设置容器的环境变量,指定MySQL实例的密码,已有配置文档可以在MySQL Docker Hub中找到。

-d指定Docker在后台运行容器。

6、创建wordpress容器

docker run --name wordpress-app --link wordpress-db:mysql -d wordpress

-link wordpress-db:mysql这个参数告诉Docker创建网络连接到wordpress-db容器(之前创建出来的),使得两个容器间能够网络通信。

查看容器的状态

docker ps

进入wordpress中使用ping命令,确认wordpress已经连接上数据库。

docker exec -i -t wordpress-app bash

ping mysql

7、安装配置nginx容器

使用nginx作为web访问的代理,配置文件。

cd /usr/local     //进入该目录

mkdir wordpress-nginx    //定义名为wordpress-nginx子目录

cd /usr/local/wordpress-nginx   .//进入该目录

vi default.conf          //定义名为default.conf文件

#Default.conf 这是nginx的配置文件

server {

listen       80;

server_name  localhost;

error_log /var/log/nginx/error.log warn;

location / {

proxy_pass http://wordpress-app:80/;

proxy_redirect http://server_name http://wordpress-app:80/;

proxy_set_header   Host               $host;

proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;

proxy_set_header   X-Forwarded-Proto  http;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /usr/share/nginx/html;

}

}

使用Dockerfile来安装nginx

vi Dockerfile

# this is Dockerfile Infomation

FROM nginx

COPY default.conf /etc/nginx/conf.d/default.conf

接着

安装nginx并启动

docker build -t wordpress-nginx .

docker run -d --name=wordpress-nginx --link=wordpress-app:wordpress-app -p 80:80 wordpress-nginx

指定了参数-p 80:80,这是告诉Docker暴露容器的80端口,这样可以从Docker的宿主机器外部访问该容器。

docker ps

我们指定了参数-p 80:80,这是告诉Docker暴露容器的80端口,这样可以从Docker的宿主机器外部访问该容器。

8、web浏览器访问并安装

  • 三、 项目总结

通过本次项目实践,对Linux中Docker技术有了初步的认知,实施过程中出现了一系列问题包括虚拟机操作系统安装失败,用vi命令新建文件时命令不会使用,按照阿里云安装文档安装docker加速器时失败等等等,不过通过上网搜索资料,询问同学等方式解决了,特别感谢林辉同学的指导。

整个环境的搭建用了两天左右的时间,对我们严谨科研态度和团队协作能力的培养有了很大帮助,另外对于虚拟机、linux系统、docker技术实现应用隔离与资源独立的优点等知识点都有了初步认识,对后续的深入学习具有很大的帮助。

参考网址:http://www.open-open.com/lib/view/open1423537959420.html

时间: 2024-10-15 13:37:06

深入浅出 Docker的相关文章

深入浅出Docker(四):Docker的集成测试部署之道

1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方式,给开发团队建立一套可以复用的开发环境,让开发环境可以通过Image的形式分享给项目的所有开发成员,以简化开发环境的搭建.但是,在没有Docker技术之前就已经有类如Vagrant的开发环境分发技术,软件开发者一样可以创建类似需求的环境配置流程.所以在开发环境方面,Docker技术的优势并不能很好

深入浅出Docker(三):Docker开源之路

背景 Docker从一开始的概念阶段就致力于使用开源驱动的方式来发展,它的成功缘于国外成熟的开源文化氛围,以及可借鉴的社区运营经验.通过本文详细的介绍,让大家可以全面了解一个项目亦或者一项技术是如何通过开源的方式发展起来的.为了更准确的描述Docker的社区状况,请先看一份来自Docker官方的数据: 图中数据的看点有: 超过500个代码贡献者.代码的贡献者在社区发展过程中是非常重要的催化剂,它会不断加快产品迭代的速度,让项目更快的交付到最终用户的手里. 20个全职开发.一般的开源项目一般都不会

深入浅出Docker(一):Docker核心技术预览

1. 背景 1.1. 由PaaS到Container 2013年2月,前Gluster的CEO Ben Golub和dotCloud的CEO Solomon Hykes坐在一起聊天时,Solomon谈到想把dotCloud内部使用的Container容器技术单独拿出来开源,然后围绕这个技术开一家新公司提供技术支持.28岁的Solomon在使用python开发dotCloud的PaaS云时发现,使用 LXC(Linux Container) 技术可以打破产品发布过程中应用开发工程师和系统工程师两者

深入浅出Docker(二):Docker命令行探秘

1. Docker命令行 Docker官方为了让用户快速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的使用方法.但是由于Docker技术的快速发展,此交互式教程已经无法满足Docker用户的实际使用需求,所以让我们一起开始一次真正的命令行学习之旅.首先,Docker的命令清单可以通过运行docker ,或者 docker help 命令得到: $ sudo docker 在Docker容器技术不断演化的过程中,Docker的子命令已经达到34个之多,其中核心子命令(

深入浅出Docker(五):基于Fig搭建开发环境

概述 在搭建开发环境时,我们都希望搭建过程能够简单,并且一劳永逸,其他的同事可以复用已经搭建好的开发环境以节省开发时间.而在搭建开发环境时,我们经常会被复杂的配置以及重复的下载安装所困扰.在Docker技术未出现之前,我们可以使用Pupet.Chef.Ansible等配置管理工具把复杂的配置管理起来,这样的管理配置技术仍然是目前比较流行的方式之一.配置管理工具使用的都是自己的DSL语法定义,考虑到环境的复杂性,配置一套通用的开发环境需要针对各个系统定制,对于大部分开发环境这种维护成本仍然是很高的

深入浅出Docker(六):像谷歌一样部署你的应用

1.概述 谷歌发起的开源项目从来都是广受技术圈的关注和讨论,本文将介绍的就是最新的容器编排管理系统Kubernetes.Kubernetes开源项目版本更新频繁,对于初次使用者来说其定义大量的技术术语并且随时会有新术语出现.在这种不稳定的技术框架之下,对使用者来说确实带来了一定的技术门槛.为了掌握Kubernetes的核心技术概念,本文尝试通过深入阅读官方文档资料并整理出核心的使用实践思路,以飧国内Kubernetes技术爱好者参考研究. 1.1 Kubernetes是什么 Kubernetes

《深入浅出Docker》读书小记(1)

1. 概念 Docker:不独占系统,只有一份OS消耗:启动快:更少的授权和管理费用 Compse: 方便管理多容器(多服务)用的 Swarm: docker集群管理 2. 常用命令 创建镜像:docker image build -t dockertest . (do not foget ‘.’) 删除镜像:docker rmi dockertest 或者 docker image rm dockertest 查看镜像:docker image ls 镜像标签:docker image tag

Docker(一):Docker核心技术预览

开始学习docker了,想写一篇docker技术介绍的纯理论文章,发现以下网站的文档写的特别好,就直接引用了,文章转载自: http://www.infoq.com/cn/DockerDeep http://www.infoq.com/cn/articles/docker-core-technology-preview? utm_source=articles_about_DockerDeep&utm_medium=link&utm_campaign=DockerDeep [编者按]Doc

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