强大的Docker入门知识

目录

一、Docker简介

1.1、Docker是

1.2、Docker通常会在以下情况下使用:

1.3、Docker和VMware区别

1.4、Docker 的优点

二、环境配置

2.1、代码操作

2.2、效果演示

2.3、配置镜像仓库 

开始配置

三、基本命令

3.1、Docker基本命令

3.2、Docker镜像常用命令

1,docker images 列出本机所有镜像

2,docker search 搜索镜像(查官网有那些镜像)

3,docker pull 下载镜像(增)

4,docker rmi 删除镜像(删)

3.3、Docker 容器常用命令

1、Docker创建并启动容器

 a、启动交互式容器:(启动并进入-----it)

 b、守护式方式创建并启动容器(启动但是不进入---di)

2、Docker列出容器(查看容器)

3、Docker退出容器

4、Docker进入容器

5、Docker启动容器

6、Docker重启容器

7、Docker停止容器

8、Docker删除容器

9、Docker容器日志


一、Docker简介

1.1、Docker是

一种开源的容器化平台,可以让开发者将应用程序及其依赖项打包成一个独立的容器,然后部署到任何支持Docker的环境中运行。通过使用Docker,开发者可以实现快速部署、可移植性、可伸缩性和更高的资源利用率。 Docker的核心概念是容器,它是一个轻量级、独立的运行环境,包含了应用程序的代码、运行时环境、系统工具和系统库,可以在任何支持Docker的平台上运行。 Docker还提供了一套工具和服务,如Docker Engine、Docker Compose和Docker Swarm,帮助开发者管理和部署容器化应用程序。 Docker已经成为现代软件开发和部署的重要工具之一(新一代虚拟技术,老一代是VMware,会占用大量内存)。

1.2、Docker通常会在以下情况下使用:

1. 应用程序部署:使用Docker可以将应用程序及其所有依赖项打包成一个独立的容器,然后在任何支持Docker的环境中轻松部署和运行。

2. 开发环境管理:开发者可以使用Docker创建包含特定开发环境的容器,以确保开发和测试环境的一致性,并避免由于环境差异导致的问题。

3. 微服务架构:Docker容器可以用于构建和部署微服务架构,每个微服务可以被打包成一个独立的容器,并通过容器编排工具进行管理。

4. 持续集成和持续部署(CI/CD):Docker可以与CI/CD工具集成,帮助实现自动化构建、测试和部署流程,加快软件交付速度。

5. 多平台支持:Docker容器可以在任何支持Docker的平台上运行,包括开发机、测试环境、云端和本地服务器,实现跨平台部署和可移植性。

总的来说,Docker可以帮助开发者简化应用程序的打包、部署和管理过程,提高开发效率、可靠性和可移植性。

1.3、Docker和VMware区别

都是用于虚拟化技术的工具,但它们有一些重要的区别:

1. 虚拟化级别:Docker是一种容器化技术,它利用容器来隔离应用程序和其依赖的环境。而VMware是一种虚拟机技术,它模拟了一台完整的计算机系统,包括硬件、操作系统和应用程序。

2. 性能:由于Docker容器共享主机的操作系统内核,因此在性能方面比VMware虚拟机更高效。VMware虚拟机需要独立的操作系统和硬件模拟,因此在资源消耗和性能方面通常会有一些额外的开销。

3. 部署和管理:Docker容器可以更快速地部署和启动,而且可以更容易地进行扩展和管理。VMware虚拟机需要较长时间来启动,并且需要更多的管理和配置。

4. 灵活性:Docker容器更加轻量级和灵活,可以在不同的环境中移植和部署。VMware虚拟机则需要更多的配置和资源来运行。

总的来说,Docker更适合于轻量级和快速部署的应用程序,而VMware更适合于需要完全隔离和独立操作系统的应用程序。选择使用哪种虚拟化技术取决于具体的需求和场景。

1.4、Docker 的优点

1、简化程序:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

2、避免选择恐惧症:

如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3、节省开支:

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

二、环境配置

2.1、代码操作

#查看内核
uname -r#更新yum源为最新
yum update -y#安装Docker所需要的工具包
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
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#正式下载安装Docker
yum install docker-ce docker-ce-cli containerd.io -y -y#启动Docker并且设置开机自启动
systemctl start docker
systemctl enable docker#检测Docker是否安装成功
docker version

2.2、效果演示

查看内核 

 

更新yum源为最新

会有点久花10分钟下好

安装Docker所需要的工具包
 

设置yum源

设置yum源,否则走的是国外的(下载速度慢) 不能国内的(速度快),

 

