Docker

待完善!!

1. 简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
在这里插入图片描述

2. 架构

在这里插入图片描述

3. 应用场景

Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

4. 优点

4.1 简化程序:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

4.2 避免选择恐惧症:

如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

4.3 节省开支:

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

5. 相关概念

5.1 镜像(Image)

像软件安装包。我们可以把镜像拉(pull)下来,增加我们的更改,然后发布(push)成新的镜像,别人也可以下载我们发布的镜像,然后继续更改,继续发布;

5.2 容器(Container)

镜像安装后运行的实例;同一个镜像可以在同一台服务器上安装成多个容器,同一个镜像可以同时装在多个不同的服务器上。

5.3 镜像layer

对于一个镜像的多次修改push就会有多个layer,一个镜像通常由多个layer组成。

6. CentOS Docker 安装

6.1 uname -r 查看当前的内核版本

[zhuph@zhuph ~]$ uname -r
3.10.0-957.el7.x86_64
[zhuph@zhuph ~]$ uname -a
Linux zhuph.com 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

6.2 确保 yum 包更新到最新

sudo yum -y update

6.3 移除旧的版本:

$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

6.4 安装一些必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

6.5 添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看所有仓库中的版本
yum list docker-ce --showduplicates | sort -r

6.6 安装 Docker-ce

sudo yum -y install docker-ce

6.7 启动 Docker 后台服务

sudo systemctl start docker
开机启动
sudo systemctl enable docker
验证安装
docker version
ps -ef|grep docker

6.8 测试运行 hello-world

docker run hello-world

6.9 镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。请在该配置文件中加入(没有该文件的话,请先建一个):
{
“registry-mirrors”: [“http://hub-mirror.c.163.com”]
}

重启docker
service docker restart

6.10 删除Docker CE

$ sudo yum remove docker-ce
$ sudo rm -rf /var/lib/docker

7. 镜像相关

搜索镜像 (Docker Hub)
docker search java
下载镜像
docker pull java:8
列出镜像
docker images
删除本地镜像
docker rmi java

8. 容器相关

创建并启动容器 docker run
docker run -d -P --name runoob training/webapp python app.py
docker run -d -p 91:80 nginx
列出容器
docker ps
查看容器所有信息
docker inspect 0bfef5b02f3e
curl http://172.17.0.2/
停止容器
docker stop 0bfef5b02f3e
强制停止容器
docker kill 0bfef5b02f3e
启动已经停止的容器
docker start 0bfef5b02f3e
查看容器日志
docker container logs 0bfef5b02f3e
查看容器的进程
docker top 0bfef5b02f3e
进入容器
docker container exec -it 0bfef5b02f3e /bin/bash

9. 定制镜像

[root@zhuph app]# docker build -t nginx:zph . 
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM nginx
 ---> f68d6e55e065
Step 2/2 : RUN echo '<h1> This is messi!!!</h1>' > /usr/share/nginx/html/index.html
 ---> Running in 26f9bff3f266
Removing intermediate container 26f9bff3f266
 ---> fc382c18e052
Successfully built fc382c18e052
Successfully tagged nginx:zph

10. Dockerfile

FROM java:8
VOLUME /tmp
ADD eureka-server-0.0.1-SNAPSHOT.jar /app.jar
EXPOSE 8761
ENTRYPOINT ["java","-jar","/app.jar"]

构建

docker build -t eureka-server-0.0.1 .
docker run -p 8761:8761 eureka-server-0.0.1 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值