2
2
3
3
### Docker简介
4
4
5
- 软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且可能在不同的环境下我们的软件需要依赖的其他软件包也是不一样的 。
5
+ 软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且在不同的环境下我们安装的软件需要依赖的软件包也是不一样的 。
6
6
7
7
那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢?
8
8
9
- 虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验没有想象中的那么好 。
9
+ 虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验并没有想象中的那么好 。
10
10
11
- Docker属于对Linux容器技术的一种封装(利用了Linux的namespace和cgroup技术),它提供了简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker就再也不用担心环境问题了。
11
+ Docker属于对Linux容器技术的一种封装(利用了Linux的namespace和cgroup技术),它提供了简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
12
12
13
13
![ ] ( ./res/docker_vs_vm.png )
14
14
@@ -31,7 +31,7 @@ uname -r
31
31
1 . 在CentOS下使用yum安装Docker并启动。
32
32
33
33
``` Shell
34
- yum -y install docker-io
34
+ yum -y install docker
35
35
systemctl start docker
36
36
```
37
37
@@ -42,68 +42,69 @@ docker version
42
42
docker info
43
43
```
44
44
45
- 3 . 运行Hello-World项目来测试Docker。第一次运行时由于本地没有hello-world的镜像因此需要联网进行下载。
46
-
47
- ``` Shell
48
- docker run hello-world
49
- ```
50
-
51
- 也可以先用下面的命令下载镜像,然后再来运行。
45
+ 3 . 下载镜像文件。
52
46
53
47
``` Shell
54
48
docker pull < name>
55
49
```
56
50
51
+ 例如:` docker pull hello-world ` 。
52
+
57
53
4 . 运行镜像文件。
58
54
59
55
``` Shell
60
56
docker run < image-id>
61
- docker run -p < port1> :< port2> < name>
62
57
```
63
58
64
- 6 . 查看镜像文件。
59
+ 例如:` docker run hello-world ` 。
60
+
61
+ 5 . 查看镜像文件。
65
62
66
63
``` Shell
67
64
docker image ls
68
65
docker images
69
66
```
70
67
71
- 7 . 删除镜像文件。
68
+ 6 . 删除镜像文件。
72
69
73
70
``` Shell
74
71
docker rmi < name>
75
72
```
76
73
77
- 8 . 查看正在运行容器。
74
+ 例如:` docker rmi fce289e99eb9 ` 。
75
+
76
+ 7 . 查看正在运行容器。
78
77
79
78
``` Shell
80
79
docker ps
81
80
```
82
81
83
- 9 . 停止运行的容器。
82
+ 8 . 停止运行的容器。
84
83
85
84
``` Shell
86
85
docker stop < container-id>
87
86
docker stop < name>
88
87
```
89
88
89
+ 例如:` docker stop hello-world ` 。
90
+
90
91
对于那些不会自动终止的容器,就可以用下面的方式来停止。
91
92
92
93
``` Shell
93
94
docker container kill < container-id>
94
95
```
95
96
96
- 在Ubuntu (内核版本3.10+)下面安装和启动Docker,可以按照如下的步骤进行。
97
+ 如果要在Ubuntu (内核版本3.10+)下面安装和启动Docker,可以按照如下的步骤进行。
97
98
98
99
``` Shell
99
100
apt update
100
101
apt install docker-ce
101
102
service docker start
102
103
```
103
104
104
- 在有必要的情况下 ,可以更换Ubuntu软件下载源来提升下载速度,具体的做法请参照 < https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ > 。
105
+ 如果需要 ,可以更换Ubuntu软件下载源来提升下载速度,具体请参照清华大学开源软件镜像站上的 [ 《Ubuntu镜像使用帮助》 ] ( < https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ > ) 。
105
106
106
- 安装Docker后,由于直接访问dockerhub下载镜像会非常缓慢,建议更换国内镜像,可以通过修改` /etc/docker/daemon.js ` 文件来做到。如果使用云服务器 (如:阿里云),通常云服务器提供商会提供默认的镜像服务器 ,并不需要手动进行指定。
107
+ 安装Docker后,由于直接访问dockerhub下载镜像会非常缓慢,建议更换国内镜像,可以通过修改 ` /etc/docker/daemon.js ` 文件来做到。云服务器 (如:阿里云)通常已经设置了默认的镜像服务器 ,并不需要手动进行指定。
107
108
108
109
``` JavaScript
109
110
{
@@ -118,7 +119,7 @@ service docker start
118
119
119
120
#### 安装Nginx
120
121
121
- 下面我们就基于Docker来运行一台HTTP服务器 ,我们选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要下面这条命令在Docker中创建一个容器即可 。
122
+ 下面我们就基于Docker来创建一台HTTP服务器 ,我们选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要使用下面的命令在Docker中创建一个容器即可 。
122
123
123
124
``` Shell
124
125
docker container run -d -p 80:80 --rm --name mynginx nginx
@@ -138,7 +139,7 @@ docker container cp /root/web/index.html mynginx:/usr/share/nginx/html
138
139
docker container run -d -p 80:80 --rm --name mynginx --volume $PWD /html:/usr/share/nginx/html nginx
139
140
```
140
141
141
- > 说明:上面创建容器和拷贝文件的命令中,` container ` 是可以省略的,也就是说` docker container run ` 和` docker run ` 是一样的,而` docker container cp ` 和` docker cp ` 是一样的。此外,命令中的` --volume ` 也可以缩写为` -v ` ,就如同` -d ` 是` --detach ` 的缩写,` -p ` 是` --publish ` 的缩写。` $PWD ` 代表宿主系统当前文件夹,这个用过Linux系统的人相信很容易理解 。
142
+ > 说明:上面创建容器和拷贝文件的命令中,` container ` 是可以省略的,也就是说` docker container run ` 和` docker run ` 是一样的,而` docker container cp ` 和` docker cp ` 是一样的。此外,命令中的` --volume ` 也可以缩写为` -v ` ,就如同` -d ` 是` --detach ` 的缩写,` -p ` 是` --publish ` 的缩写。` $PWD ` 代表宿主系统当前文件夹,这些对于用过Linux系统的人来说相信很容易理解 。
142
143
143
144
要查看运行中的容器,可以使用下面的命令。
144
145
0 commit comments