震惊,docker操作竟如此简单

2023-11-01

  1. Docker概述

1.什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中。然后发布到任何流行的Linux和Windows操作系统的机器上。也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker可以让开发者打包自己的应用成一个镜像发布到服务器上,或者发布到开源社区,实现网络上的资源共享。镜像发布到服务器后,以容器的方式运行,也是虚拟化的一个特性,容器之间是充分隔离的,采用沙盒机制,互相之间不会有影响,而且Docker是可移植的,跨平台的。

镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件常见的镜像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。

2.什么是沙盒

沙盒(英语:sandbox,又译为沙箱),计算机专业术语,在计算机安全领域中是一种安全机制为运行中的程序提供隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。

 

3.Docker容器和虚拟机的区别

相同点:docker容器和虚拟机都采用了虚拟的技术。

不同点:Docker相对于虚拟机而言,少了虚拟机操作系统层,少了一层就少了很多的资源浪费,所以Docker的效率更高。

4.Docker架构 

Docker分三大部分:客户端,docker主机 和 镜像仓库。

  1. 客户端是 人和docker 对话用的,就是执行docker命令,在命令行执行。
  2. Docker主机是本地处理docker相关操作的,运行在操作系统上的,我们不能直接观察和操作,需要通过客户端。

3.镜像仓库是事先准备好的镜像池,提供了丰富的镜像,供每个docker使用。

客户端和docker主机都是安装在我们的操作系统上,镜像仓库是在公网上或者是我们自己的私有库。

两个关键词:

镜像:images,可以理解成一个系统的镜像文件,例如发给大家的centOS镜像。

容器:containers, 容器是镜像在运行时的一个状态。

镜像images相当于硬盘上的文件,容器containers相当于运行硬盘上的文件,包括其内存状态。

 

5.核心概念

核心有三个,用来连接主机的clients客户端,安装了docker的主机Hosts,和保存了镜像文件的registries镜像仓库

6.docker的特性及优点

特点:

隔离、文件隔离、系统隔离、资源隔离、网络隔离、日志隔离等。每个容器都完全独立运行在一个沙盒中,所有的数据、资源都是隔离的。比如cpu、内存等等。网络上会为每个容器虚拟一个ip地址。Docker为每个容器都提供自己的日志,互不影响。

优点:

虚拟化机制比虚拟机更优秀一些;更节省资源,可以跨平台,不需要担心操作系统的影响。另外docker的应用也很广泛,各大公司都有应用。

缺点:

Docker对程序是友好的,但是不善于处理文件和数据,一般情况会将文件或数据以路径映射方式挂载到容器外。

2.部署docker环境

Docker安装步骤官网手册:Install Docker Engine on CentOS | Docker Documentation

1.查看一下Linux 内核版本

因为:docker支持Linux 3.10及以上版本,所以一定要看一下内核版本

用命令:unmae -r

 

2.卸载老版本docker,避免产生影响

【官网信息:】  $ sudo 不是命令,不需要敲写进去。

 

命令窗口输入:

 

3.升级yum 和 配置源

【官网信息:】

命令窗口输入:

【命令一:升级yum】

 

【命令二:配置源】

 

4.在虚拟机中安装docker【不用操作】

  1. 查看历史版本的docker

【官网信息:】

 

【命令窗口输入:】

  1. 安装指定版本的docker

我们统一安装:20.10.8版本

 

【官网信息:】

把<VERSION_STRING>替换成版本号即可

yum install --setopt=obsoletes=0 docker-ce-20.10.8-3.el7 docker-ce-selinux-20.10.8-3.el7.noarch

===注意:20.10.8-3.el7   是小写字母L,不是数字1.

【命令窗口输入:】

 

7.安装成功

 

8.启动服务验证一下

1. 首先,查看一下docker版本,有信息代表安装成功!

使用命令:docker --version

Docker安装成功后,需要启动docker服务才可以用。

  1. 启动docker服务

命令:

docker images :查看docker镜像

systemctl start docker :启动docker服务

systemctl stop docker :停止docker服务

systemctl enable docker :开机自启docker服务

3.docker的常用操作

1.查看本地【镜像】docker images

使用命令:docker  images    查看docker镜像

 

REPOSITORY :镜像的名字

TAG:镜像的标签

IMAGE ID:镜像的唯一标识

