Docker 快速上手指南

代码星冰乐

专注成就未来

首页 归档 关于

Docker 快速上手指南

Nov 23, 2018 | haifeiWu | Java | 阅读
文章目录
  1. 1. Docker 是什么?
  2. 2. Docker 怎么用?
    1. 2.1. 卸载旧版本的 Docker
    2. 2.2. 安装 Docker CE
      1. 2.2.1. 设置 REPOSITORY
      2. 2.2.2. 安装 Docker CE
  3. 3. 卸载 Docker CE
  4. 4. Maven 构建 Spring Boot 的 Docker 镜像
    1. 4.1. 构建项目,修改配置
      1. 4.1.1. 修改 pom 文件
      2. 4.1.2. 添加 Dockerfile
    2. 4.2. 构建 构建 Spring Boot 的 Docker 镜像
  5. 5. 小结
  6. 6. 参考链接

作 者:haifeiWu
原文链接:https://www.hchstudio.cn/article/2018/5a3c/
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。


由于版权原因,请阅读原文 --> Docker 快速上手指南

关注我们

作 者:haifeiWu
原文链接:https://www.hchstudio.cn/article/2018/5a3c/
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

作 者:haifeiWu
原文链接:https://www.hchstudio.cn/article/2018/5a3c/
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

Docker 听其大名已久,但总是疏于操练,今天准备好好搞一下。
docker

Docker 是什么?

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

Docker 怎么用?

本文安装 Docker 是基于 CentOS7 ,其他系统的小伙伴请直接转官网的 quick start.

卸载旧版本的 Docker

较旧版本的 Docker 被称为 docker 或 docker-engine 。 如果已安装这些,请卸载它们以及相关的依赖项。

1
2
3
4
5
6
7
8
9
10
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安装 Docker CE

您可以根据需要以不同方式安装 Docker CE :

  • 大多数用户设置 Docker 的存储库并从中进行安装,以便于安装和升级任务。 也是 Docker 官方推荐的方法。

  • 有些用户下载 RPM 软件包并手动安装并完全手动管理升级。 这在诸如在没有访问互联网的气隙系统上安装 Docker 的情况下非常有用。

  • 在测试和开发环境中,一些用户选择使用自动便捷脚本来安装 Docker。

本文采用的是第一种方法 :

在新主机上首次安装 Docker CE之前,需要设置 Docker 存储库。 之后,您可以 从存储库安装和更新 Docker 。

设置 REPOSITORY

1, 安装所需的包。 yum-utils 提供 yum-config-manager 实用程序,devicemapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

1
2
3
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

2, 使用以下命令设置稳定存储库。

1
2
3
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker CE

1, 安装最新版本的Docker CE,或转到下一步安装特定版本

1
sudo yum install docker-ce

2, 要安装特定版本的Docker CE,请列出repo中的可用版本,然后选择并安装:
a. 列出并对您的仓库中可用的版本进行排序。 此示例按版本号对结果进行排序,从最高到最低,并被截断:

1
2
3
yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64 18.09.0.ce-1.el7.centos docker-ce-stable

返回的列表取决于启用的存储库,并且特定于您的CentOS版本(在此示例中以.el7后缀表示)。

b. 通过其完全限定的包名称安装特定版本,包名称(docker-ce)加上版本字符串(第2列)直到第一个连字符,用连字符( - )分隔,例如,docker-ce-18.03.0.ce。

1
sudo yum install docker-ce-<VERSION STRING>

Docker 已安装但尚未启动。 已创建 docker 组,但未向该组添加任何用户。

3, 启动 Docker

1
2
3
4
5
6
7
sudo systemctl start docker
```

4, 通过启动 `hello-world` 镜像来验证 `Docker` 安装并启动成功

```bash
sudo docker run hello-world

上面的命令下载测试映像并在容器中运行它。 当容器运行时,它会打印一条信息性消息并退出。

卸载 Docker CE

1, 卸载 docker 的安装包

1
sudo yum remove docker-ce

2, 主机上的图像,容器,卷或自定义配置文件不会自动删除。 要删除所有图像,容器和卷:

1
sudo rm -rf /var/lib/docker

Maven 构建 Spring Boot 的 Docker 镜像

构建项目,修改配置

通过 https://start.spring.io/ 构建 Spring Boot 工程。

修改 pom 文件

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
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- tag::plugin[] -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<!--suppress UnresolvedMavenProperty -->
<repository>${docker.image.prefix}/${project.artifactId}</repository>
</configuration>
</plugin>
<!-- end::plugin[] -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<!--<version>0.4.12</version>-->
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed-->
<dockerHost>http://127.0.0.1:2375</dockerHost>
<imageName>docker-springboot</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

需要注意的是 <dockerHost>http://127.0.0.1:2375</dockerHost>,如果本地有安装 docker ,直接只用本地默认即可,若未安装,需要是远程的 docker 服务时需要在服务器配置 docker ,具体操作请移步 Docker 远程连接。

添加 Dockerfile

注意 com.whforever.dockerspringboot.DockerSpringbootApplication 是指 Spring Boot 项目的代码入口。

1
2
3
4
5
6
7
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.whforever.dockerspringboot.DockerSpringbootApplication"]

构建 构建 Spring Boot 的 Docker 镜像

执行 maven 命令,执行构建

1
mvn clean package docker:build

执行完成之后我们就可以在远程看到刚构建好的 Spring Boot 的镜像。

1
2
3
4
docker container ls 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5f2c7e4e7c1 docker-springboot:latest "java -jar /docker-s…" 22 hours ago Up 22 hours 0.0.0.0:8080->8080/tcp agitated_kilby

启动 docker 镜像

1
docker run -p 8080:8080 docker-springboot

完美……

docker-run

小结

本文涉及的代码已经上传到 github,感兴趣的小伙伴请点https://github.com/haifeiWu/docker-springboot

参考链接

  • https://spring.io/guides/gs/spring-boot-docker/
  • http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

关注我们

作 者:haifeiWu
原文链接:https://www.hchstudio.cn/article/2018/5a3c/
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

分享
JavaDockerSpring Boot
年 zhong 总结散列表
微信关注我们
分类
  • Android8
  • Go4
  • Java59
  • Kafka,Java1
  • Kotlin2
  • Linux1
  • MapReduce1
  • Python2
  • Raft1
  • Redis1
  • ThreadPoolExecutor1
  • go1
  • 工具1
  • 总结8
  • 旅游日记1
标签
Nginx ChanghuiN haifeiWu Android Java 设计模式 hexo Kotlin 算法 MySQL 源码解析 Python Redis golang web Kafka 配置中心 总结 性能优化 旅游日记 Shell Go 问题排查 译文 Docker Spring Boot 工具 学习笔记 WebFlux 性能测试 go 散列表 源码 netty Raft
最近文章
  • Kafka的日志复制机制
  • 从20到21
  • go 并发编程
  • 【译】了解Linux CPU负载-您何时应该担心?
  • Zookeeper 与分布式锁
  • 基于Redis的分布式锁到底安全吗?
  • 【译】Raft 学生指南
  • ThreadPoolExecutor 的简单梳理
  • MapReduce 的简单实现
  • 使用 Map 实现策略模式
福利专区
    免费SSL证书
      阿里云红包
        腾讯云专属福利
        Copyright © 2021 代码星冰乐. Powered by ChanghuiN. 版权所有 晋ICP备15001365号
        特别感谢: 云服务器服务商 、 CDN 服务商