Docker 的安装和使用
参考资料:
- 通俗易懂了解什么是docker?
- Docker 教程 | 菜鸟教程
- Ubuntu 22.04 安装 Docker
- Docker 超详细基础教程
- WSL2 支持 systemctl 命令
- systemd 和 systemctl 是什么?
- 使用正确的命令重启 WSL 子系统
- Ubuntu 修改源镜像方法
- Docker 中出现 ‘/etc/resolv.conf’: Device or resource busy 错误的处理原因及方式
- Linux中永久设置环境变量 LD_LIBRARY_PATH 的终极指南
文章目录
- 启用 systemd
- Docker 安装
- Docker 使用
- 基本指令
- 数据卷挂载
- 简单配置容器
启用 systemd
本人使用 WSL 作为开发环境,但是它默认使用 init
管理进程;使用 systemctl
时会报错。现在我们在 WSL 中启用 systemd
进程管理器。
cd /etcsu #进入 root 权限echo 123 > wsl.conf #新建配置vim wsl.conf
打开配置文件,输入:
[boot]
systemd=true
然后重启 WSL(没法直接 reboot
),进入 cmd
执行
wsl --shutdownwsl
查看是否成功启用 systemctl
命令行工具,
systemctl list-unit-files --type=service
Docker 安装
首先更新软件包,
sudo apt-get update #拉取列表
sudo apt-get upgrade #实际更新
然后开始安装 Docker,
sudo apt-get install ca-certificates curl gnupg lsb-releasecurl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" #添加软件源apt-get install docker-ce docker-ce-cli containerd.i #安装dockersudo usermod -aG docker $USER #配置用户组
然后重启 WSL(和上一节如何启用 systemd 中的步骤一样),启动 Docker 服务
sudo service docker startsudo apt-get -y install apt-transport-https ca-certificates curl software-properties-commonsudo service docker restart
现在尝试运行一个容器(会自动下载,挺小的),
sudo docker run hello-world
它会打印一些信息。
Docker 使用
基本指令
直接输入 docker
将打印帮助信息,
Usage: docker [OPTIONS] COMMAND
...
各指令的帮助文档,
docker [OPTIONS] --help
查看 docker 版本:
docker version
查看本地镜像(下载/导入):
docker images
删除本地镜像(需要先 stop
和 rm
对应的容器),
docker rmi hello-worlddocker rmi $(docker images -a -q) #删除所有镜像
交互式运行 Ubuntu 22.04
(下载大约 30 MB 的镜像),使用 exit
退出(会结束容器)
docker run -it ubuntu:22.04 /bin/bash #是两个参数 -i 和 -t,但只用其中之一会卡死
后台运行(在容器中运行一个后台程序),
docker run -d ubuntu:22.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
使用如下指令查看所有容器,包括:CONTAINER ID(标志符),IMAGE(镜像),COMMAND(执行的指令),CREATED(创建时间),STATUS(当前状态),PORTS(端口和连接),NAMES(名称)
docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9219b814c9a9 ubuntu:22.04 "/bin/sh -c 'while t…" About a minute ago Up About a minute happy_goldberg
查看某个容器内的标准输出流,
docker logs 9219b814c9a9
docker logs happy_goldberg
进入后台容器,使用 exit
退出(仍保持后台运行)
docker exec -it 9219b814c9a9 /bin/bash
结束后台容器,
docker stop 9219b814c9a9docker stop $(docker ps -a -q) #停止所有容器
重启被结束的容器(数据文件都还在),
docker restart 9219b814c9a9
导出容器快照,
docker export 9219b814c9a9 > docker-9219b814c9a9.tar
删除容器(同时也销毁数据),
docker rm 9219b814c9a9docker rm $(docker ps -a -q) #删除所有容器
从快照导入容器镜像(使用 docker images
查看是否成功导入)
docker import docker-9219b814c9a9.tar test:v1
然后尝试运行该镜像(成功恢复了数据),
docker run -itd test:v1 bash
数据卷挂载
为了方便 WSL 中容器和 Windows 主机的交互,我们将 WSL 子系统上的 mnt
目录中的某个文件夹,给挂载到某个容器上。注意,挂载的目录不是容器的一部分,在导出镜像时其中的文件不被保留。
首先,在 Windows 主机上新建一个专用目录,例如 D:\Docker
在创建容器时,使用如下指令来挂载目录(挂载到 /root
上),
docker run -v /mnt/d/Docker:/root 34f4123b1ce3
其创建了如下的容器,
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
047bc0c31065 ubuntu:22.04 "bash" 21 seconds ago Up 20 seconds elastic_heisenberg
进入该容器,查看 /root
目录(可以和 Windows 主机共享数据):
docker exec -it 047bc0c31065 bashcd /root
简单配置容器
新建的容器是空白的,很多工具包都没有(文本编辑器都没有!),因此这里简单配置一下。
直接 apt update
连不上 http://archive.ubuntu.com/ubuntu/,因此要修改 apt
源。我们已经配置了 /root
挂载,因此可以进入 /etc/apt/
,使用如下的指令把要修改的文本复制出来:
cp ./sources.list /root/
然后在 Windows 主机的 D:\Docker
目录内,修改这个文件如下,
# 国内的 apt 源######## Ubuntu22.04LTS 清华镜像源 ###############
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse######## Ubuntu22.04 阿里云镜像源 ###############
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse######## Ubuntu22.04 中科大镜像源 ###############
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
如果依然连不上,那就是 DNS 有问题,需要修改 /etc/resolv.conf
文件。但是在 docker 中宿主的 /etc/resolv.conf
被挂载入容器,在容器中没法删除它(总是报错 “rm: cannot remove ‘./resolv.conf’: Device or resource busy”)。
首先,看一眼文件内容,
cat ./resolv.conf# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.nameserver 10.255.255.254# Based on host file: '/etc/resolv.conf' (legacy)
# Overrides: []
然后,使用如下的替换指令来修改它:
echo "$(sed 's/10.255.255.254/8.8.8.8/g' /etc/resolv.conf)" > /etc/resolv.conf
现在,可以更新软件列表和软件包了,
apt-get update
apt-get upgrade
然后安装一些必要的软件包,
apt install vim wget curl gitapt install gcc g++ make cmake autoconf automake texinfo libtool
还要对 git
换下源,
git config --global url."https://mirror.ghproxy.com/".insteadOf "https://github.com/"vim ~/.gitconfig
相关文章:
Docker 的安装和使用
参考资料: 通俗易懂了解什么是docker?Docker 教程 | 菜鸟教程Ubuntu 22.04 安装 DockerDocker 超详细基础教程WSL2 支持 systemctl 命令systemd 和 systemctl 是什么?使用正确的命令重启 WSL 子系统Ubuntu 修改源镜像方法Docker 中出现 ‘/etc/resolv.…...

