|
@@ -2,13 +2,13 @@
|
|
|
|
|
|
|
|
### Docker简介
|
|
### Docker简介
|
|
|
|
|
|
|
|
-软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且可能在不同的环境下我们的软件需要依赖的其他软件包也是不一样的。
|
|
|
|
|
|
|
+软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且在不同的环境下我们安装的软件需要依赖的软件包也是不一样的。
|
|
|
|
|
|
|
|
那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢?
|
|
那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢?
|
|
|
|
|
|
|
|
-虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验没有想象中的那么好。
|
|
|
|
|
|
|
+虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验并没有想象中的那么好。
|
|
|
|
|
|
|
|
-Docker属于对Linux容器技术的一种封装(利用了Linux的namespace和cgroup技术),它提供了简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker就再也不用担心环境问题了。
|
|
|
|
|
|
|
+Docker属于对Linux容器技术的一种封装(利用了Linux的namespace和cgroup技术),它提供了简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
|
|
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
@@ -31,7 +31,7 @@ uname -r
|
|
|
1. 在CentOS下使用yum安装Docker并启动。
|
|
1. 在CentOS下使用yum安装Docker并启动。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
-yum -y install docker-io
|
|
|
|
|
|
|
+yum -y install docker
|
|
|
systemctl start docker
|
|
systemctl start docker
|
|
|
```
|
|
```
|
|
|
|
|
|
|
@@ -42,58 +42,59 @@ docker version
|
|
|
docker info
|
|
docker info
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-3. 运行Hello-World项目来测试Docker。第一次运行时由于本地没有hello-world的镜像因此需要联网进行下载。
|
|
|
|
|
-
|
|
|
|
|
-```Shell
|
|
|
|
|
-docker run hello-world
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
-也可以先用下面的命令下载镜像,然后再来运行。
|
|
|
|
|
|
|
+3. 下载镜像文件。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker pull <name>
|
|
docker pull <name>
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+例如:`docker pull hello-world`。
|
|
|
|
|
+
|
|
|
4. 运行镜像文件。
|
|
4. 运行镜像文件。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker run <image-id>
|
|
docker run <image-id>
|
|
|
-docker run -p <port1>:<port2> <name>
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-6. 查看镜像文件。
|
|
|
|
|
|
|
+例如:`docker run hello-world`。
|
|
|
|
|
+
|
|
|
|
|
+5. 查看镜像文件。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker image ls
|
|
docker image ls
|
|
|
docker images
|
|
docker images
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-7. 删除镜像文件。
|
|
|
|
|
|
|
+6. 删除镜像文件。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker rmi <name>
|
|
docker rmi <name>
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-8. 查看正在运行容器。
|
|
|
|
|
|
|
+例如:`docker rmi fce289e99eb9` 。
|
|
|
|
|
+
|
|
|
|
|
+7. 查看正在运行容器。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker ps
|
|
docker ps
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-9. 停止运行的容器。
|
|
|
|
|
|
|
+8. 停止运行的容器。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker stop <container-id>
|
|
docker stop <container-id>
|
|
|
docker stop <name>
|
|
docker stop <name>
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+例如:`docker stop hello-world`。
|
|
|
|
|
+
|
|
|
对于那些不会自动终止的容器,就可以用下面的方式来停止。
|
|
对于那些不会自动终止的容器,就可以用下面的方式来停止。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker container kill <container-id>
|
|
docker container kill <container-id>
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-在Ubuntu(内核版本3.10+)下面安装和启动Docker,可以按照如下的步骤进行。
|
|
|
|
|
|
|
+如果要在Ubuntu(内核版本3.10+)下面安装和启动Docker,可以按照如下的步骤进行。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
apt update
|
|
apt update
|
|
@@ -101,9 +102,9 @@ apt install docker-ce
|
|
|
service docker start
|
|
service docker start
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-在有必要的情况下,可以更换Ubuntu软件下载源来提升下载速度,具体的做法请参照<https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/>。
|
|
|
|
|
|
|
+如果需要,可以更换Ubuntu软件下载源来提升下载速度,具体请参照清华大学开源软件镜像站上的[《Ubuntu镜像使用帮助》](<https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/>)。
|
|
|
|
|
|
|
|
-安装Docker后,由于直接访问dockerhub下载镜像会非常缓慢,建议更换国内镜像,可以通过修改`/etc/docker/daemon.js`文件来做到。如果使用云服务器(如:阿里云),通常云服务器提供商会提供默认的镜像服务器,并不需要手动进行指定。
|
|
|
|
|
|
|
+安装Docker后,由于直接访问dockerhub下载镜像会非常缓慢,建议更换国内镜像,可以通过修改 `/etc/docker/daemon.js` 文件来做到。云服务器(如:阿里云)通常已经设置了默认的镜像服务器,并不需要手动进行指定。
|
|
|
|
|
|
|
|
```JavaScript
|
|
```JavaScript
|
|
|
{
|
|
{
|
|
@@ -118,7 +119,7 @@ service docker start
|
|
|
|
|
|
|
|
#### 安装Nginx
|
|
#### 安装Nginx
|
|
|
|
|
|
|
|
-下面我们就基于Docker来运行一台HTTP服务器,我们选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要下面这条命令在Docker中创建一个容器即可。
|
|
|
|
|
|
|
+下面我们就基于Docker来创建一台HTTP服务器,我们选择用Nginx来搭建该服务,因为Nginx是高性能的Web服务器,同时也是做反向代理服务器的上佳选择。要做到这件事情,只需要使用下面的命令在Docker中创建一个容器即可。
|
|
|
|
|
|
|
|
```Shell
|
|
```Shell
|
|
|
docker container run -d -p 80:80 --rm --name mynginx nginx
|
|
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
|
|
|
docker container run -d -p 80:80 --rm --name mynginx --volume $PWD/html:/usr/share/nginx/html nginx
|
|
docker container run -d -p 80:80 --rm --name mynginx --volume $PWD/html:/usr/share/nginx/html nginx
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-> 说明:上面创建容器和拷贝文件的命令中,`container`是可以省略的,也就是说`docker container run`和`docker run`是一样的,而`docker container cp`和`docker cp`是一样的。此外,命令中的`--volume`也可以缩写为`-v`,就如同`-d`是`--detach`的缩写,`-p`是`--publish`的缩写。`$PWD`代表宿主系统当前文件夹,这个用过Linux系统的人相信很容易理解。
|
|
|
|
|
|
|
+> 说明:上面创建容器和拷贝文件的命令中,`container`是可以省略的,也就是说`docker container run`和`docker run`是一样的,而`docker container cp`和`docker cp`是一样的。此外,命令中的`--volume`也可以缩写为`-v`,就如同`-d`是`--detach`的缩写,`-p`是`--publish`的缩写。`$PWD`代表宿主系统当前文件夹,这些对于用过Linux系统的人来说相信很容易理解。
|
|
|
|
|
|
|
|
要查看运行中的容器,可以使用下面的命令。
|
|
要查看运行中的容器,可以使用下面的命令。
|
|
|
|
|
|