Docker 指南
一、docker 介绍
1.1 引言
环境不一致
“我本地运行没问题啊?!”
多用户相互影响
“哪个哥们又写死循环了,怎么这么卡?!”
运维成本高
“淘宝双十一用户量暴增”
软件安装成本高
“学习一门技术,学习安装成本过高”
1.2 由来
一群年轻人创业,开了一家公司
- 2010年,专门做 PAAS 平台
- 2013年,因为亚马逊、微软、谷歌都开始做 PAAS 平台,便将公司核心技术(docker)对外开源
- 2014年,获得 C 轮融资,$4000W
- 2015年,获得 D 轮融资,$9500W
全神贯注维护 docker
创始人:所罗门,已经离开维护团队
1.3 思想
- 仓库(Repository):超级码头,存放集装箱
- 镜像(Image):集装箱
- 容器(Container):运行起来的镜像

集装箱
将所有需要的内容放到不同的集装箱中,需要什么环境取相应的集装箱即可
标准化
运输标准化
docker 有一个码头,所有上传集装箱都放在了这个码头上,当需要某个环境时,就去这个码头搬运相应集装箱
命令标准化
docker 提供一系列命令,帮助我们去操作集装箱
REST API:
衍生出很多的图形化界面,Rancher
隔离性
docker 在集装箱运行时,会在 Linux 内核中单独开辟一块空间,这片空间不会影响其他程序
二、docker 基本操作
2.1 安装
2.1.1 普通安装
2.1.1.1 下载 docker 依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
2.1.1.2 设置下载 docker 的镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.1.1.3 安装 docker
yum makecache fast
yum -y install docker-ce
2.1.2 自动化安装脚本
# 在测试或开发环境中 docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装
# 执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 docker CE 的 Edge 版本安装在系统中。
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
2.1.3 docker 设置开机自启与启动 docker
2.1.3.1 设置开机自启
systemctl enable docker
2.1.3.2 启动 docker
systemctl start docker
2.1.3.3 查看版本,测试是否安装成功
docker version
2.1.4 docker 建立 docker 用户组
2.1.4.1 建立 docker 组
sudo groupadd docker
2.1.4.2 将当前用户加入 docker 组
sudo usermod -aG docker $USER
2.1.5 docker 镜像加速
# 适用于 Ubuntu 16+、Debian 8+、CentOS 7+ 等使用 systemd 的系统
# 在 /etc/docker/daemon.json 中写入如下内容:
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
2.2 docker 中央仓库
2.2.1 官方的中央仓库:
2.2.2 国内的镜像:
网易云:https://c.163.com/hub#/home
阿里云:https://cr.console.aliyun.com
daoCloud:https://hub.daocloud.io (推荐使用)
2.2.3 私服的镜像:
# 公司内部会采取私服的方式拉取镜像(添加配置)
# 需要在 /etc/docker/daemon.json 配置
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["ip:port"] # 公司内部 docker 私服的 IP 和 PORT
}
# 重启两个服务
systemctl daemon-reload
systemctl restart docker
2.3 镜像操作
2.3.1 拉取镜像
docker pull mirrorname[:tag] # tag:版本
# 举几个栗子
docker pull nginx # 官方
docker pull hub.c.163.com/public/nginx:1.2.1 # 网易蜂巢
docker pull daocloud.io/library/nginx:1.13.1 # daoCloud
2.3.2 查看本地镜像
docker images
[root@VM-8-7-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 36 hours ago 133MB
hello-world latest bf756fb1ae65 10 months ago 13.3kB
2.3.3 删除本地镜像
docker rmi (IMAGEID)
2.3.4 镜像导入导出(不推荐)
# 导出本地镜像
docker save -o (path) (IMAGEID)
# 加载本地镜像
docker load -i (path/filename)
# 修改镜像名称
docker tag (IMAGEID) (REPOSITORY):(TAG)
# 结果
[root@VM-8-7-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
daocloud.io/library/nginx 1.13.1 c246cd3dd41d 3 years ago 107MB
[root@VM-8-7-centos ~]# docker save -o ./nginx.image c2
[root@VM-8-7-centos ~]# ll
total 108564
-rw------- 1 root root 111168512 Nov 26 21:03 nginx.image
[root@VM-8-7-centos ~]# docker rmi c2
Untagged: daocloud.io/library/nginx:1.13.1
Untagged: daocloud.io/library/nginx@sha256:83103ab203c0fdbb82d05966342d825ae37cb3f39d2594a353d8487f12cd3d71
Deleted: sha256:c246cd3dd41d35f9deda43609cdeaa9aaf04d3658f9c5e38aad25c4ea5efee10
Deleted: sha256:faff6e89a68845db6912629dd8b5647545f9198c5e312327a853508f25398c4d
Deleted: sha256:17634c028290a76bf93f15b178f7534cca4a38aede119fa760e319019a7bf9c7
Deleted: sha256:54522c622682789028c72c5ba0b081d42a962b406cbc1eb35f3175c646ebf4dc
[root@VM-8-7-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
[root@VM-8-7-centos ~]# docker load -i nginx.image
54522c622682: Loading layer 58.44MB/58.44MB
1c3fae42c500: Loading layer 52.7MB/52.7MB
87823f21b793: Loading layer 3.584kB/3.584kB
Loaded image ID: sha256:c246cd3dd41d35f9deda43609cdeaa9aaf04d3658f9c5e38aad25c4ea5efee10
[root@VM-8-7-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
<none> <none> c246cd3dd41d 3 years ago 107MB
[root@VM-8-7-centos ~]# docker tag c2 nginx:1.13.1
[root@VM-8-7-centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
nginx 1.13.1 c246cd3dd41d 3 years ago 107MB
2.4 容器操作
2.4.1 运行容器
# 简单操作
docker run (IMAGEID)|(REPOSITORY)[:TAG]
# 常用参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 (IMAGEID)|(REPOSITORY)[:TAG]
# -d:后台运行容器
# -p 宿主机端口:容器端口:为了映射当前 Linux 端口和容器的端口
# --name 容器名称:指定容器名称
# 结果
[root@VM-8-7-centos ~]# docker run -d -p 8080:8080 --name nginx c2
28e945812a31d0fa7803bdcf82c46c094fddc5e3dfe55ddee84a95e03086141f
2.4.2 查看容器
docker ps [-qa] # 查看运行容器
# -a:查看全部容器,包括没有运行的
# -q:只查看容器的标识
2.4.3 查看容器日志
docker logs -f 容器id
# -f 日志的最后几行
2.4.4 进入容器内部
docker exec -it 容器id bash # 进入
exit # 退出
# 结果
[root@VM-8-7-centos ~]# docker exec -it f5 bash
root@f553fb65d5ff:/# exit
exit
[root@VM-8-7-centos ~]#
2.4.5 停止容器
# 停止指定容器
docker stop 容器id
# 停止全部容器
docker stop $(docker ps -qa)
2.4.6 启动容器
docker start 容器id
2.4.7 删除容器(需先停止容器)
# 删除指定容器
docker rm 容器id
# 删除全部容器
docker rm $(docker ps -qa)
Docker 指南的更多相关文章
- 学习 Docker - 入门
Docker简介 一种虚拟容器技术. 一种虚拟化分方案: 操作系统级别的虚拟化: 只能运行相同或相似内核的操作系统: 依赖与linux内核特性:Namespace和Cgroups(Control Gr ...
- docker和kubernetes docker的区别
之前公司的测试环境,刚开始自己搭建虚拟机,然后安装redis,nginx,mq,mysql,tomcat,jdk,marven,还有jekins.前面些还算好点,jekins还是比较麻烦的.然后搭完以 ...
- Tensorflow從源碼編譯
从源代码构建 从源代码构建 TensorFlow pip 软件包并将其安装在 Ubuntu Linux 和 macOS 上.尽管这些说明可能适用于其他系统,但仅针对 Ubuntu 和 macOS 进行 ...
- CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
- 斌哥的 Docker 进阶指南
过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...
- Docker终极指南:为什么Docker能做这么多事
Docker终极指南:为什么Docker能做这么多事 http://www.aboutyun.com/thread-11499-1-1.html
- Docker 使用指南 (四)—— 数据卷的使用
一.数据卷的使用 有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据.数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...
- docker在CentOS7下部署指南
docker只支持CentOS7.x系统,所以近期根据docker官网指南自己搭建了一套,供大家参考. 1.部署Centos7.x系统,查看系统版本. 2.执行 sudo yum update 更新到 ...
随机推荐
- windows 查看内存
MEMORYSTATUSEX statex; statex.dwLength = sizeof (statex); GlobalMemoryStatusEx (&statex); _tprin ...
- 一个.NET Core下的开源插件框架
插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...
- 《<SPRING5高级编程(第5版)>_王净译》笔记-【目录】
第一次写这玩意,不知道什么时候能写完,今天项目比较近,期望年底能看完吧. 先定个小目标 20201228 完成 第1章 Spring介绍 第2章 入门 第3章 在Spring中引入IoC和DI 第4章 ...
- Css gray 无法覆盖IE10
网站变灰这个效果很常见,在我这里暂时没有找到最优解决方式, 先把今天的研究结果记录一下. 第一种方案 : 对所有静态资源文件进行灰度处理,得到新一个资源目录,例如asset_ori 原始资源 a ...
- JS生成限定整数区间范围内的随机整数
对于整数区间获取随机整数: m,n均为整数,且n>m. 获取[m,n)区间内的随机整数: 1 var aNumber = (n - m) * Math.random() + m; 2 var r ...
- Flink SQL Client综合实战
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- OpenCV之图像归一化(normalize)
什么图像归一化 通俗地讲就是将矩阵的值通过某种方式变到某一个区间内 图像归一化的作用 目前能理解的就是归一化到某个区间便于处理,希望高人可以指点 opencv文档中的介绍 C++: void norm ...
- 07 . 前端工程化(ES6模块化和webpack打包)
模块化规范 传统开发模式主要问题 /* 1. 命名冲突 2. 文件依赖 */ 通过模块化解决上述问题 /* 模块化就是把单独的一个功能封装在一个模块(文件)中,模块之间相互隔离, 但是可以通过特定的接 ...
- 说说基于网络的五种IO模型
# django不是一个异步框架 # tornado是异步的web框架 # 处理每秒大量的请求 # 个人理解的IO:就是应用层与内核驱动层的交互,这个过程无论从应用层到内核中,还是驱动层等待硬件层的数 ...
- Nacos服务发现源码解析
1.Spring服务发现的统一规范 Spring将这套规范定义在Spring Cloud Common中 discovery包下面定义了服务发现的规范 核心接口:DiscoveryClient 用于服 ...