一. 什么是docker?
docker 是一个开源的应用容器引擎,是一个用于开发,交付和运行应用程序的开放平台。
1. 解决了环境配置问题
2.docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
3.容器是完全使用沙箱机制,相互之间不会有任何接口
二. docker 的优点?
1. 快速交付产品,快速部署应用. 就能够将现有的应用部署到其它机器上,从而实现一次打包,多次部署的目的。
2. docker基于镜像可以秒级启动各种容器. 启动docker相当于启动宿主机操作系统上的一个进程,为秒级别。
3.每一种容器都是一个完整的运行环境,容器之间相互隔离. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
名词解释:
docker 镜像(Images):docker 镜像是用于创建 Docker 容器的模板,比如 Centos7 系统,win10镜像。
docker 容器(Container): 一个小型的Linux系统.容器是独立运行的一个或一组应用,是镜像运行时的实体。
三.docker安装
1. 设置 Docker 安装仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2. 安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io
官方安装文档:https://docs.docker.com/engine/install/centos/
四. 打docker镜像前准备工作
1. 准备一个可运行的应用包
docker-demo-0.0.1-SNAPSHOT.jar (一个springBoot项目)
发起请求 http://localhost:8090/ 输出: Hello World !
2.编写Dockerfile文件
Alpine 操作系统是一个面向安全的轻型 Linux 发行版
docker官方也支持Apline的服务且有jdk与Alpine集成好的镜像
Dockerfile文件如下:
# 基于java镜像创建新镜像
FROM java:8-alpine
# 作者
MAINTAINER 12778
# 将jar包添加到容器中并更名为app.jar
ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar
# 端口
EXPOSE 8080
# 运行jar包
ENTRYPOINT ["java","-jar","/app.jar"]
五.部署&发布
1. 上传jar包
scp /Users/sunww/Documents/Docker/docker-demo-0.0.1-SNAPSHOT.jar root@10.211.55.4:/docker
2.制作镜像
cd /docker
docker build -t app . # -t:指定新镜像名, .:表示Dockfile在当前路径
打镜像的输出的日志如下:
成功提示:Successfully built 7793c98a965e -----镜像id
使用docker images 查看刚刚打好的镜像文件,如下截图:
3.启动容器
docker run -d -p 8090:8090 app
-d:后台运行 -p:公开指定端口号 冒号前面是主机上的端口,冒号后面是容器内部的端口。
容器启动成功,如下图:
使用docker ps 查看刚刚启动的容器,如下截图:
六. 测试验证
发起请求 http://10.211.55.4:8090/ 输出:Hello World !
常用命令
镜像
docker rmi 30f3184067bd 删除镜像
docker images 查看镜像
容器
运行docker ps,可见所有运行中的容器
启动容器 docker run -d -p 8090:8090 app
停止运行容器(fca333c9ce5f代表容器id) docker stop fca333c9ce5f
删除容器 docker rm fca333c9ce5
docker logs 2399e3449fd1 (容器id) 查看容器日志
进入/退出到容器里面去,控制台
docker exec -it 容器id /bin/sh
退出容器:exit
docker run hello-world 测试docker是否安装成功
附上我今天分享的docker原文