一、入门介绍

Docker是一个开源引擎,类似于一个集装箱,开发者通过它可以为任何应用创建一个轻量级、环境无关可移植的容器。开发者在本地编译测试过的容器可以在不同的环境中部署。

通常适用于如下场景:

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

Docker系统组成

docker服务端+docker客户端
docker服务端:一个后台的服务进程,负责管理所有的容器
docker客户端:docker服务端的远程控制器,负责控制docker的服务端进程
大部分情况下docker服务端和客户端运行在同一台机器

docker镜像与docker容器的关系

docker镜像是用于创建docker容器的模板,两者的关系类似于对象与类的关系

Docker镜像(Images) : 用于创建docker容器的模板
Docker容器(Container): 一组封装了应用及其所需环境的沙箱,可以移植到其他平台,环境无关
Docker客户端(Client): 通过命令行或者其他工具使用Docker API与Docker的守护进程(即服务端)通信
Docker主机(Host):一个物理或者虚拟的机器用于执行Docker守护进程与容器
Docker仓库(Registry): Docke仓库用于保存镜像,可以理解为代码控制中的代码仓库,Docker Hub(https://hub.docker.com)提供了庞大的镜像集合供我们使用
Docker Machine : Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行,可在相应的平台安装Docker

二、Docker安装
1)MacOS环境安装docker
MacOS下安装方式有两种
Homebrew安装
1 - 首先,我们需要安装Homebrew这款包管理工具,在终端执行以下命令xcode-select --install;
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"下载
2 - 执行brew cask install docker安装docker
3 - 载入Docker点击Next输入macOS密码

2)手动下载安装

1 - 下载链接https://download.docker.com/mac/stable/Docker.dmg
2 - 下载成功点击图标,在安装成功的界面,点击”Got it!“关闭窗口
第一次使用docker需要到cloud.docker.com网站注册一个账号

三、docker配置国内镜像源

因为使用Docker需要从官方获取镜像,网络传输非常耗时经常发生断线,因此最好配置国内镜像源拉取镜像速度可以得到极大的提升。
国内镜像源列表
DaoCloud: http://fab34f18.m.daocloud.io(需要先注册账号然后获取自己的加速地址)
网易加速器: http://hub-mirror.c.163.com
官方中国加速器: https://registry.docker-cn.com
ustc的镜像:https://docker.mirrors.ustc.edu.cn

三、Docker的基本命令

镜像操作

1 - 从docker hub官方镜像仓库拉取镜像
docker pull busybox:latest

2 - 推送本地镜像到镜像仓库
1)docker tag busybox daocloud.io/weidai_zm/busybox:latest
latest:版本
daocloud.io/weidai_zm/: 远程仓库
busybox: 本地镜像
2)docker push daocloud.io/weidai_zm/busybox:latest

3 - 查看本地镜像列表
docker images

4 - 查找镜像仓库的某个镜像
docker search centos/nginx

5 - 查看构建镜像所用过的命令
docker history busybox:latest

6 - 删除镜像
docker rmi busybox:latest

容器操作

container为容器创建时指定的name或者系统分配的name
1 - 创建并启动容器,创建交互式伪终端
docker run -it busybox
2 - 创建并启动测试容器(容器在后台运行)
docker run -d busybox
3 - 创建容器但是不运行它
docker create --name mybusybox busybox

4 - 在运行的容器中执行命令
docker exec -it container echo 'hello'

5 - 连接到正在运行的中的容器
docker attach --sig-proxy=false container

6 - 删除一个或者多个容器
docker rm [OPTION] container1[...containerN]
OPTION说明:
-f: 通过SIGKILL信号强制删除一个运行中的容器
docker rm -f db
-l: 移除容器间的网络连接,而非容器本身
eg: docker rm -l db
db - 连接名
-v: 移除与容器,并删除容器挂载的数据卷
eg: docker rm -v busybox

7 - 杀掉一个正在运行中的容器
docker kill -s KILL mybusybox

8 - 启动一个或者几个已经被停止的容器

docker start container

9 - 停止一个运行中的容器

docker stop container

10 - 重启容器

docker restart container

11 - 暂停容器中的所有进程

docker pause container

12 - 恢复容器中的所有进程

docker unpause container

获取容器相关信息

1 - 显示状态为运行的容器

docker ps
2 - 显示所有容器,包括运行中(Up)和退出的(Exited)

docker ps -a

3 - 深入容器内部获取容器的所有信息,获取特定信息

docker inspect container

根据元数据结构命令如下:

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container #获取容器IP地址

4 - 查看容器的日志

docker logs  container

Docker入门教程的更多相关文章

  1. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  2. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  3. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  4. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  5. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  6. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  7. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

  8. Docker入门教程(二)命令

    Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...

  9. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

  10. Docker(一):Docker入门教程

    如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...

随机推荐

  1. SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.

    SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...

  2. ELK原理与介绍

    为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办 ...

  3. springMVC的配置与使用

    springMVC的配置与使用 spring mvc 核心类与接口 先来了解一下,几个重要的接口与类.现在不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础. DispatcherServ ...

  4. Maskrcnn遇到的坑

    第一个要讲maskrcnn 中keras 升到2.1 然后 在线程问题上要把workers设置成1,是否使用线程设置成false 然后调用模型的时候要把模型和加载文件放到一个目录下

  5. AngelToken——富有价值的区块链服务平台

    关于我们 Angel Token,简称ANG,是基于ETH代币的去中心化数字交易平台. 行业现状 截至2017年12月,全球数字货币总市值已经触及6000亿美元.而2016年12月31日,这个数字才仅 ...

  6. hdu1098

    Ignatius is poor at math,he falls across a puzzle problem,so he has no choice but to appeal to Eddy. ...

  7. v模拟器(华为、H3C)点滴

    华为模拟器:eNSP V100R002C00B500 安装问题: 1)环境为WIN10,64位专业版 2)安装完成后可以打开界面,但是新建一个设备后,打不开,一直不停的#号 3)解决:手工点击Virt ...

  8. iSlide——智能图表的用法

    iSlide中有一个“智能图表”功能,用于制作漂亮.明了的图表.单击“智能图表”,会弹出一个对话框.从中,可以选择权限.分类和数量级,也可以直接搜索. 实战: 我想做一个全班不同年级近视人数的统计报, ...

  9. SQL Server数据库开发的二十一条军规

    如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS).在这 ...

  10. 开发一个简单的chrome插件-解析本地markdown文件

    准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs. ...