当前位置: 首页 > news >正文

Docker 笔记(上篇)

Docker 概述

Docker 概念

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

Docker的历史

在2010年,几个大胡子年轻人从美国知名创业孵化器Y Combinator毕业后,在旧金山成立了一家做PaaS 平台的公司,名叫「dotCloud」,其最主要的创始人是「Solomon Hykes」
dotCloud在当时的商业模式为:以多语言PaaS为卖点,使得用户可以选择不同的开发组件和语言来运行程序。而随着微软、谷歌、亚马逊、IBM等大厂纷纷加入PaaS平台,竞争更是异常激烈,dotCloud的成长变得非常缓慢,可谓是举步维艰,期投资人Peter Fenton说dotCloud在2012年的挣扎,就像温水煮青蛙。
面对那段艰困的时期,在2013年3月份,dotCloud创始人Hykes做了一个在现在看来无比正确的决定:将核心技术开源,开源也就是开放源代码,让全世界的开发者贡献自己的代码。开源后越来越多的工程师开始发现这项技术的优点,人气迅速攀升,速度之快,令人咋舌。这项技术,就是docker,使用Go语言。
3月开源,在3月底就发布了docker 0.1版本,此后几乎每个月都有一个新版本产生,2014年6月,docker第一个里程碑版本1.0发布,到2017年2月8日,docker更新到1.13.1(更新日志),此后又分为Docker CE(社区版)和 Docker EE(商业版)。

Docker安装与卸载

安装Docker

  • 安装Docker ,登录 Docker 官方网站 ,在Docker Engine 中有安装centOS 的教程






 

  • 首先第一步,先卸载旧的Dokcer版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

  • 第二步,需要安装包 

yum install -y yum-utils

  • 第三步,设置镜像仓库,不要使用官方提供的,因为速度太慢,最好使用阿里云国内安装源安装Docker。

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

      

  • 启动Docker,并检验是否安装成功

systemctl start docker
docker version

  •  运行hello-world

 docker run hello-world

  •  查看下载的hello-world 镜像

docker images

 卸载Docker

  •  卸载软件

yum remove docker-ce docker-ce-cli containerd.io

  •  删除目录(docker 的默认工作路径  /var/lib/containerd)

rm -rf /var/lib/docker 

Docker 常用命令

帮助命令

docker version            # 显示docker 的版本信息
docker info                  # 显示docker 的系统信息,包括镜像和容器的数量
docker 命令  --help     # 帮助命令       

或者查官方文档

镜像命令

  • 查看所有镜像的信息

docker images
# 命令后面的可选项
-a ,--a                 列出所有镜像
-q, --quiet           只显示镜像的ID

 字段分析

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world        latest    9c7a54a9a43c   5 months ago   13.3kB
REPOSITORY    仓库的仓库源
TAG                     镜像的标签
IMAGE ID            镜像的ID
CREATED            镜像创建的时间
SIZE                     镜像的大小

  •  搜索镜像

 docker search 搜索镜像
# 可选项,通过搜藏数来过滤
--filter=STARS=3000        #通过搜索数来过来镜像

 

  • 下载镜像

 docker pull 镜像名[:tag]
# tag 是可选项,如果不选tag ,那么默认下载最新版本

 

  • 删除镜像

docker rmi -f  IMAGE/REPOSITORY         # 删除指定镜像
docker rmi -f  $(docker images -aq)           #  删除所有镜像,循环删除

 

容器命令

 有了镜像才可以创建容器,通过下载centOS 镜像来测试学习

  • 下载centOS 镜像

docker pull centos

  • 新建容器并启动

docker run [可选参数] 镜像
# 参数说明
--name="Name"       #容器名字 tomcat1  tomcat2,用来区分容器
-d                             #后台方式运行
-it                             #使用交互方式运行,进入容器查看内容
-p                             #指定容器的端口   -p  8080:8080
        -p 主机端口:容器端口(常用)

        -p 容器端口
        容器端口

-P                             #随机指定端口 

# 例子 docker run -it centos /bin/bash

注意;当我们使用 docker run -d 镜像名,然后使用命令 docker ps 发现没有该容器在运行。

因为docker 容器使用后台运行,  就需要有一个前台进程, docker 发现没有应用,就会自动停止。

 

  • 列出所有运行的容器 