CREATED:创建镜像的时间

SIZE:镜像的大小

2.查找指定【镜像】docker search

【方式一:推荐】到官网去查:https://hub.docker.com/

选这种有认证的镜像:

 

【方式二:】用命令查

使用命令:docker  search  镜像名字

    例如:docker  search  tomcat

 

3.拉取【镜像】docker pull

使用命令:docker  pull  镜像名称

例如:docker  pull  tomcat

 

下载后再查看一下本地镜像:docker images

 

TAG代表镜像标签,Latest是最新的一个镜像。

拉取镜像命令2:docker pull 镜像名称:标签名

   -----一般标签名中会包含版本号。

   -----我们统一用tomcat8版本。

使用命令:docker pull tomcat:8

【先拉取:】    

【再查看:】

 

4.移除【镜像】docker rmi

使用命令:docker  rmi  镜像id

===命令虽然也支持根据镜像名称移除,但是按照镜像名称移除容易出错,所以一般都是按照  镜像唯一标识  进行移除。

【注意】 docker操作镜像时,如果用的是名字,那么会默认为该名字加上标签,对应的标签是latest。

5.查看【容器】docker ps

使用命令:docker  ps   查看正在运行的容器

使用命令:docker  ps  -a   查看所有容器,包括运行的 和 停止的

 

 

CONTAINER ID:容器唯一标识

IMAGE:对应的镜像名字

COMMAND:执行的命令

CREATED:创建时间

STATUS:容器的状态

PORTS:容器的端口号,是自定义的

NAMES:容器的名字,是自定义的

6.移除【容器container】docker rm

使用命令:docker  rm  容器的名字 或 唯一标识

 

 

======当用“唯一标识”移除的时候,可以只输入前几个符号,docker会自动匹配(同时完成移除功能)。要注意是否有类似的,建议复制容器完整的唯一标识值。

7.?启动【容器】docker start?

docker  run  hello-word ----运行镜像。

 

docker  start 容器id/名字 ----启动容器

8.停止【容器】docker stop

docker  stop 容器id/名字 ----停止容器

docker  restart 容器id/名字 ----重启容器

9.启动【tomcat镜像】docker run

使用命令:docker  run --name tc -p 8080:8080 tomcat:8 或镜像id

例如:docker  run --name tc -p 8080:8080 73365378bc27

---不能进行命令操作,因为被启动文件占据着,使用ctrl+c打断。

例如:docker  run --name tc1 -p 8080:8080 -d 73365378bc27  

---可以继续命令操作,启动文件再后台运行。

 

【但是此时 出现404 错误!】

 -name :给容器取一个名字
注意:容器的名字是唯一,无论容器的状态是什么,名称都不允许重复。

-p:端口映射,将容器的端口映射到服务器上,冒号前的端口是服务器的端口号,后面的是容器的端口号。例如:-p 8081:8080,将容器的8080端口映射到服务器的8081端口,访问时访问8081端口就相当于访问容器的8080端口。

-d:后台运行。像tomcat这种持续运行的程序,需要用后台运行的方式,这样不影响终端做其他操作。

10.进入【容器】docker exec

使用命令:docker  exec  -it  容器的名字或id  /bin/bash

选项,参数介绍:

-it :进入到容器中,是-i -t的缩写;

-i:以交互模式运行虚拟机

-t:为容器分配一个伪终端

/bin/bash:是命令需要的路径参数

 

【容器内部仍然可以用linux命令】

11.tomcat启动后404问题 cp -r

外部访问tomcat时会出现404错误,是因为webapps目录文件下没有任何文件。

Tomcat自带的页面都在webapps.dist目录下,复制过来即可。

只复制ROOT目录文件就可以了。

使用复制命令:cp -r 路径1 路径2

例如:cp -r webapps.dist/ROOT  webapps

-r 循环递归执行复制操作

webapps.dist/ROOT 把该路径下的文件进行复制

Webapps 把复制的文件粘贴到该路径下。

 

 

12.退出【容器】& 输出容器日志

从容器里退出来;

  1. 执行exit
  2. Ctrl+d 可以从容器中退出,来到Linux服务器里。

输出容器日志:

使用命令:docker logs 容器名称或id -f    输出容器日志,

-f代表持续输出,会保持日志输出的状态,一直打印日志

