- Docker简介
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。
Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并缩短从编写到部署运行代码的周期。
Docker官方网址: https://docs.docker.com/ 英文地址
Docker中文网址: http://www.docker.org.cn/ 中文地址
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。 - Docker架构
客户端→Docker_Host(宿主机)→仓库
Docker daemon( Docker守护进程)
Docker daemon是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信。
Client( Docker客户端)
Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信。图中, docker build等都是 Docker的相关命令。
Images( Docker镜像)
Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序。
Container(容器)
容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过 Docker API或者 CLI命令来启停、移动、删除容器。
Registry
Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助 Docker Registry来避免镜像的手动复制。
一个 Docker Registry可包含多个 Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个 Docker镜像。这跟 Maven的仓库有点类似,如果把 Docker Registry比作 Maven仓库的话,那么 Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。。 - Docker安装
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。
- 查看你当前的内核版本
Docker 要求 CentOS 系统的内核版本在 3.10以上。// 查看内核版本 uname -r
- 升级所有包
// 使用root账号 yum -y update
等待执行!!!这里估计等待好久
- 卸载旧版本(如果安装过旧版本的话,没安装可以跳过此步骤)
yum remove docker docker-common docker-selinux docker-engine
- 安装需要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 查看仓库中所有docker版本
yum list docker-ce --showduplicates | sort -r
- 安装docker
#这里默认安装的是最新稳定版 sudo yum install -y docker-ce
- 启动并加入开机启动
// 启动docker systemctl start docker // 设置为开机启动 systemctl enable docker
- 验证是否安装成功(有client和service两部分表示docker安装启动都成功了)
docker version
安装完成!!!
- 阿里镜像加速
详细参考: https://blog.csdn.net/xiaobo5264063/article/details/100969293 - docker相关命令
- docker常用命令
启动 systemctl start docker 停止 systemctl stop docker 重启 systemctl restart docker 查看 dockers version 查看 dockers info - 镜像常用命令
搜索镜像 docker search java Docker就在Docker Hub搜索含有 java这个关键词的镜像。如nginx: docker search nginx 下载镜像 docker pull java:8 指定下载jdk1.8,如果不指定得话默认下载最新的。 查看镜像 docker images 查看所有已经下载的镜像 删除镜像 docker rmi d23bdf5b1b1b 通过docker images查看镜像image_id, 然后通过image_id删除: docker rmi image_id 启动镜像 docker run -d -p 80:80 nginx -d:表示后台启动 启动镜像 docker run -p 80:80 nginx 非后台启动 - 启动镜像
浏览器访问: http://虚拟机IP:81/ 在虚拟机访问: curl 容器内部的ip:80// 81: 宿主机端口 80: 容器内部端口号 一般都设为一样,这里是为了区分 docker run -d -p 81:80 nginx
注意: 使用 docker run命令创建容器时,会先检查本地是否已经下载过。如果没有, Docker就会自动下载镜像并启动。 - 容器相关命令
查看容器 docker ps -a 查看所有容器 --可以获取容器ID、镜像...... 查看容器 docker ps 查看运行中的容器 卸载容器 docker rm 容器id 通过docker ps -a获取CONTAINER ID(容器id) 启动容器 docker start 容器id 停止容器 docker stop 容器id 重启容器 docker restart 容器id 查看单个容器信息 docker inspect 18fe19b57db4 18fe19b57db4:容器id 进入容器目录 docker container exec -it 容器id /bin/bash 查看容器启动信息 docker logs -f 容器id 容器复制 docker cp /usr/share/plugins/aa 容器Id:/usr/share/plugins/aa 将服务的aa目录下文件服务到容器内 - 查看容器的信息
// 查看容器的CONTAINER ID docker ps // 通过容器CONTAINER ID查看容器信息 docker inspect 18fe19b57db4
这里我们查看到了刚刚启动的nginx,看看容器的ip地址是多少
在虚拟机里使用容器的IP访问80端口的nginx: curl 172.17.0.2:80 - 进入容器
我们知道虚拟机是个linux服务器,docker容器相当于一个,虚拟机中创建的虚拟机,如果进入这个虚机查看呢:
// 查看运行的容器 docker ps // 进入的容器 docker container exec -it 4b1163397579 /bin/bash // 退出 exit
- 卸载镜像和容器
// 通过docker ps -a查看容器id docker rm 容器id // 通过docker images 查看镜像id docker rmi 镜像id
- 基于Docker部署springboot项目
- 创建springboot项目,并打包成jar包,将jar重命名为app-springboot.jar
- 上传文件
将app-springboot.jar包上传到/usr/local/dockerapp目录下// 创建目录 mkdir /usr/local/dockerapp
- 添加配置
查看文件cat /usr/local/dockerapp/Dockerfile// 进入目录 cd /usr/local/dockerapp // 创建并编辑文件 vim Dockerfile ###############配置内容如下################### ###指定java8环境镜像 FROM java:8 ###复制文件到容器,并重命名为app.jar ADD app-springboot.jar /app.jar ###声明启动端口号 EXPOSE 8080 ###配置容器启动后执行的命令 ENTRYPOINT ["java","-jar","/app.jar"]
- 使用docker build命令构建镜像
cd /usr/local/dockerapp # 格式: docker build -t 镜像名称:标签 Dockerfile的相对位置 '.': 表示相对文件路径 docker build -t app-springboot .
- 查看是否成功
docker images
// 如果指定了java配置,而本地没有,docker也会帮你下载 - 运行
docker run -p 8080:8080 app-springboot .
- 浏览器访问
http://192.168.2.116:8080/index
完成