Docker基础

Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。
镜像是一个类,而容器便是镜像创建的对象,一个镜像可以对应多个容器

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。

Docker 容器(Container)

容器是独立运行的一个或一组应用。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

 

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Windows下安装Docker 

http://www.runoob.com/docker/windows-docker-install.html

Docker容器的使用

Docker客户端

$ docker     查看所有命令

$ docker command --help 查看命令的详细用法
          例: $ docker stats --help

$ docker pull training/webapp    载入镜像
    docker run -d -P training/webapp python app.py  在后台运行(-d)webapp容器,并在容器里运行app.py程序,并将程序的端口映射到当前主机(-P)

$ docker ps  查看正在运行的容器
     container ID(容器唯一标识)     IMAGE(使用的镜像)    COMMAND(执行的命令)   .....    PORT(映射的端口号)

PORTS
0.0.0.0:32769->5000/tcp 表示容器的5000端口号映射到主机的32769端口上, 访问主机32769端口便能访问容器中的5000端口对应的程序

$ docker ps -l  查询最后一次创建的容器

$ docker run -d -p 5000:5000 trainning/webapp python app.py   修改端口映射(-p)

$ docker port  d3d5e39ed9d3    根据container ID 查看容器端口信息    这个ID不用全部输入完,只需要保证唯一就行
        >>> 5000/tcp -> 0.0.0.0:5000

$ docker port  容器名字         根据names查看容器端口信息

$ docker logs -f bf08b7f2cd89  查看容器内部的标准输出。-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

$ docker top [container ID或者NAMES]    查看容器内部运行的进程

 

$ docker inspec  查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker stop [ID或NAMES]   停止 WEB 应用容器

$ docker start [ID或NAMES]  启动容器

$ docker restart [ID或NAMES]   正在运行的容器,我们可以使用 docker restart 命令来重启

$ docker rm [ID或NAMES]          使用 docker rm 命令来删除不需要的容器
    tips:删除容器时,容器必须是停止状态,否则会报如下错误

Docker 镜像使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

下面我们来学习:

  • 1、管理和使用本地 Docker 主机镜像
  • 2、创建镜像 

docker images   列出本地主机上的镜像。

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

$ docker run -t -i  ubantu:15.10 /bin/bash   使用版本为15.10的ubuntu系统镜像来运行容器

$ docker run -t -i ubuntu:14.04 /bin/bash     使用版本为14.04的ubuntu系统镜像来运行容器
                   tips:当ubantu:14.04这个镜像不存在的时候,Docker就会自动下载这个镜像

$ docker pull ubuntu:14.04      下载一个新的镜像  pull前应该先登录,登录需要在hup.docker.com 去注册账号
    下载完成后,我们可以直接使用这个镜像来运行容器。

$ docker search httpd    查找names=httpd 的镜像

更新镜像,创建镜像

更新前,先用镜像创建一个容器

$ docker run -i -t ubantu:15.10 /bin/bash
    在容器内配置后,在容器内使用 apt-get update -------->使用exit 退出容器, 此时这个镜像已经被更改了  ,更新镜像
   $ docker commit -m="镜像描述" -a="镜像作者"  镜像ID 镜像names:tag         提交容器副本,创建一个新镜像

$ docker run -t -i runoob/ubantu:v2 /bin/bash   启动刚才创建的镜像

构建镜像   从零开始构建镜像

https://www.cnblogs.com/wenbronk/p/6387830.html详细

创建一个名为Dockerfile的文件

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7       使用哪个镜像源
MAINTAINER      Fisher "fisher@sudops.com"   

RUN     /bin/echo 'root:123456' |chpasswd     告诉docker在镜像内执行什么命令
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80 
CMD     /usr/sbin/sshd -D

$ docker build -t runoob/centos:6.7 .(这里有一个点)      构建一个镜像。 -t :指定要创建的目标镜像名

  $ docker tag 860c279d2fec runoob/centos:dev    为镜像添加一个新的标签。

 

Docker 容器连接

网络端口映射

$ docker run -d -P  training/webapp python app.py     -P :是容器内部端口随机映射到主机的高端口

$ docker run -d -p 5000:5000 training/webapp python app.py   -p : 是容器内部端口绑定到指定的主机端口。

$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py      指定容器绑定的网络地址,比如绑定 127.0.0.1。

这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。

docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py 绑定 UDP 端口

端口映射并不是唯一把 docker 连接到另一个容器的方法。
docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。
docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

docker run -d -P --name runoob training/webapp python app.py   --name为创建的容器命名, 当然,不用docker会自动对它进行命名

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值