Ctrl+C退出。

13.mysql数据库安装和配置

0.复习操作_移除mysql8镜像

 

先移除依赖的容器:docker rm d7ddc397e4c1

再移除mysql8镜像:

1.拉取mysql镜像docker pull

统一下载8版本mysql

使用命令:docker pull mysql:8

 

2.启动mysql镜像 docker run

使用命令:docker run --name mm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8

-e:配置信息,配置root的密码。

 

先启动镜像:

再查看容器。

---因为启动后的镜像就是容器了。

【验证是否成功】错误码:2059 其实没问题,不影响docker中mysql的使用。

 

 

3.启动同时创建目录映射_【执行步骤3,不执行步骤2】

【注意】提前创建目录musql/logs、conf、data

使用命令:

docker run --name mmy1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d \

-v /usr/local/docker/mysql/logs:/var/log/mysql \

-v /usr/local/docker/mysql/conf:/etc/mysql \

-v /usr/local/docker/mysql/data:/var/lib/mysql  mysql:8

-v:目录映射 ,同-p格式。目录文件(一层目录可以,多层不可以)必须手动创建才能映射。

 

为啥需要 docker ps -a 才能看见呢?

14.创建docker镜像

1.创建dockerfile文件

创建一个文件名为Dockerfile的文件,这个文件是没有后缀名的

FROM openjdk:8 

ADD t-springboot-1.0-SNAPSHOT-exec.jar /app.jar

RUN bash -c 'touch /app.jar'

ENTRYPOINT ["java","-jar","/app.jar"]

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc

/timezone

 

2.上传spingboot打包文件

上传我们准备好的springboot打好的包,在把Dockerfile上传到相同的目录下,注意,目录里不要有其它的文件。

3.自定义【镜像】docker build

先:进入Dockerfile所在的目录中。】

执行命令docker build -t 镜像名字(自己取的,不能有大写字母):标签(可以省略,省略代表的是latest) 目录(用.,代表当前目录)

例如:docker build -t testspringboot .

-t:是给镜像添加一个标签

【问题:添加镜像失败!】

【解决:修改Dockerfile中镜像名字,==同名于上传的jar名字

4.启动【自定义镜像】docker run

【先】使用命令:docker run --name tsb -p 8898:8898 -d testspringboot

第一个8898:是要访问的端口

第二个8898:是项目的端口

例如:docker run --name tsb -p 8898:8080 -d testspringboot

【再访问测试,测试地址:http://172.19.186.149:8898/test

 例如:http://192.168.43.65:8898/test

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

震惊,docker操作竟如此简单 的相关文章

随机推荐

  • 淘宝框架atlas基本使用说明

    转自 http blog csdn net wdd1324 article details 76855408 官网 文档 github 视频资料 如有错误请指正 简介 Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android
  • SOA是什么

    面向服务的体系结构 service oriented architecture SOA 是一个组件模型 它将应用程序的不同功能单元 称为服务 通过这些服务之间定义良好的接口和契约联系起来 接口是采用中立的方式进行定义的 它应该独立于实现服务
  • Java使用Hibernate-Validator验证API接口参数

    一 相关依赖
  • 逻辑地址 虚拟地址 物理地址 总线地址的区别

    1 逻辑地址 逻辑地址是最为模糊的概念 understanding the Linux kernel 上的解释是与虚拟地址相关 基于硬件MMU与软件内存管理的一个概念 具体可以看UTLK的第二章内存寻址 有很详细的解释 但是工作中之前用到的
  • 【2021-CVPR-3D人体姿态估计】Graph Stacked Hourglass Networks for 3D Human Pose Estimation

    Graph Stacked Hourglass Networks for 3D Human Pose Estimation 题目 用于3D人体姿态的图堆叠沙漏网络 作者 来源 CVPR 2021 研究内容 单人 单视图 有监督 创新点 提出
  • 目标检测数据集

    参考 You Only Look Once Unified Real Time Object Detection 你只看一次 统一的实时对象检测 CVPR 2016 1 PASCAL VOC PASCAL VOC 数据集是目标检测领域最常用
  • 推荐图灵出版社的图书

    最近半年买了不少图灵出版社的图书 有java oracle Linux和TCP IP方面的书 每本都读了差不多一半 读后有一种很亲切的感觉 总结下来一句话 很适合受中国传统教育的大部分学生 在此并无讽刺之意 很多学生习惯了 填鸭式 的教育模
  • 使用conda创建Python的虚拟环境

    目录 一 查看已有环境 二 创建虚拟环境 2 1 添加镜像地址 2 2 创建虚拟环境 2 3 激活虚拟环境 2 4 退出虚拟环境 三 pycharm使用环境 四 删除虚拟环境 五 快速创建虚拟环境 一 查看已有环境 键入以下命令 conda
  • nosql

    公共基础 一 NoSQL概述 1 NoSQL NoSQL定义 非关系型 分布式 开放源码和具有横向扩展能力的下一代数据库 NOSQL Not Only SQL 2 数据库的分类 1 TRDB数据库 传统关系型数据库 基于单机集中管理数据理念
  • 机器学习实战——第三章(分类):决策树算法与实例(一)

    前言 今天看了会 机器学习实战 第三章 决策树 很迷 似懂非懂 专业术语太多了 而且有点混乱 对于一个大一概率论没学好的学渣来说 如今大三的我看到那些概率公式和一些概率论专业术语就头疼 马上就打了退堂鼓 早起看了半个小时没看明白果断又躺回了
  • 设置swiper轮播图的css样式无效?

    项目场景 在做vue项目的时候 使用到了vue awesome swiper三方库 当时小编想重写 覆盖轮播图的分页器小圆点的css样式 其次 小编做项目时 使用的css预编译器是SCSS 问题描述 当小编在重写分页器小圆点css样式时 发
  • Vim配置及使用总结

    Vim配置及使用总结 我的Vim配置 Vim安装及配置文件 Vim安装 Vim配置文件 我的Vim配置 Vim配置详解 Vim使用技巧 基本使用介绍 命令模式 输入模式 底线命令模式 技巧总结 二进制文件查看 下面是我在使用vim时的一些配
  • Sass -- 条件语句、循环语句、自定义函数

    文章目录 条件语句 循环语句 for while each 自定义函数 条件语句 在Sass中可以使用 if if else if else 来进行条件判断 用法和JS相同 循环语句 在Sass中可以使用 for while each 来进
  • 4. Hadoop伪分布式运行模式

    文章目录 Hadoop伪分布式运行模式 1 启动HDFS并运行MapReduce程序 1 1 配置集群 配置hadoop env sh 配置core site xml 配置hdfs site xml 1 2 启动集群 格式化NameNode
  • window.open()的所有参数列表(转)

    前言 经常上网的朋友可能会到过这样一些网站 一进入首页立刻会弹出一个窗口 或者按一个连接或按钮弹出 通常在这个窗口里会显示一些注意事项 版权信息 警告 欢迎光顾之类的话或者作者想要特别提示的信息 其实制作这样的页面效果非常的容易 只要往该页
  • Python-玩转数据-Scrapy框架介绍及安装

    一 Scrapy框架说明 1 Scrapy介绍 Scrapy框架官方网址 http doc scrapy org en latest Scrapy是用纯Python实现一个为了爬取网站数据 提取结构性数据而编写的应用框架 用途非常广泛 用户
  • 如果访问云服务器上的文件,如果访问云服务器上的文件

    如果访问云服务器上的文件 内容精选 换一换 WinSCP工具可以实现在本地与远程计算机之间安全地复制文件 与使用FTP上传代码相比 通过 WinSCP 可以直接使用服务器账户密码访问服务器 无需在服务器端做任何配置 通常本地Windows计
  • [Qt]不带标题栏(FramelessWindowHint)的窗体移动及调整大小

    Qt窗体若设置了 setWindowFlags Qt FramelessWindowHint 运行后该窗体是无法进行移动和调整大小的 那要如何才能让它和普通窗体一样进行移动和调整其大小的呢 方案如下 void QFramelessWindo
  • 【八组输入输出你都了解多少】

    目录 前言 一 总览 一 只能从标准流 std 中输入和输出数据 二 可以从所以流中读取和写入数据 三 只能从字符串中读取和写入数据 二 详细描述 一 scanf fscanf sscanf 1 scanf 2 fscanf 3 sscan
  • 震惊,docker操作竟如此简单

    Docker概述 1 什么是Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的Linux和Windows操作系统的机器上 也可以实现虚拟化 容器是完全使用沙箱