Docker

发布时间 2023-09-06 20:59:36作者: 九极致之术

1. Docker概述

Docker是基于Go语言实现的云开源项目

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”

也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行

在我们正常工作中,主要有以下环境:

1.开发环境

2.测试环境

3.上线环境

现想象,如果在开发过程中,我们已经开发后,将项目进行打包编译后,交给测试人员,那么,测试人员会将工程包放入到测试服务器中

but

如果在开发中,我们使用的开发版本与测试服务器运行环境的版本不同,而造成的项目运行不起来,这一现象我们称为‘水土不服’

那么现在引入docker概念,将开发时的环境统一与项目工程打包在一起,形成一个个容器,这样,这个工程无论在哪个环境都可以正常运行

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的

将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器

只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

 

2.安装Docker

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上

本次测试以Centos系统上演示

官网: https://www.docker.com

# 1、yum包更新到最新--更新centos7系统
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源--指定docker下载路径
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y。 ce:社区版【】   ee:企业版【收费】
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

【注:第一步可能会有点慢,因为要更新系统中的软件等】 

 3.Docker架构概念

  • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

  • 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台

  • 仓库(Repository)是集中存放镜像文件的场所。

 其类似

Maven仓库,存放各种jar包的地方;

github仓库,存放各种git项目的地方;

Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方

仓库分为公开仓库(Public)和私有仓库(Private)两种形式

最大的公开仓库是 Docker Hub(https://hub.docker.com/)

存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

4.配置Docker镜像加速器

打开浏览器搜索阿里云

登录或注册后进入后搜索镜像(容器镜像服务)

点击进入打开管理控制台面板

 

找到图中位置,并且复制红框框中的命令到linux系统终端里运行命令(不用管它,一条龙服务)

如果不放心,可以去这个地址 /etc/docker/daemon.json 查看文件内容

cat /etc/docker/daemon.json

   

【注:每个人的镜像加速器命令是不一样的】

 

5.Docker相关命令

 5.1 关于Docker服务命令

systemctl start docker   【注:启动docker】

systemctl stop docker   【注:关闭docker】

systemctl restart docker   【注:重启docker】

systemctl enable docker   【注:开启开机不关闭docker】

systemctl status docker   【注:查看docker状态 | 开启/关闭状态】

docker --help      【注:查看docker帮助,能查看关于docker命令】

docker 具体命令 --help  【注:查看docker帮助,能查看docker中具体命令的语法】

 

5.2 关于Docker镜像命令

docker images    【注:查看本地都有哪些镜像】

docker search 具体某物  【注:查看远程仓库的镜像,例:docker search mysql,其会搜索远程仓库中关于mysql的所有版本】

docker pull 具体某物:版本号  【注:将从远程仓库中拉取指定的某物到本地下载,例:docker pull mysql:5.7  【注:如果不输入版本号默认最新的版本】】

docker rmi 镜像名:版本号 【注:删除本地已下载的镜像,后面可跟镜像名,也可跟镜像ID】
docker rmi 镜像ID

 docker 命令 --help    【注:docker帮助命令,可帮助你查看命令的语法格式】

 

5.3 关于Docker容器命令

docker ps  【注:查看本地正在运行的容器】

docker ps -a  【注:查看本地所有的容器 |不管在不在运行都会被查看】

 

docker run -it --name=容器名 镜像名:版本 /bin/bash   【注:创建一个容器且进入已创建好的容器】

 

exit    【注:退出当前容器】【注:在此命令下,退出的容器会关闭 |进程会关闭】

Ctrl+Q+P  【注:退出当前容器】【注:在此命令下,退出的容器不会关闭,会在后台继续运行着】

 

docker exec -it 容器名/容器ID /bin/bash  

【注:进入正在运行的容器内】【注:在此命令下进入的容器,在次使用exit命令退出,容器不会关闭了】

 

docker start 容器名/容器ID  【注:启动docker容器】

docker stop 容器名/容器ID  【注:关闭docker容器】

docker rm 容器名/容器ID

【注:删除已关闭的容器【注:不能删除已开启的容器】】

【注:强制删除容器【注:不管容器是否已启动都会强制删除】】

docker rm -f 容器名/容器ID

docker logs 容器名/容器ID   【查看容器启动异常的日志】

 

6.容器的数据卷

【注:容器的数据卷需要引入三个问题】

1.docker容器被删除后,那么docker容器中的数据会被删除吗?答案是肯定的

2.docker容器可以与外部机器进行文件传输吗?答案是否定的

3.容器与容器之间如果进行数据交互?

  这里就可以引入容器的数据卷概念,其是通过在宿主机(也就是linux系统)创建一个目录与docker容器中某个目录进行绑定

  绑定后,数据即可进行共享

数据卷的概念:

数据卷是宿主机中的一个目录或文件

当容器目录和数据目录绑定后,对方的修改会立即同步

一个数据卷可以被多个容器同时挂载

一个容器也可以被挂载多个数据卷

  作用:

    1.解决数据持久化问题

    2.解决外部机器和容器的间接通讯问题

    3.解决容器之间的数据交换

6.1配置数据卷

docker run -it --name=容器名 -v 宿主机目录:容器内目录 镜像名:版本 /bin/bash  

【注:在创建容器时,将数据卷与容器中某个目录进行绑定】

【注:目录必须是绝对路径】

【注:如果目录不存在会自动创建】

【注:可以挂载多个数据卷,多个数据卷绑定空格分隔】

【注:列:docker run -it --name=容器名  -v 宿主机目录:容器目录 -v 宿主机目录:容器目录 -v 宿主机目录:容器目录 ...... 镜像:版本 /bin/bash】

 

7. Docker应用部署

 


以上便是Docker中的内容,如有漏缺请在下方留言告知,我会及时补充