docker学习(07-12 in 汉得)

docker学习

https://download.docker.com/mac/stable/Docker.dmg mac docker 下载

Why docker?

不是虚拟硬件的虚拟机,高效启动快环境一致性可以定制CI/CD迁移轻松更轻松的维护和扩展

基本概念

镜像( Image)容器( Container)仓库( Repository)

Docker 镜像

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文 件外,还包含了一些为运行时准备的一些配置参数( 如匿名卷、环境变量、用户等) 。镜像 不包含任何动态数据,其内容在构建之后也不会被改变。

镜像时分层存储的

每一层相当于一个虚拟机的“快照”,

Docker 容器

镜像( Image) 和容器( Container) 的关系,就像是面向对象程序设计中的 类 和 实例 一 样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、 暂停等。

前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层, 在其上创建一个当前容器的存储层

容器不应该向其存储层内写入任何数据,容器存储层要保持无 状态化。所有的文件写入操作,都应该使用 数据卷( Volume) 、或者绑定宿主目录,在这些 位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

数据卷

数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可 以随意删除、重新 run ,数据却不会丢失。

仓库

Docker Registry是一个集中的存储、分发镜像的服务。 一个 Docker Registry 中可以包含多个仓库( Repository) ;每个仓库可以包含多个标签 ( Tag) ;每个标签对应一个镜像。

以 Ubuntu 镜像 为例, ubuntu 是仓库的名字,其内包含有不同的版本标签,如, 14.04 , 16.04 。我们可以通过 ubuntu:14.04 ,或者 ubuntu:16.04 来具体指定所需哪个版本的镜 像。如果忽略了标签,比如 ubuntu ,那将视为 ubuntu:latest 。

docker hub

docker hub是最常使用的 Registry 公开服务是官方的,这也是默认的 Registry,并拥有大量的 高质量的官方镜像。

使用汉得docker镜像

获取镜像

虽然这两天没有外网,但是我们可以使用汉得内部的镜像,用docker pull registry.saas.hand-china.com/tools/ubuntu:14.04可以拉取镜像到本地

运行镜像

docker run -it --rm registry.saas.hand-china.com/tools/ubuntu:14.04 bash

简要的说明 一下上面用到的参数。

-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。–rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容 器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果, 不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。registry.saas.hand-china.com/tools/ubuntu:14.04 :这是指用 registry.saas.hand-china.com/tools/ubuntu:14.04 镜像为基础来启动容器。bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。

定制一个 Web 服务器

首先用docker启动一个服务器 docker run –name webserver -d -p 80:80 registry.saas.hand-china.com/tools/nginx 因为我们使用的是Docker Toolbox需要使用虚拟机地址才能访问到服务器 可以使用 http://192.168.99.100/ 打开

我们可以使用 docker exec 命令进入容器,修改其内容。

docker常用命令

列出已经下载下来的镜像

docker images

查看docker进程

docker-machine ls

创建alias

alias dm=docker-machine

切换到某一个docker-machine

dm env test

关闭一个dm,不要强制关机

dm stop

打开一个dm

dm start

这里有一个比较快的镜像 daocloud,和官方镜像是一模一样的,改个名就可以和官网下的一样的使用。 daocloud

拉取一个镜像

docker pull registry.saas.hand-china.com/tools/nginx:latest

首先用docker启动一个服务器

docker run --name webserver -d -p 8080:80 registry.saas.hand-china.com/tools/nginx

因为我们使用的是Docker Toolbox需要使用虚拟机地址才能访问到服务器 可以使用 http://192.168.99.100/ 打开

进入这个容器 因为我们使用的是windows里的git bash,直接运行提示我们要加winpty,加上即可

winpty docker exec -it webserver //bin/bash

最常用的docker命令

docker pull                    #拉取一个镜像
docker run                     #运行一个镜像
docker exec                    #运行
docker ps                      #列出正在运行的docker进程
docker kill                    #杀死一个docker进程
docker images                  #列出所有镜像
docker push                    #把镜像提交
docker tag                     #给镜像打标签

使用Dockerfile构建hello docker

首先在一个目录里新建一个Dockerfile内容如下

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

然后执行

docker build -t nginxtest .

会build一个叫nginxtest的image 可以通过docker images查看

然后运行这个镜像

docker run -d -p 80:80 nginxtest

访问运行docker的docker-machine的80端口就可以看到Hello, Docker!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值