一、 引入
有开发经验的都知道,几乎每种技术都有一个吉祥物代表。那么Docker的吉祥物是怎么样的呢? 下图我们可以看到Docker是一个小鲸鱼,他的上面运载者许多货物。
![cf85fb6e74fe41bd9352be36850a2595.png](https://i-blog.csdnimg.cn/blog_migrate/a56c6d9cc004f463378999a514cd696f.jpeg)
二、快速入门
2.1 我为什么要用Docker
那么,Docker究竟是什么东西来的呢?Docker由 Go 语言编写,是一个免费开源的开放平台,可以运行在多个主流平台。Docker 可以用于开发应用、交付应用、运行应用。简单来说,Docker就像一个Linux里面的Linux。那么我们为什么需要使用Docker,因为Linux在使用代价高,配置麻烦。一般我们使用Linux服务器需要向阿里、腾讯购买,是不是。不过,如果可以的话我们更喜欢白嫖。
因此,Docker的出现就可以解决这个痛点了。只要你有想法,你可以在Linux服务器里面安装上Docker,然后在Docker里面装多个Linux`服务器。
![d2410b8a0e1bb1414b888a451d4bbca9.png](https://i-blog.csdnimg.cn/blog_migrate/181f7b715e2b4a93400aad85e199e69f.jpeg)
由于Docker具有隔离性 ,我们无需担心多个Linux会互相影响(串味)。
另外的优点是,当我们安装组件的时候,在Linux上面很麻烦,在Docker上面可以更快配置组件。我们还可以编写Dockerfile脚本,实现生产环境与开发环境同步配置的目的。
2.2 Docker原理
我们在Linux里安装Docker,其实跟我们以前在Windows里安装虚拟机一样。Docker利用了Linux服务器的物理特性,就像病毒一样,寄生在服务器里面。
2.3 一些名字解释
Docker有一些名词:镜像、容器、Dockerfile、Docker Hub。
Docker Hub就像我们使用的github。里面有各种各样的镜像。其中有分为官方和非官方,我们在拉取的时候当然是选择官方啦。
![4a5796136a75ce954827132ace7aa027.png](https://i-blog.csdnimg.cn/blog_migrate/d2cfb8cdf51e48354059cec25bb0cd44.jpeg)
在我们拉去镜像回Docker后,我们就可以运行了,就像快递到家了,我们需要手撕他。然后镜像就变成了容器。
另外我们也可以通过Dockerfile将本地应用变成镜像。
至于Docker Compose,就是我们运行镜像的时候,需要编写一大推命令,而Docker Compose可以以yml文本形式快速运行镜像,做到一次编写,处处运行。
![9c2ec7cc116e2c56ffb20c01add39cc4.png](https://i-blog.csdnimg.cn/blog_migrate/3d354997407e1a9c66ef52a3ecbe3951.jpeg)
三、安装Docker
我们可以在各个平台安装运行Docker。在这里,我演示的是Linux平台。
Copy# 1、 yum 包更新到最新yum update# 2、安装需要的软件包, yum-utils 提供yum-config-manager功能, 另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data 1vm2# 3、设置yum源yum-config-manager -- add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4、安装docker,出现输入的界面都按 yyum install -y docker-ce# 5、查看docker版本,验证是否验证成功docker -V
安装成功后显示
![9ddd19be5e0d0622894395639724dfcb.png](https://i-blog.csdnimg.cn/blog_migrate/8f454d813be7001313d73b15730f5960.jpeg)
当然由于众所周知的原因,我们的Docker需要进行加速,不然就得忍受蜗牛般的速度。因此,我推荐阿里云的Docker容器镜像加速配置。
四、常用命令
docker作为一个类Linux平台,自然也有命令行操作。当然,不喜欢命令行操作,推荐可以使用界面操作portainer组件。
![3eac69d1f77b01f17cf4968f3ce75825.png](https://i-blog.csdnimg.cn/blog_migrate/a002ec4f79fff04c79f46581dca9849a.jpeg)
1. 启动、停止
Copy# 启动 service docker start# 停止service docker stop
2. 查看版本
Copydocker -v
这里我们最好安装1.3以上版本
3. 搜索镜像
Copydocker search jdk
![16b5e7ea89b1e3cf99a553ddb6a7347c.png](https://i-blog.csdnimg.cn/blog_migrate/f7de4af506d850046d38c859024e29ef.jpeg)
4. 拉取镜像
Copydocker pull 镜像名
5. 查看镜像
Copydocker images
![5345d61182437b4884deb88d33d39a7b.png](https://i-blog.csdnimg.cn/blog_migrate/93fdb373df25d0024e74f97083e20e51.jpeg)
6. 运行镜像
Copydocker run -p 8083:8083 springio/gs-spring-boot-docker
前面端口是服务器端口,后面是Docker暴露的端口,这里映射端口的目的是为了我们可以远程访问到Docker里面的容器。端口不一定相同。
可选参数
Copy-d # Run container in background and print container ID:后台运行以及打印容器id-v #挂载容器目录到宿主机(服务器),达到修改宿主机文件同步到容器文件目的
7.删除镜像
Copydocker rmi 镜像id
8.查看运行容器
Copydocker ps
![c5d7569d36c2862bb747caf545a20325.png](https://i-blog.csdnimg.cn/blog_migrate/35edbd45d5a5625c2a5808668c8a3867.jpeg)
9.查看全部容器包括,没有运行
Copydocker ps -a
10.删除容器
Copydocker rm 容器id
11.查看容器运行日志
Copydocker logs 容器id
12.进入容器内部,命令行界面
Copydocker exec -it 容器id /bin/bash
我们在启动容器的过程,可能会碰到容器启动失败的情况。
五、Nginx
1.搜索Nginx
![94cf39a9fb4cb558032813aa17f23871.png](https://i-blog.csdnimg.cn/blog_migrate/054b4353e7a068430567460105082626.jpeg)
2.拉去Nginx镜像
![418d7dadca8427fbd8a6728604a6c50c.png](https://i-blog.csdnimg.cn/blog_migrate/6143cbe24cd0cba5c4e989c8d529add9.jpeg)
3.运行Nginx镜像
Copydocker run --name my_nginx-d -p 8081:80 -v /srv/web/logs:/var/log/nginx -v /srv/web/conf/nginx.conf:/etc/nginx/nginx.conf-v /srv/web/conf/default.conf:/etc/nginx/conf.d/default.conf-v /srv/web/html:/usr/share/nginx/htmldocker.io/nginx
说明
--name my_nginx 把容器起一个名字
-d 后台运行
-p 8081:80 将容器80端口映射到宿主机(服务器)8081端口
-v /srv/web/logs:/var/log/nginx挂载目录, " : "前面是宿主机目录,后面是容器文件目录
docker.io/nginx 原来镜像名字
4.查看Nginx容器
Copydocker ps
![e61ba40ca59116d4966bfb2fd2384e1f.png](https://i-blog.csdnimg.cn/blog_migrate/af23288eb20104e7467538573bb032b8.jpeg)
六、实例之部署SpringBoot
1. 编写代码
Copypackage com.example.demo2;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.stereotype.Service;@SpringBootApplicationpublic class Demo2Application { public static void main(String[] args) { E e = (E) SpringApplication.run(Demo2Application.class, args).getBean("ss"); e.test(); } @Service(value = "ss") class E { public void test() { System.out.println("service1111111"); } }}
2. 打包jar
Copymvn clean package -Dmaven.test.skip=true
在target目录找到jar,重名lsb-helloworld
3. 编写Dockerfile文件
CopyFROM docker.io/adoptopenjdk/openjdk8COPY lsb-helloworld.jar app.jarENTRYPOINT ["java","-jar","/app.jar"]
然后将jar和Dockerfile文件上传到Linux服务器的同一目录
4. 运行Dockerfile文件
Copydocker build -t springio/gs-spring-boot-docker .
生成名为springio/gs-spring-boot-docker的镜像
5. 运行镜像
Copydocker run -p 8083:8083 springio/gs-spring-boot-docker
![d37e14d06c3e66e5b00b3b9566ca8fc9.png](https://i-blog.csdnimg.cn/blog_migrate/7b95f556ace5e84309e9820112571d91.jpeg)
作者: 布尔bl
出处:https://www.cnblogs.com/chenzhuantou/p/12856021.html