docker ps
# 可选项
-a          #列出当前正在运行的容器+带出历史运行过的容器
-n=?     #显示最近创建的容器         ?是指显示容器的数量
-q         #只显示容器的编号

  •  从容器中退回主机(直接停止容器并退出)

 exit

  •  从容器中退会主机(容器不停止并推出)

Ctrl + P + Q

 

  •  删除容器

docker rm 容器ID                                #删除指定的容器,不能删除正在运行的容器,如果要删除运行的容器  rm -f

docker rm -f $(docker ps -aq)             #删除所有的容器

  •  启动和停止容器的操作

docker start 容器ID                # 启动容器
docker restart 容器ID             # 重启容器
docker stop 容器ID                # 停止当前正在运行的容器
docker kill 容器ID                   # 强制停止当前容器

操作命令

  • 查看日志
     

docker logs -f -t --tail 容器
#参数
-tf                         # 显示日志,t 代表时间戳
--tail number        # 要显示日志条数

  • 查看容器中进程信息 ps
     

docker top 容器ID

 

  • 查看容器的元数据

docker inspect 容器ID

  • 进入当前正在运行的容器 (我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置)

# 进入容器后开启一个新的终端,可以在里面操作(常用)
docker exec -it  容器ID /bin/bash

docker attch 容器ID  (进入容器正在执行的终端,不会启动新的进程)

  • 从容器中拷贝文件到主机上

docker cp 容器ID:容器内路径   目的的主机路径

 

相关文章:

Docker 笔记(上篇)

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

python自动化测试(六):唯品会商品搜索-练习

目录 一、配置代码 二、操作 2.1 输入框“运动鞋” 2.2 点击搜索按钮 2.3 选择品牌 2.4 选择主款 2.5 适用性别 2.6 选择尺码 2.7 选择商品:(通过css的属性去匹配) 2.8 点击配送地址选项框 一、配置代码 # codingutf-8 from selen…...

深度强化学习用于博弈类游戏-基础测试与说明【1】

深度强化学习用于博弈类游戏-基础【1】 1. 强化学习方法2. 强化学习在LOL中的应⽤2.1 环境搭建2.2 游戏特征元素提取1)小地图人物位置:2)人物血量等信息3)在整个图像上寻找小兵、防御塔的位置4)自编码器提取3. 策略梯度算法简介参考资料1. 强化学习方法 伴随着人工智能的潮起…...

通过requests库使用HTTP编写的爬虫程序

使用Python的requests库可以方便地编写HTTP爬虫程序。以下是一个使用requests库的示例: import requests# 发送HTTP GET请求 response requests.get("http://example.com")# 检查响应状态码 if response.status_code 200:# 获取响应内容html response.…...

550MW发电机变压器组继电保护的整定计算及仿真

摘要 电力系统继电保护设计是根据系统接线图及要求选择保护方式,进行整定计算,电力系统继电保护的设计与配置是否合理直接影响到电力系统的安全运行。如果设计与配置不当,保护将不能正确工作,会扩大事故停电范围,造成…...

Linux 命令|服务器相关

1. 在公共 linux 上创建 python 虚拟环境 【精选】在公共Linux服务器上创建自己的python虚拟环境_服务器创建自己的环境-CSDN博客 2. 查看现存的状态,看有没有程序在跑 nvidia-smi命令详解-CSDN博客 3. 上传本地文件到服务器 在本地 Mac 计算机的终端中&#x…...

node 第十三天 express初见

express概念 Fast, unopinionated, minimalist web framework for Node.js 快速、独立、极简的 Node.js Web 框架。 express相当于前端的jquery, 在不更改不侵入原生node的基础上封装了大量易用且实用的服务端api, express框架的封装原理就是前面第十天我们自己封装的简易服务器…...

Python selenium模块简介

视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 有些网站的数据是js动态渲染的,我们无法通过网页源码直接找到数据,只能通过找接口方式来获取数据,但是很多时候,数据又是json格式的…...

DIY相机(一)libcamera库

相机选型 DIY相机首先是要确定使用的相机型号。兼容树莓派,画质好一些的,目前主要有两款:一是Raspberry Pi Camera Module 3,二是Raspberry Pi HQ Camera。 下图是Raspberry Pi Camera Module 3的相关特性。支持自动对焦和HDR等…...

