1 Docker简介
docker近几年非常火,因为它是容器虚拟化,更能够充分提高硬件资源的使用率。其实利用率高不算什么,它最大的优势是能给让运维人员或者开发人员快速部署和交付资源,大大提高了工作效率。几乎所有的大企业都在使用docker,所以我们没有理由不去了解它,不去学习它。https://yeasy.gitbooks.io/docker_practice/content/introduction/what.html (感觉还不错的docker电子书)
- 官网 www.docker.com
- 容器虚拟化,比传统的虚拟化轻量
- 使用go语言开发,基于apache2.0协议。
- 开源软件,项目代码在github维护。github https://github.com/docker/docker.github.io
- docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式。
- https://yeasy.gitbooks.io/docker_practice/content/introduction/why.html
- docker和传统的虚拟化比较
1. docker虚拟化
![1.png 4aaafa0e165c11ff7e6504d4af054a02.png-wh_]()
2. 传统的虚拟化
![2.png 95fd2c7f3d501910a444436ff673e237.png-wh_]()
也就是说,让我们创建一个新的虚拟机的时候,如果使用Vmware,首先我们需要分配一定的硬件资源去运行虚拟出来的系统,如果一台电脑例如我的win7 配置一般,也就顶多可以跑10个centos,但是如果使用Docker就可以创建成千上百个centos系统,且每个系统都是独立的,隔离开来的,硬件资源也是隔离开来的。这就是根本区别!
- docker优势
![3.png 07468961efd18950b91b6e57e3df9fef.png-wh_]()
1. 启动非常快,秒级实现
2. 资源利用率高,一台高配置服务器可以跑上千个docker容器
3. 更快的交付和部署,一次创建和配置后,可以在任意地方运行
4. 内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率
5. 易迁移,平台依赖性不强
- Docker核心概念
1. 镜像,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。
2. 容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。
3. 仓库,存放镜像的一个场所,仓库分为公开仓库和私有仓库。 最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com)
2安装Docker
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
[root@chy ~]
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1802 100 1802 0 0 772 0 0:00:02 0:00:02 --:--:-- 772
[root@chy ~]
[root@chy ~]
[root@chy ~]
root 20090 0.4 1.7 428548 26808 ? Ssl 01:39 0:00
/usr/bin/dockerd
root 20093 0.0 0.5 264032 7776 ? Ssl 01:39 0:00 docker-containerd -l unix:
///var/run/docker/libcontainerd/docke-containerd
.sock --metrics-interval=0 --start-timeout 2m --state-
dir
/var/run/docker/libcontainerd/containerd
--shim docker-containerd-shim --runtime docker-runc
root 20414 0.0 0.0 112664 976 pts
/0
R+ 01:39 0:00
grep
--color=auto docker
[root@chy ~]
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:41:23 2017
OS
/Arch
: linux
/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:49 2017
OS
/Arch
: linux
/amd64
Experimental:
false
[root@chy ~]
Chain INPUT (policy ACCEPT 150 packets, 10819 bytes)
pkts bytes target prot opt
in
out
source
destination
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt
in
out
source
destination
0 0 DOCKER-USER all -- * * 0.0.0.0
/0
0.0.0.0
/0
0 0 DOCKER-ISOLATION all -- * * 0.0.0.0
/0
0.0.0.0
/0
0 0 ACCEPT all -- * docker0 0.0.0.0
/0
0.0.0.0
/0
ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0
/0
0.0.0.0
/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0
/0
0.0.0.0
/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0
/0
0.0.0.0
/0
当我们配置完毕后,会自动帮我们创建如上的一些IPtables 规则,其目的就是不影响docker虚拟机的正常运行。(每次重启docker服务会自动把iptables规则添加上,所以不用担心删除)
|
3 镜像管理
- docker 由于在国外,国内限制比较大,所以我们一般会使用阿里云的加速器去下载一个镜像
- 配置docker加速器
|
1
2
3
4
5
6
7
|
[root@chy ~]
{
"registry-mirrors"
: [
"https://dhq9bx4f.mirror.aliyuncs.com"
]
}
说明:这个url为加速器地址,我们也可以直接到阿里云去申请也可以拿来这个使用。
[root@chy ~]
[root@chy ~]
|
- docker镜像管理的基本操作
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@chy ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest d123f4e55e12 9 days ago 197MB
[root@chy ~]
[root@chy ~]
[root@chy ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest d123f4e55e12 9 days ago 197MB
chylinux latest d123f4e55e12 9 days ago 197MB
查看设置的标签会发现改行的image
id
和centos的一样,类似于更换一个新名字再次展现出来
[root@chy ~]
[root@chy ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest d123f4e55e12 9 days ago 197MB
chylinux chy d123f4e55e12 9 days ago 197MB
chylinux latest d123f4e55e12 9 days ago 197MB
[root@chy ~]
6605c26e980579af355bd38cb1e45fa61d44e0a472f649be2e7bf8a322a1ac68
[root@chy ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6605c26e9805 centos
"/bin/bash"
About a minute ago Up About a minute sad_brahmagupta
[root@chy ~]
Untagged: chylinux:latest
[root@chy ~]
Untagged: chylinux:chy
|
4 通过容器创建镜像
- 刚刚只是说到了如何删除修改一些基础的操作,一旦镜像搭建好了,如何才能通过命令行进入系统呢?
- 进入到该容器中,我们做一些变更,比如安装一些东西,然后针对这个容器进行创建新的镜像
|
1
2
3
4
5
6
7
8
9
10
|
[root@6605c26e9805 /]
[root@6605c26e9805 /]
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 3184 bytes 10678749 (10.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2838 bytes 156894 (153.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
退出是ctrl+d
|
- 把我们刚刚制作的镜像保存成一个新的镜像,下次我们再次需要的时候就可以直接使用(不需要再次安装我们已经安装过的服务!)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@chy ~]
sha256:87dde0ff7187ea314deed8b1b934c0d3e4a75e24ad2a94ee9bdcf11acd0e8b41
[root@chy ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_with_net latest 87dde0ff7187 17 seconds ago 277MB
centos latest d123f4e55e12 9 days ago 197MB
[root@chy ~]
8b1dc20b6c75c85e29145e667ff96ccf93cdf9587d4584872b3c072392c1796d
[root@chy ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b1dc20b6c75 centos_with_net
"bash"
3 seconds ago Up 1 second compassionate_mestorf
6605c26e9805 centos
"/bin/bash"
28 minutes ago Up 28 minutes sad_brahmagupta
|
希望看过的童鞋多多指教,谢谢!![j_0063.gif]()
![j_0063.gif]()
本文转自我不是瘦子51CTO博客,原文链接http://blog.51cto.com/chy940405/1981377:,如需转载请自行联系原作者