下载安装Docker

 

启动Docker并且设置开机自启动

 

检测Docker是否安装成功-----成功

 

2.3、配置镜像仓库 

进入阿里云镜像官方网址:

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)

第一步:注册,完成后返回就·好了阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

进入阿里云镜像加速器

https://cr.console.aliyun.com/#/accelerator

开始配置

cd /etc/docker/
vi daemon.json#在文件中添加 配置
{"registry-mirrors": ["https://t84pgl53.mirror.aliyuncs.com"]
}systemctl daemon-reload
systemctl restart docker

在文件中添加 配置是放自己仓库里的,每个人的是不同的

测试:

如果下载到5~3分钟代表成功了,我花了一分钟

#从官网查
docker search mysql#下载mysql
docker pull mysql#可以查看有多大
docker images

 可以发现有很多个

删除镜像

docker rmi +..

 

三、基本命令

3.1、Docker基本命令

启动Docker

systemctl start docker

停止Docker

systemctl stop docker

重启Docker

systemctl restart docker

开机启动Docker

systemctl enable docker

查看Docker概要信息

docker info

查看Docker帮助文档

docker --help

查看Docker版本信息

docker version

3.2、Docker镜像常用命令

查看镜像(查)

1,docker images 列出本机所有镜像

docker images

列出本机所有镜像(查看服务器(虚拟机)下载那些镜像)

REPOSITORY

镜像的仓库源

TAG

镜像的标签(版本)同一个仓库有多个TAG的镜像,多个版本;我们用REPOSITORY:TAG来定义不同的镜像;

IMAGE ID

镜像ID,镜像的唯一标识

CREATE

镜像创建时间

SIZE

镜像大小

OPTIONS 

可选参数:

-a

显示所有镜像(包括中间层)

-q

只显示镜像ID

-qa

可以组合

--digests

显示镜像的摘要信息

--no-trunc

显示完整的镜像信息 

2,docker search 搜索镜像(查官网有那些镜像)

和 https://hub.docker.com/(查询太慢了,需要翻墙) 这里的搜索效果一样;

 

OPTIONS可选参数:

--no-trunc

显示完整的镜像描述

-s

列出收藏数不小于指定值的镜像

--automated

只列出Docker Hub自动构建类型的镜像

3,docker pull 下载镜像(增)

docker pull 镜像名称:[TAG]

 

注意:不加TAG,默认下载最新版本latest

列:下载centos7

#下载
docker pull centos:7#查看是否选择成功image for centos:7

4,docker rmi 删除镜像(删)

1,删除单个:docker rmi 镜像名称:[TAG]

删除可以通过名字或者ID删除

 

 

有镜像生成的容器再运行时候,会报错,删除失败;

我们需要加 -f 强制删除

 

 

2,删除多个:docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]

中间空格隔开

 

3,删除全部:docker rmi -f $(docker images -qa)

3.3、Docker 容器常用命令

1、Docker创建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 

--name="容器新名字":为容器指定一个名称;

-i:以交互模式运行容器,通常与-t或者-d同时使用;

-t:为容器重新分配一个伪输入终端,通常与-i同时使用;

-d: 后台运行容器,并返回容器ID;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

 启动普通容器: docker run --name 别名 镜像ID  

 a、启动交互式容器:(启动并进入-----it)

  docker run -it --name 别名 镜像ID   来运行一个容器,取别名,交互模式运行,以及分配一个伪终端,并且进入伪终端;

实例:

 docker run -it --name mycentos03 67fa590cfc1c

由原来的localhost变成了容器id

 创好服务器了

结果差不多

注意: 

  1. 启动普通容器的方式基本不用,没有伪终端,没有太大价值;
  2. 启动交互式容器的方式,容器一创建完毕,立即进入伪终端

 

 b、守护式方式创建并启动容器(启动但是不进入---di)

 docker run -di --name 别名 镜像ID 

实例:

 docker run -di --name mycentos02 67fa590cfc1c

执行完命令后,终端依然再宿主机上;

 

启动容器,并执行/bin/bash命令;

 docker run -it --name 别名 镜像ID  /bin/bash命令

 

端口映射;

docker run -it -p 8888:8080 tomcat

docker run -it -P tomcat

2、Docker列出容器(查看容器)

docker ps [OPTIONS]

查看还在运行容器:docker ps

docker ps -a

-a :显示所有的容器,包括未运行的

 

OPTIONS说明:

-a :显示所有的容器,包括未运行的

-f :根据条件过滤显示的内容。

