您的位置:首页 > 运维架构 > Docker

docker入门安装与简单使用

2017-02-17 18:12 716 查看

快速了解

(一) Docker 是什么

官方给出的定义是:Docker是一个集开发,打包,运行应用于一体的开放式平台。Docker可以用来快速交付应用。使用Docker,你可以将应用程序从你的基础设施中分离出来,并将基础设施当做一个管理平台。Docker可以加快打包时间,加快测试,加快发布,缩短开发及运行代码之间的周期。Docker通过结合内核容器化特点和工作流,并使之工具化来实现这一切,帮助管理和发布你的应用。

(二) Docker平台

Docker的生态环境正逐渐壮大起来,Docker的核心,提供了一种运行大部分应用程序的方式,并安全地隔离在容器中。隔离性和安全性允许你在主机上同时运行多个容器。容器天生的轻量级特性,使其在运行时无需加载额外的虚拟机管理器,这意味着你可以从硬件中获得更多东西。

容器周边是一个工具化的平台,可以从以下几个方面帮助你:

将你的应用(或支持的组件)置于Docker容器中

分发和打包这些容器,以便将来用于开发和测试

将这些应用部署至生产环境,无论是数据中心还是公有云环境。

(三) Docker 引擎

Docker Engine是一个C/S架构的应用程序,主要有以下组件:

服务端守护进程

REST API接口,程序用来与守护进程进行交互

CLI(command line interface)命令行接口客户端

Docker Engine Components



注:Docker 引擎 组成(图片来源于docs.docker.com)

CLI使用脚本或直接使用CLI命令,利用Docker的REST API来控制Docker守护进程或与之进行交互。其他许多Docker应用程序使用底层API和CLI。

守护进程创建并管理Docker对象,Docker对象包括镜像,容器,网络,数据卷等等。

(四) Docker可以干什么

快速交付应用

便捷的部署和调整

高密集度,高负载

(五) Docker 重要概念

镜像(images)

Docker镜像是一个只读的模板。包含了容器运行时所需要的文件系统和一些参数。镜像是无状态的,也不会改变。镜像是用来创建容器的。你可以使用docker pull命令获取一个别人已创建好的镜像,或者使用dockerbuild来构建一个自己的镜像。

容器(containers)

Docker容器就像是一个文件夹,容器中包含了应用运行所需的一切。每个容器都是一个隔离的和安全的应用平台。容器是镜像的一个实例,它是有状态的,而且随时会改变,容器一般是短暂的。

启动一个容器的过程如下:

检查指定的镜像是否存在

如果不存在,则去Docker Hub下载

加载镜像并运行

Docker注册中心(Docker Registries):

Docker注册中心是托管Docker镜像的地方,有公共的和私有的,你可以往这些注册中心上传或下载镜像。

Docker Hub是Docker官方的公共镜像仓库,这里汇集了非常多的常用镜像,我们可以直接从这里下载使用,也可以自己制作自己的镜像,并分享给别人。

docker ubuntu14.04安装

编者按:docker的发展非常迅速,apt源的更新往往比较滞后。所以docker官网推荐的安装方式都是下载docker安装脚本安装。
依赖关系:
Ubuntu 14.04版本无需安装额外的依赖包,可以直接安装。
安装步骤:

使用管理员帐号登录ubuntu 14.04系统,保证该管理有root权限,或者可以执行sudo命令。
检查curl包有没有安装。
$ which curl
如果curl没有安装的话,更新apt源之后,安装curl包。
$ sudo apt-get update $ sudo apt-get install curl
获得最新的docker安装包。
$ curl -sSL https://get.docker.com/ | sh
shell会提示你输入sudo的密码,然后开始执行安装过程。
确认Docker是否安装成功。
$ sudo docker run hello-world
这个命令会下载一个测试用的镜像并启动一个容器运行它。
这时候本底没有镜像
docker会去Docker注册中心下载
再 执行 docker run hello-world  运行镜像
注意:docker要调用底层库需要 sudo权限 可以执行 sudo -i后 就切换到root了

docker run hello-world
接着简单描述了一下产生该条信息所经历的一系列步骤:

1 Docker客户端连接到守护进程
2 Docker守护进程从Docker Hub拉取了hello-world镜像
3 Docker守护进程从该镜像创建了一个容器,来执行了命令并输出了我们当前看的这条消息
4 Docker守护进程将容器中的标准输出转发到你的终端。

另一种校验方式
sudo service docker status
运行结果:
$ sudo service docker status
docker start/running, process 10692


国情需要

1、配置Daocloud,去官网申请一个账户

2、配置 Docker 加速器 将 –registry-mirror 加入到你的 Docker 配置文件 /etc/default/docker 中

3、重启docker sudo service docker restart

docker简单几个命令

启动docker服务
$ sudo service docker start
或者
$ sudo systemctl start docker

设置开机启动
$ sudo systemctl enable docker

添加一个docker组(避免每次执行docker命令都带sudo)
注:1.12版本的docker 安装完后已经创建好了docker分组,检查是否已存在:cat /etc/group |grep docker,如果你的没有,则手动添加一下:
$ sudo groupadd docker
将当前用户加入docker组
$ sudo usermod -aG docker $USER
编辑/etc/default/grub,修改GRUB_CMDLINE_LINUX的值如下:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
保存并退出。重启系统

检查版本
$ docker -v
Docker version 1.12.0, build 8eab29e

升级
后续如果有新的版本更新,直接使用apt-get即可:
$ sudo apt-get upgrade docker-engine