PHP简单实现预定义钩子和自定义钩子

在PHP中,钩子(Hooks)是一种机制,允许开发人员在特定的时机插入自定义代码。通过使用钩子,开发人员可以在应用程序的特定事件发生时执行自定义的功能或逻辑 钩子有两种类型:预定义钩子和自定义钩子。 预定…...

笔记本电脑的摄像头找不到黑屏解决办法

这种问题一般来说就是缺少驱动,就要下载驱动。 问题: 解决办法: 1.进入联想官网下载驱动 网站:https://newsupport.lenovo.com.cn/driveDownloads_index.html?v9d9bc7ad5023ef3c3d5e3cf386e2f187 2.下载主机编号检测工具 3.下…...

【Git】HEAD detached from xxx 问题及解决方案

问题背景 最近用git的时候遇到了一个问题,场景是这样的。 我有一个分支main,其中有两个commit A和B,A是最新commit,B是历史commit。我先切到B看了看之前的代码,然后切到A,并进行了一些代码修改&#xff0…...

Cannot connect to the Docker

执行docker基础命令失败! Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 原因:docker服务没有启动。 解决方法:执行 systemctl start docker 即可。...

校园物业报修小程序开发笔记一

背景 校园规模和复杂性: 大型学校和校园通常拥有众多的建筑物、设施和设备,需要有效的维护和报修系统,以满足学生、教职员工和校园管理人员的需求。 学生和员工需求: 学生和员工在校园内可能遇到各种维修问题,如故障的…...

用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程

🧸注:不要看我的文件多,那是我的其他项目,这个项目所用的文件我会全部用红框框起来,没框的部分不用管,前端两个文件,后端一个文件 📜 目录 首先,定义前后端交互接口 然…...

FFmpeg5.1.3编译动态库踩坑之旅(基于Linux虚拟机)

准备工作 环境准备 1.Windows安装Oracle VM VirtualBox 7.0.10,安装ubuntu-22.04.3。 坑一:无法往虚拟机里拖放复制文件,解决办法:登录Ubuntu虚拟机时切换到xorg方式登录,参考地址:Ubuntu Desktop 22.04…...

【语义分割】语义分割概念及算法介绍

文章目录 一、基本概念二、研究现状2.1 传统算法2.2 深度学习方法 三、数据集及评价指标3.1 常用数据集3.2 常用指标 四、经典模型参考资料 一、基本概念 语义分割是计算机视觉中很重要的一个方向。不同于目标检测和识别,语义分割实现了图像像素级的分类。它能够将…...

基于RK3568高性价比全国产EMS储能解决方案(一)概述

储能产业链框架 储能产业链可分为上游“原材料及生产设备”、中游“储能系统”、下游“储能场景应用及后市场服务”。 图1 储能产业链框架图 产业链中游的“储能电池系统”主要包括“能量管理系统(EMS)”、“电池管理系统(BMS)”、“储能逆变器(PCS)”、“电池组”四个部分。…...

3 Go的基础语法

概述 在上一节的内容中,我们介绍了第一个Go程序,包括:安装Go环境、编写第一个Go程序、编译并运行程序等。在本节中,我们将介绍Go的基础语法。Go是一门简洁和优雅的语言,有自己特殊的一些语法规则。因此,在介…...

Redis之Lua脚本讲解

这里写自定义目录标题 1 Lua1.1 简介1.1.1 注释1.1.2 变量1.1.3 数据类型1.1.4 控制结构1.1.5 函数1.1.6 模块1.1.7 字符串操作1.1.8 错误处理1.1.9 标准库 1.2 Redis和Lua脚本结合优点1.3 Lua脚本应用和调试1.3.1 缓存更新1.3.2 原子操作1.3.3 数据处理1.3.4 分布式锁1.3.5 Re…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块&#xff0c;提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中&#xff0c;这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构&#xff0c;与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

作为点的对象CenterNet论文阅读

摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表&#xff0c;并对每一个位置进行分类。这种做法既浪费又低效&#xff0c;并且需要额外的后处理。在本文中&#xff0c;我们采取了不同的方法。我们将物体建模为单…...