--format :指定返回值的模板文件。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

--no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。

docker ps 查看正在运行的容器

docker ps -a 查看所有容器

docker ps -n 2  显示最近创建的2个容器

docker ps -f status=exited 查看停止的容器

3、Docker退出容器

exit 容器停止退出

ctrl+P+Q 容器不停止退出

4、Docker进入容器

adocker attach 容器ID or 容器名 

实例:

docker attach ce6343ee288f

不能进入停止的状态的容器

You cannot attach to a stopped container, start it first

b、Docker进入容器执行命令

docker exec -it 容器名称 或者 容器ID 执行命令

实例:

 docker exec -it tomcat02 ls -l /root/webapp02

直接操作容器,执行完 回到 宿主主机终端;

 我们一般用于 启动容器里的应用 比如 tomcat nginx redis elasticsearch等等

5、Docker启动容器

docker start 容器ID or 容器名

实例:

 docker start mycentos00

6、Docker重启容器

docker restart 容器ID or 容器名

实例:

 docker restart f9cadea1a5e7

7、Docker停止容器

docker stop 容器ID or 容器名

实例:

 docker stop 865b755cd0b2

 

暴力删除,直接杀掉进程 (不推荐)

docker kill 容器ID or 容器名

8、Docker删除容器

docker rm 容器ID  

如果删除正在运行的容器,会报错,我们假如需要删除的话,需要强制删除;

强制删除docker rm -f 容器ID

删除多个容器 

docker rm -f 容器ID1  容器ID2 中间空格隔开

实例:

docker rm 865b755cd0b2 ce6343ee288f

删除所有容器

docker rm -f $(docker ps -qa)

9、Docker容器日志

docker logs [OPTIONS] 容器id

  Options:

        --details        显示更多的信息

    -f, --follow         跟踪实时日志

        --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)

        --tail string    从日志末尾显示多少行日志, 默认是all

    -t, --timestamps     显示时间戳

        --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出-高性能低延迟消息传递框架-Disruptor

第1章:引言 大家好,我是小黑,咱们今天来聊一聊Disruptor框架,这是一个高性能的、低延迟的消息传递框架,特别适合用在日志记录、网关,异步事件处理这样的场景。Disruptor之所以强大,关键在于它的…

k8s部署java微服务程序时,关于配置conusl acl token的方法总结

一、背景 java微服务程序使用consul作为服务注册中心,而consul集群本身的访问是需要acl token的,以增强服务调用的安全性。 本文试着总结下,有哪些方法可以配置consul acl token,便于你根据具体的情况选择。 个人认为&#xff…

wu-framework-parent 项目明细

wu-framework-parent 介绍 springboot 版本3.2.1 wu-framework-parent 是一款由Java语言开发的框架,目标不写代码但是却能完成功能。 框架涵盖无赖ORM( wu-database-lazy-starter)、仿生组件 、easy框架系列【Easy-Excel、easy-listener、easy-upsert】 授权框架(…

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载3D model 最简实例(十三)

文章目录 前言一、3D model 文件介绍1. 3d model 介绍1.1 如何获取3d model 文件1.2 3d model 的文件格式1.3 obj模型数据格式2. 3d 立方体 model 实例——cube.obj二、Assimp 介绍1. Assimp 简介2.ubuntu 上安装libassimp3. 使用Assimp 解析 cube.obj 文件3.1 assimp_load_cub…

【机器人最短路径规划问题(栅格地图)】基于遗传算法求解

基于遗传算法求解机器人最短路径规划问题(栅格地图)的仿真结果 仿真结果: 路径长度的变化曲线: 遗传算法优化后的机器人避障路径:

华为ipv6 over ipv4 GRE隧道配置

思路: PC1访问PC2时,会先构造源ipv6为2001:1::2,目的IPV6为2001:2::2的ipv6报文,然后查看PC1的路由表,发送到R1,r1接收后,以目的IPV6地址2001:2::2查询IPV6路由表,出接口为tun0/0/0…

SpringMVC 学习(十)之异常处理

目录 1 异常处理介绍 2 通过 SimpleMappingExceptionResolver 实现 3 通过接口 HandlerExceptionResolver 实现 4 通过 ExceptionHandler 注解实现(推荐) 1 异常处理介绍 在 SpringMVC中,异常处理器(Exceptio…

CGI程序与ShellShock漏洞

CGI是什么? CGI(通用网关接口,Common Gateway Interface)程序是一种用于在Web服务器上执行动态内容的技术。与服务器上普通的后端代码相比,CGI程序有几个区别: 执行环境: CGI程序在服务器上作为…

处理异常(Exception)

1、什么是异常 在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数据库的数据&am…

2024牛客寒假算法基础集训营1(补题)

文章目录 ABCDEFGHIJKL A n的范围很小暴力直接 O ( n 3 ) O(n^3) O(n3)直接做就行。 我还傻的统计了一下前后缀&#xff0c;不过怎么写都行这道题。 #include <bits/stdc.h> #define int long long #define rep(i,a,b) for(int i (a); i < (b); i) #define fep(i,…

【appium】App类型、页面元素|UiAutomator与appium|App元素定位

目录 一、App前端基础知识 1、App类型划分 2、App类型对比 3、App页面元素 App页面元素分为布局和控件两种 常见布局&#xff1a; 常见控件&#xff1a;定位软件&#xff1a;appium和sdk自带的uiautomatorviewer都可以定位 二、App元素定位 1、id定位 2、text定位 3…

【Java EE初阶二十六】简单的表白墙(二)

2. 后端服务器部分 2.1 服务器分析 2.2 代码编写 2.2.2 前端发起一个ajax请求 2.2.3 服务器读取上述请求,并计算出响应 服务器需要使用 jackson 读取到前端这里的数据,并且进行解析&#xff1a; 代码运行图&#xff1a; 2.2.4 回到前端代码&#xff0c;处理服务器返回的响应…

from tensorflow.keras.layers import Dense,Flatten,Input报错无法引用

from tensorflow.keras.layers import Dense,Flatten,Input 打印一下路径&#xff1a; import tensorflow as tf import keras print(tf.__path__) print(keras.__path__) [E:\\开发工具\\pythonProject\\studyLL\\venv\\lib\\site-packages\\keras\\api\\_v2, E:\\开发工具\\…

Python 实现 ROC指标计算(变动率指标):股票技术分析的利器系列(15)

Python 实现 ROC指标计算(变动率指标&#xff09;&#xff1a;股票技术分析的利器系列&#xff08;15&#xff09; 介绍算法公式 代码rolling函数介绍核心代码计算OSC 完整代码 介绍 ROC&#xff08;变动率指标&#xff09;是一种技术分析指标&#xff0c;用于衡量价格变动的速…

windows系统使用Vscode在WSL调试golang本地进程

背景&#xff1a; windows10企业版 vscodegolang1.20 wsl编译运行。 vscode 使用本地wsl进行进程attach操作&#xff0c;发现&#xff1a;Access is denied. 本地进程启动&#xff0c;vscode调试进程。windows-Linux控制台: Starting: C:\Users\book\go\bin\dlv.exe dap --l…

Ubuntu Mysql Innodb cluster集群搭建+MaxScale负载均衡(读写分离)

Ubuntu系统版本 20.04.3 LTS (Focal Fossa) 、64位系统。 cat /etc/os-release查看Ubuntu系统是32位还是64位 uname -m如果显示“i686”,则表示安装了32位操作系统。如果显示“x86_64”,则表示安装了64位操作系统。 一、安装MySql 参考: https://blog.csdn.net/qq_3712…

什么是去中心化云计算?

去中心化云计算是一种新型的云计算方式&#xff0c;它与传统的中心化云计算不同&#xff0c;将数据和计算任务分布到多个节点上&#xff0c;而不是将数据集中存储在中心服务器上。这种云计算方式具有许多优势&#xff0c;包括提高数据安全性、降低运营成本、增强可扩展性和灵活…

MCU最小系统电路设计(以STM32F103C8T6为例)

目录 一、何为最小系统&#xff1f; 二、最小系统电路设计 1.电源 &#xff08;1&#xff09;各种名词解释 &#xff08;2&#xff09;为什么会有VDD_1 _2 _3区分&#xff1f; &#xff08;3&#xff09;Mirco USB &#xff08;4&#xff09;5v->3.3v滤波电路 &#…

Unity(第九部)物体类

拿到物体的某些数据 using System.Collections; using System.Collections.Generic; using UnityEngine;public class game : MonoBehaviour {// Start is called before the first frame updatevoid Start(){//拿到当前脚本所挂载的游戏物体//GameObject go this.gameObject;…

naive-ui-admin 表格去掉工具栏toolbar

使用naive-ui-admin的时候&#xff0c;有时候不需要显示工具栏&#xff0c;工具栏太占地方了。 1.在src/components/Table/src/props.ts 里面添加属性 showToolbar 默认显示&#xff0c;在不需要的地方传false。也可以默认不显示 &#xff0c;这个根据需求来。 2.在src/compo…