卸载
在卸载或删除Docker数据时,一定要检查确保需要的数据已做好备份!
卸载Docker:
$ sudo apt-get purge docker-engine
$ sudo apt-get autoremove --purge docker-engine
上述命令只是卸载了docker程序,并不会删除数据(镜像,容器,数据卷或你在主机上的配置文件等),如果要将这些也全部删除,执行:
$ sudo rm -rf /var/lib/docker
然后手动删除你创建的配置文件即可。
注:

如果你有创建docker组,并且该组也不再需要,则可以将该组删除:
$ sudo groupdel docker

可以看一下目前所有的容器:
docker ps -a

查看正在运行的容器:
docker ps

查看最后创建的一个容器。
docker ps -l

查看本地镜像
docker images

在线查找镜像
如果你不知道都有哪些可用的镜像,在线查找一下
直接使用docker search + [你想查找的镜像关键字],如:
$ docker search tomcat
查看 tomcat的镜像

拉取镜像
使用docker pull [镜像名称[:版本]]可以拉取一个镜像:
注: 完整的镜像名称由[repository]/name:[tag]构成,[repository]为仓库,如果省略,则默认为library,即从Docker Hub拉取;如果省略tag,则默认拉取latest版本,name为镜像名称,不能省略。
pull tomcat:7

创建容器
docker run -d --name tomcat001 -p 8081:8080 tomcat:8
其中,-d 指定容器在后台运行;–name用于指定容器的名称;-p 8081:8080 用于将容器内的8080端口映射到主机的8081端口,你也可以换成其他本机端口.如果需要,你可以创建多个容器使用,需要注意的是,本机映射的端口不能重复,name也不能重复。

容器日志
docker logs -f tomcat001

停止容器
docker stop tomcat001

启动容器
docker start tomcat001

docker run 该命令包括了 docker create 和 docker start

删除容器
删除一个容器前,需要先停止容器,否则,需要使用 -f选项强制删除(不推荐)。
另外,如果容器包含数据卷的话,可以使用-v选项连同关联的数据卷一块删除,删除容器时,默认不删除数据卷,因为数据卷通常会包含我们的数据。
docker rm tomcat001

删除镜像
docker rmi tomcat:8
//删除一个镜像前,需要先停止使所有用它的容器,否则会报错,或者使用 -f选项强制删除。


简单实践-跑一个tomcat

1、拉取tomcat的镜像

docker pull tomcat:8


2、查看一下镜像是否拉取成功

docker images


3、创建并且启动容器

docker run -d --name t8 -p 8081:8080 tomcat:8
//最简单的使用数据卷的方式就是在创建一个容器时 增加-v选项


4、查看容器日志

docker logs t8


5、浏览器访问tomcat8

http://宿主机ip:映射端口/


6、关闭容器

docker stop t8


7、启动容器

docker start t8


8、查看启动了的容器

docker ps


9、创建目录

//创建目录
sudo mkdir -p /opt/data/myapp/ROOT
sudo chown -R $USER:root /opt/data/myapp  // $USER 当前登录用户名

//在/opt/data/myapp/ROOT下创建一个WEB-INF目录
mkdir /opt/data/myapp/ROOT/WEB-INF


10、新建一个web.xml

//新建一个web.xml
vi /opt/data/myapp/ROOT/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"
metadata-complete="true">

<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>

</web-app>


11、新建一个jsp页面

新建一个jsp页面
vi /opt/data/myapp/ROOT/index.jsp
<!DOCTYPE html>
<html lang="en">
</body>
Hello, this is my first docker app!
</body>
</html>


12、将我们的应用挂载到容器中
docker run -d --name myapp -v /opt/data/myapp:/usr/local/tomcat/webapps -p 8888:8080 tomcat:8


13浏览器访问 http://宿主机ip:8888/


打造自己的开发环境镜像

1 、新建一个文件夹,并命名为baseos

mkdir -p /opt/data/baseos


该目录作为我们构建镜像的上下文,构建该镜像的所有内容都会放到该目录下。

2、创建Dockerfile文件

touch Dockerfile //该命令会创建一个空白文本文档


3、编辑Dockerfile

vim Dockerfile

写入

# Base os image
FROM ubuntu:16.04
MAINTAINER your_name <your_email_address>
LABEL Description="This image is the base os images."  Version="1.0"
# reconfig timezone
RUN echo "Asia/Beijing" > /etc/timezone  && dpkg-reconfigure -f noninteractive tzdata

说明
以#开头的行为注释;
第二行FROM关键字告诉docker我们的新镜像基于哪个基础镜像;
第三行MAINTAINER关键字是维护者信息,可以修改为你的名字和邮箱地址;
第四行LABEL Description是对镜像的一个简单说明,Version指明该镜像的版本号,方便维护;
第六行RUN关键字用于执行一条命令。这里主要是修改系统的时区从标准UTC改为亚洲/Beijing。


4、下载jdk–》移动到Dockerfile所在目录



5、修改Dockerfile文件

# Base os image
FROM ubuntu:16.04
MAINTAINER your_name <your_email_address>
LABEL Description="This image is the base os images."  Version="1.0"
# reconfig timezone
RUN echo "Asia/Beijing" > /etc/timezone  && dpkg-reconfigure -f noninteractive tzdata
ADD jdk-7u80-linux-x64.tar.gz  /usr/lib/jvm
RUN update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300 && update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300
ENV JAVA_HOME /usr/lib/jvm/jre


6构建镜像、执行docker build -t cjn/baseos:1.0 .命令构建,注意不要忘了最后的那个点.

说明: -t, –tag=”” Repository name (and optionally a tag) to be applied to the resulting image in case of success

7、测试结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: