Docker 简单应用

Docker简介

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  • docker 是一个工具,用来生成镜像和容器的工具
  • 镜像 是自定义的一套运行环境,可以加入自己需要的软件,如python等
  • 容器 是一个运行起来的环境,类似于一个正在运行的app

Docker 安装

  • 安装过程略  

Docker 使用

  • 获取镜像 docker pull images
  • 查看本地仓库镜像 docker images
  • 挂在镜像 docker run ubuntu:15.10 /bin/echo "Hello world"

    会自动返回容器运行的id,如果想查看完成id可运行
    docker inspect 5a(返回的id) | grep Id
    Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像
  • 查看在运行的容器 docker ps [-a] 
    我们发现并没有任何容器在运行
    然后我们运行docker ps -a
     -a 就是列出所有的容器,包括未在运行的,我们看到最后一列状态是Exited(退出的)
    从上面我们可以看到容器的ID,IMG,Status,commond,name等,其中名称是容器自动分配的
  • 运行交互式的容器

    这样我们就进入了容器中,可以在这里面做一些操作
    如果我们想退出直接输入exit,但是我们退出之后通过docker ps 命令并没有看到有在运行的容器,这是因为直接exit,容器的状态为exited,并没有运行,我们可以在交互界面直接按CTROL+Q+P,这是我们在查看,发现容器的状态是up

    那么当我们的容器已经在后头运行了,我们怎么再次进入容器呢,如果我们直接运行run,并没有进入原来的容器,而是重新建立了一个容器,我们可以通过docker exec -it 775c7c9ee1e1(id)进入我们的容器中

    那么怎么停止在后太运行的容器呢,第一种方法再次进入容器,然后输入exit,第二种童工docker stop+(id或名字) 命令

    此时状态已经变为exited 如果想再次启动该容器,直接运行docker start 命令
     当我们的容器不再使用时,我们可以使用docker rm 删除(注意docker rmi 是用来删除镜像的) 
    只有在容器在未运行的情况下才能删除
  • 启动容器(后台模式)
    -d带参数表示容器后台运行

    但是我们发现输入命令后,容器状态并不是up,这是因为Docker容器在后台运行,必须要有一个前台进程,这里我们让容器有前台程序运行,就可以实现容器的-d 启动后存活,可以使用"while true; do echo hello world; sleep 1; done",无限输出hello world

    通过docker logs 可以查看容器内的标准输出

Dockerfile 创建镜像

我们除了使用公有仓库里面已有的镜像外,当我们要定制自己的镜像时我们可以通过dockerfile文件创建我们自己的镜像,下面我们以搭建scrapy爬虫为例,目标:创建一个镜像,该镜像包含scrapy爬虫和scrapyd

  1. 建立目录结构 我们自己创建一个目录,例如docker,目录结构如下:

    code 用来放我们的爬虫代码
    Dockerfile 是我们的镜像构建文件
    requirements.txt 为我们python程序需要的各种包
    2.dockerfile 文件内容

FROM ubuntu
# FROM指定基础镜像,并且必须是第一条指令
RUN apt-get update
RUN apt-get install -y python2.7
# RUN功能为运行指定的命令
ENV PATH /usr/bin:$PATH
# ENV 设置环境变量 ADD . /code
# ADD一个复制命令,把文件复制到景象中 WORKDIR /code
# WORKDIR 设置工作目录
ADD ./requirements.txt /code/

然后在这个目录打开终端通过docker build进行镜像制作
docker build -t zhanghtt/scrapy:v1 .

zhanghtt/scrapy 为镜像名
v1为tags标识
.dockerfile文件所在的目录

完成之后查看我们的本地镜像,显示已经创建成功

至此我们已经创建了一个包含python的ubuntu镜像 通常基础镜像创建完成之后,我们还需要增加很多依赖包,当然我们可以在创建dockerfile的时候加入,当时我们可以在创建完成之后再进行镜像的更新
3.更新镜像
要更新镜像,首先要进入镜像,然后跟操作linux系统一样,进行软件依赖包的安装即可
比如以为为安装pip 安装apt-get install -y wget
安装pip wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip -V  #查看pip版本
在这边要特别注意安装scrapy时要先安装twisted,在安装twisted可能会报错,先安装gcc即可解决
apt-get install gcc 软件包全部安装完成之后退出进行
提交副本
docker commit -m="has update" -a="zhanghtt" e218edb10161 zhanghtt/scrapy:v2

  • -m:提交的描述信息
  • -a:指定镜像作者
  • e218edb10161:容器ID
  • zhanghtt/ubuntu:v2:指定要创建的目标镜像名

    但这样会生成多个镜像,如果可能尽量还是通过dokcerfile一次性构建镜像
    4.启动容器里面的服务 通过端口映射启动scrapyd docker run -p 6800:6800 -d scrapy:v4 scrapyd
  • -P :是容器内部端口随机映射到主机的高端口。
  • -p : 是容器内部端口绑定到指定的主机端口(前面的为映射的主机端口,后面的为容器里面的端口)。 使用docker port 查看端口映射情况

镜像保存为文件

除了从仓库中获取镜像外,我们还可以通过文件直接加载

  1. 首先把镜像保存为文件

    2.装载镜像
    可以在任何装 docker 的地方加载刚保存的镜像了

    此时镜像已经到了我们的本地仓库

小技巧

1.把该镜像的记录全部删除掉,如果删除所有镜像的记录,可以使用:docker ps -a|awk '{print $1}'|xargs docker rm
2.将主机文件负债到容器
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
3.进入容器 docker exec -it 775c7c9ee1e1

以上就是docker的最基础的用法

k8s

k8s简介

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

转载于:https://www.cnblogs.com/zhanghtt/p/10577626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值