鸿蒙轻内核A核源码分析系列七 进程管理 (2)
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核A核源码分析系列一 数据结构-双向循环链表 轻内核A核源码分析系列二 数据结构-位图操作 轻内核A核源码分析系列三 物理内存(1࿰…...
关于TypeScript使用讲解
TypeScript讲解 安装环境 1.安装node js 配置环境变量 2.在终端中 运行 npm i -g typescript typescript: 用于编译ts代码 提供了 tsc命令 实现了将 TS>>>> JS转换 验证: tsc -v 编译并运行 TS代码 1.创建ts文件(TS文件为后缀名的文件࿰…...

C语言 | Leetcode C语言题解之第393题UTF-8编码验证
题目: 题解: static const int MASK1 1 << 7; static const int MASK2 (1 << 7) (1 << 6);bool isValid(int num) {return (num & MASK2) MASK1; }int getBytes(int num) {if ((num & MASK1) 0) {return 1;}int n 0;in…...

Netty权威指南:Netty总结-编解码与序列化
第四章 TCP粘包/拆包问题 4.1 TCP 粘包/拆包 TCP是流协议,也就是没有界限的的一串数据,底层并不知道上层业务数据的具体含义,也就是说一个完整的包可能会被拆分成多个包进行发送,也可能把几个小包封装成一个大的数据包发送。这就…...

FIDAVL:基于视觉语言模型的假图像检测与归因 !
FIDAVL:基于视觉语言模型的假图像检测与归因 ! 这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 作者提出了FIDAVL:使用视觉语言模型进行虚假图像检测。FIDAVL是一…...

如何通过海外云手机提升运营效率
随着技术的不断进步,市场上出现了越来越多的提高跨国电商运营效率的应用,海外云手机就是其中一个。海外云手机的优势体现在多个方面,那么如何通过使用海外云手机来提升运营效率?可以从以下几个方面了解。 首先,海外云手…...
数据库4个范式的说明
在数据库设计中,范式(Normal Form)用于消除冗余和异常,确保数据一致性。以下是第一范式、第二范式、第三范式和BCNF(Boyce-Codd Normal Form,即第四范式)的示例说明: 1. 第一范式&a…...

Excel怎么截图?快速捕捉工作表的多种方法
大家好,这里是效率办公指南! 📸 在日常工作中,我们经常需要对Excel工作表进行截图,无论是为了记录数据、制作演示还是进行数据对比。今天,我们就来学习几种在Excel中截图的方法以及它们的快捷键。 一、使…...
MyBatis动态SQL标签总结、开发手册、高阶用法(动态SQL、OGNL、批量操作、片段重用、 SQL 组合、 执行优化、嵌套查询与延迟加载)
MyBatis提供了一个非常强大的动态SQL功能,它使用了一组XML标签来帮助我们根据不同条件生成动态SQL。动态SQL的设计让开发者可以根据业务需求,灵活地构建SQL查询语句。以下是MyBatis动态SQL标签的总结。 动态SQL标签说明特点<if>条件判断语句&…...

出处不详 取数游戏
目录 取数游戏题目描述背景输入输出数据范围 题解解法优化 打赏 取数游戏 题目描述 背景 两人将 n n n个正整数围成一个圆环,规则如下: 第一名玩家随意选取数字;第二名玩家从与第一名玩家相邻的两个数字中选择一个;而后依次在…...
拉取ros2_control_demos存储库
目录 克隆存储库 方法 1: 使用 git clone 和 rosdep 安装依赖 方法 2: 使用 vcs 工具管理多个存储库 区别总结 rosdep 和 APT 的关系 网络问题 安装依赖 克隆存储库 方法 1: 使用 git clone 和 rosdep 安装依赖 下载存储库: mkdir -p ~/ros2_ws/src cd ~/ros…...
Apache Doris Flink Connector 24.0.0 版本正式发布
亲爱的社区伙伴们,Apache Doris Flink Connector 24.0.0 版本已于 2024 年 9 月 5 日正式发布。该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。此外,整库同步所依赖的 FlinkCDC,也需升级…...

语音控制小夜灯的实现方案介绍
语音控制小夜灯的实现方案组成部分 语音控制小夜灯的实现方案主要包括硬件组装和软件编程两个部分。 硬件组装涉及将语音声控模块、灯泡、USB连接线等组件正确连接。首先,使用螺丝刀和螺丝将四个隔离柱固定在底板四个拐角处,同时将语音声控模…...

万龙觉醒免费辅助:VMOS云手机辅助巴克尔阵容搭配攻略!
《万龙觉醒》是一款策略类手游,选择合适的英雄阵容搭配能够极大提升战斗效果。而借助VMOS云手机的辅助功能,玩家可以更加轻松地管理游戏进程,优化操作体验。以下是VMOS云手机的三大核心功能,帮助你更好地掌控《万龙觉醒》战局。 V…...

【English】长难句翻译
这里写目录标题 技巧知识点1. 定语从句 和 状从区别2. 定从 修饰词3. who 和 whom 区别4. 除了定从、状从,还有啥?5. 怎么在长难句快速定位到主谓宾而不被各种从句中的动词影响判断6. 没有,的那种一大堆从句连起来的长难句怎么办7. 时态怎么放在翻译里总结技巧 知识点 1. 定语…...

npm login 或者 npm publish 超时timeout
场景:空闲时间想自己尝试下npm发布包,毕竟这东西可以不用,但不能不会 步骤很简单 1.npm login 2.npm publish 这里有个坑。。。因为想发布到npm上,所以这里的镜像源要换回https://registry.npmjs.org,不能使用淘宝镜像…...
Python的openpyxl使用記錄(包含合併單元格,圖片下載和圖片插入,設置邊框,設置背景顏色)
背景 因為公司最近要求我做一份自動化導出報告,內容有點多,為了省事,我選用了python,後面估計要自建在線辦公系統,這個後續再講 需要的庫 openpyxl 和Pandas 開始 Execl導入 from openpyxl import load_workbook …...

基于springboot+vue实现的在线商城系统
系统主要功能: (1)商品管理模块:实现了商品的基本信息录入、图片上传、状态管理等相关功能。 (2)商品分类模块:实现了分类的增删改查、分类层级管理、商品分类的关联等功能。 (3&…...

fastjson漏洞--以运维角度进行修复
文章目录 前言一、漏洞详情二、修复过程1.通过脚本方式修复1.1.脚本修复原理1.2.脚本演示1.3.执行脚本 2. 手动升级包2.1.修复步骤2.2.遇到的问题 前言 该漏洞是三个月前由安全团队扫描出来的,主要影响是: FastJSON是阿里巴巴的开源JSON解析库,它可以解…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...