20221115 Docker

本文介绍了Docker的基础知识,包括Docker的三大核心概念——镜像、容器和仓库,以及在CentOS7上的安装步骤。详细讲解了如何启动Docker服务,设置镜像加速器,并提供了常用Docker命令。此外,还演示了如何将SpringBoot项目打包并利用Dockerfile创建镜像,最终在服务器上运行。
摘要由CSDN通过智能技术生成

Docker 使用

Docker是什么

  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

  • Docker 可以让开发者打包他们的应用(xx.jar)以及依赖包(jdk)到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  • Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。比如,你在本地用Python开发网站后台,开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后部署到任意你想部署的环境。

  1. 英文文档:https://docs.docker.com/install/
  2. 中文社区:http://www.docker.org.cn/index.html

Docker的三个概念

  1. 镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。物理文件.
  2. 容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
  3. 仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

CentOS Docker 安装

Docker支持以下的CentOS版本:

  • CentOS 7 (64-bit)
  • CentOS 6.5 (64-bit) 或更高的版本

前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本
通过 uname -r 命令查看你当前的内核版本

本人使用CentOs 7

使用root用户执行命令: yum -y install docker
如果不用root用户可能没有权限安装
执行命令后静静等待安装
在这里插入图片描述
安装完成

使用 docker -v 查看版本
在这里插入图片描述

启动Docker服务

启动服务的方式有两种

service docker start
或者
systemctl start docker

测试docker是否开启服务
docker run hello-world

如果安装 docker run hello-world失败,需要先卸载,再安装

镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux)来配置 Daemon
请在该配置文件中加入(没有该文件的话,请先建一个):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

在这里插入图片描述

也可以在命令中添加镜像地址

http://ovfftd6p.mirror.aliyuncs.com
http://registry.docker-cn.com
http://docker.mirrors.ustc.edu.cn
http://hub-mirror.c.163.com

docker pull ovfftd6p.mirror.aliyuncs.com/library/xxxx

Docker命令

docker –help :查看docker的命令

docker ps –help:查看docker ps 的具体用法

docker images:查看镜像库

docker ps:查看正在运行的容器

docker pa -a:查看历史容器

docker pull xxx:从远处下载镜像

docker inspect:查看镜像的底层信息

docker run -d -p 11111:2222 --name Name xxx:后台运行指定端口的镜像,-d 是后台运行,-p 指定端口11111是外部访问端口 2222是linux内部运行端口,–neme指定name,之后这个name可以代替container id

docker build -t xxx:编译本地配置文件并生成镜像

docker stop {container id}:停止对应container id的容器

docker restart {container id}:重启对应container id的容器

将springboot项目打包放入服务器运行

  • 使用maven中的package打包jar
    在这里插入图片描述
    在这里插入图片描述

  • 编写dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: knowno
# java8镜像
FROM openjdk:8
# 作者
MAINTAINER 作者 <作者邮箱>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 
# 将jar包添加到容器中并更名为app.jar
ADD demo-docker-0.0.1-SNAPSHOT.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#指定运行端口
# PORT(如果不指定,tomcat默认8080EXPOSE 80

如果在尾部加入 expose端口为80,要确保项目配置的启动端口也是80.
在这里插入图片描述

使用xftp连接服务器将打包好的jar和dockerfile文件上传到服务器中
在这里插入图片描述
进入docker文件夹执行以下命令:
docker build -t sb4docker . (看好,最后面有个"."点! sb4docker是自己取的名字)

等待生成镜像

生成镜像后使用命令启动容器: docker run -d -p 8888:8080 sb4docker

通过浏览器访问:http://服务器ip:8888/路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值