Docker
- 1. Docker简介
- Docker中的基本概念
- Docker的应用场景
- Docker的优点
- 1. 快速、一致地交付应用程序
- 2. 响应式部署和扩展
- 3. 在同一硬件上运行更多工作负载
- 2. Docker的架构
- 3. Docker镜像加速
- Ubuntu14.04、Debian7Wheezy配置镜像加速
- Ubuntu16.04+、Debian8+、CentOS7
- 检查加速器是否生效
- 4. 使用Docker
- Docker Hello World
- 以交互式的方式启动容器
- 以后台模式启动容器
- last. Docker常用指令
- 1. 显示容器的全部信息
- 2. 查看某个容器的详细信息
- 3. 以终端的方式进入容器
- 4. 查看容器内的标准输出
- 5. 停止容器
- 6. 查看docker客户端的所有命令选项
- 7. 查看具体的docker命令的使用方法
- 8. 启动容器时指定容器的名称
- 9. 启动已停止的容器
- 10. 获取镜像
- 11. 停止一个容器
- 12. 列出镜像
1. Docker简介
Docker
是一个开源的应用容器引擎,基于Go
语言并遵从Apache2.0
协议开源。Docker
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux
机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。
Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux
主机。
Docker中的基本概念
- Registry
- 定义:存储和分发Docker镜像的服务,包括官方的Docker Hub、私有的或第三方的Registry。
- 作用:Registry允许用户上传、存储和检索Docker镜像,用户可以通过
docker push
和docker pull
命令与Registry交互。 - 类型:
* 官方Registry(Docker Hub):这是默认的公共Registry,可以在此找到大量的公共镜像。
* 私有Registry:企业或个人可以搭建自己的私有Registry,用于内部使用。
* 第三方Registry:第三方提供的Registry服务,如阿里云Docker Registry、Google Container Registry等。
- Repository
- 定义:Repository是一个命名空间,用于组织和管理一组相关的Docker镜像。每个Registory可以包含多个不同标签(tag)的镜像版本。
- 作用:Repository允许用户针对特定的应用程序或服务组织多个版本的镜像。例如,一个名为nginx的repository可能包含了多个版本的Nginx镜像,如nginx:latest,nginx:1.15.12等。
- 结构:Repository通常以registry/repository的形式表示,例如docker.io/libary/nginx表示Docker Hub上的nginx Repository。
- Image(镜像):Image相当于一个root文件系统,比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。
- Container(容器):Container是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
镜像和容器的关系就像面向对象程序设计中类和实例的一样。
Docker的应用场景
- Web应用的自动化打包和发布
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其它的后台应用。
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker的优点
1. 快速、一致地交付应用程序
Docker
允许开发人员使用提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。容器非常适合持续集成和持续交付(CI/CD)工作流程。
2. 响应式部署和扩展
Docker
是基于容器的平台,允许高度可移植的工作负载。Docker容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker
的可移植性和轻量级的特性,还可以轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3. 在同一硬件上运行更多工作负载
Docker
轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案。Docker非常适合于高密度环境以及中小型部署,可以用更少的资源做更多的事情。
2. Docker的架构
Docker为典型的C/S架构模式,使用远程API来进行一系列的操作。
3. Docker镜像加速
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云加速器:https://reg-mirror.qiniu.com
。。。。。。
配置了某个加速器地址后,如果拉取不到镜像,切换另一个重试。可以多配置几个镜像,如果有不能使用的,会自动切换到可以使用的镜像拉取
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
Ubuntu14.04、Debian7Wheezy配置镜像加速
对于使用upstart的系统而言,编辑/etc/default/docker文件,在其中的DOCKER_OPTS中配置加速器地址:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
重新启动服务:
sudo service docker restart
Ubuntu16.04+、Debian8+、CentOS7
对于使用systemd的系统,在/etc/docker/daemon.json中写入如下内容(如果文件不存在新建即可)
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
重新启动服务
sudo systemctl daemon-reload
sudo systemctl restart docker
检查加速器是否生效
docker info 输出如下信息说明配置成功:
Registry Mirrors:https://reg-mirror.qiniu.com
4. 使用Docker
Docker Hello World
使用docker run
命令启动一个容器。
docker run ubuntu:15.10 /bin/echo 'hello world'
指令解释:以ubuntu:15.10镜像创建一个新容器,然后在容器中执行/bin/echo 'hello world'。如果不指定镜像的tag,docker将会使用标签为latest的镜像
以交互式的方式启动容器
docker run -i -t ubuntu:15.10 /bin/bash
参数说明:
- -i:使容器的标准输入保持打开,允许与容器进行交互
- -t:在新容器内指定一个伪终端或终端
- /bin/bash:指定启动容器时要运行的命令。/bin/bash即启动一个Bash shell
执行这条命令docker会做以下几件事情:
1.拉取镜像:如果本地没有Ubuntu 15.10的镜像,Docker会从Docker Hub下载这个镜像
2.启动镜像:使用指定的镜像启动一个新的容器
3.进入Bash shell:在容器内启动一个交互式的Bash shell
可以使用exit
或CTRL + D
来退出容器
以后台模式启动容器
docker run -d ubuntu:15.10 /bin/sh -c 'while true; do echo hello world; sleep 1; done'
指令解释:启动一个后台运行的Ubuntu 15.10容器,并在容器内执行一个循环命令,每隔一秒输出一次'hello world'
参数解释
- -d:在后台运行容器,不会阻塞当前终端
- /bin/sh -c:-c表示后面跟着的字符串将作为命令执行
last. Docker常用指令
1. 显示容器的全部信息
docker ps -a --no-trunc
CONTAINER_ID:容器ID
IMAGE:使用的镜像
COMMAND:启动容器时运行的命令
CREATED:容器的创建时间
STATUS:容器的状态
容器的状态分为以下几种
- created 已创建
- restarting 重启中
- running或Up 运行中
- removing 迁移中
- paused 暂停
- exited 停止
- dead 死亡
PORTS:容器的端口信息和使用的连接类型(tcp/udp)
NAMES:自动分配的容器名称
2. 查看某个容器的详细信息
docker inspect containerId
3. 以终端的方式进入容器
docker attach containerId
注:如果从容器退出,会导致容器停止
docker exec -it containerId /bin/bash
4. 查看容器内的标准输出
docker logs containerName/containerId
5. 停止容器
docker stop containerName/containerId
6. 查看docker客户端的所有命令选项
docker
7. 查看具体的docker命令的使用方法
docker command --help
8. 启动容器时指定容器的名称
docker run -itd --name ubuntu-test ubuntu /bin/bash
通过--name指定容器的名称
9. 启动已停止的容器
docker start containerId
10. 获取镜像
docker pull imageName
11. 停止一个容器
docker stop containerId
12. 列出镜像
docker images输出信息说明:
* REPOSITORY:镜像的仓库源
* TAG:镜像的标签
* IMAGE ID:镜像ID
* CREATED:镜像的创建时间
* SIZE:镜像的大小