docker安装使用基础

一、镜像安装

我的docker安装在centos7虚拟机上(关于虚拟机网络设置此前已有总结VMware 搭建centos虚拟机网络设置_vmware centos 网络配置-CSDN博客),现在默认操作系统和网络已就位。

1、安装工具包

# 安装操作一般都需要管理员权限,直接切换
sudo su root 
# 安装包管理工具
yum install -y yum-utils

2、配置远程仓库

# 这个操作会将docker-ce.repo复制到/etc/yum.repos.d/目录
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

                              

 这句命令实质就是将docker-ce.repo文件复制到本机的/etc/yum.repos.d/目录下,这个文件的内容就是指定各种资源所在的链接。

3、安装

yum install docker-ce

 4、启动

# 启动
systemctl start docker
# 查看docker版本
docker version

 注意:配置和安装需要访问网络资源,官网容易下载失败,可多次尝试或更换国内镜像源。

5、补充-Ubuntu系统安装docker

5.1 直接从Ubuntu的官网下载安装

# 1、更新Ubuntu系统软件列表 apt-get 和 apt 是一样的
sudo apt update
# 2、安装
sudo apt install docker.io docker-compose

 5.2 从docker官网下载安装

# 1、更新软件包列表
sudo apt update
# 2、安装一些必要的基础依赖工具
sudo apt install ca-certificates curl gnupg lsb-release
# 3、创建一个目录存放密钥
sudo install -m 0755 -d /etc/apt/keyrings
# 4、将官网的密钥下载放在上一步创建的路径
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 5、赋予所有人这个密钥的可读权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 6、添加docker的apt源(就是各种地址)到本地。这一长串命令拆解开来,arch后面跟的是处理器型号,如amd64;然后指定密钥;然后是官网地址stable版本,最后就是将获取到的内容写入docker.list中
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 7、再次更新
sudo apt update
# 8、安装docker及相关组件
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 查看版本
docker -v

二、镜像创建

docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、资源、配置等文件。简单理解就是一个虚拟机,包含基础操作系统,这个系统里你可以安装其他的依赖。而镜像一旦创建,不可修改,即所有文件都是“只读”。因此,如果想要修改镜像配置,只能重新创建一个。而为了表示这两个镜像之间的继承关系,一般可以采用版本号进行表示,如algo:v1,algo:v2。

1、基于Dockerfile创建镜像

(1)编写Dockerfile

# 主机创建一个项目目录,存放各种资料文件
mkdir docker_test
cd docker_test
# 新建一个文件
vim Dockerfile

 Dockerfile里输入的内容如下:

# 基于官方模板创建镜像,包含python3.7
FROM python:3.7
# 设置工作目录,生成的镜像会默认创建这个目录
WORKDIR /docker_test
# 将docker_test下的app文件夹复制到镜像
COPY ./app /docker_test/app
# 镜像操作,一般是安装各种依赖,多个命令用 && 连接
RUN pip install -r /app/require.txt && yum install xx
# 也可以再写一个RUN命令
RUN yum install xxx
# 指定启动容器时需要执行的命令,只能有一条
CMD ["pthon", "/app/app.py"]

 目录结构如下:

                              

 注意:每执行一次RUN,镜像就会多增加一层,有点像洋葱。执行一次RUN命令,新的镜像就会在原来的镜像上套一层,层数是有限制的。而这样设计的好处就是,如果最后一层坏了(执行出错),再次生成镜像时,会基于倒数第二层开始执行,即只执行最后一句。

(2)基于Dockerfile生成镜像

# . 表示基于当前目录下Dockerfile生成,image_name为自定义的镜像名字
docker build -t image_name .
# 查看生成的镜像
docker images

               

三、容器

容器是镜像的实例,此时的文件系统将变成“可写”。一个镜像可以生成多个容器,在不同容器中,可以指定不同的依赖版本。

1、创建容器

# 创建名为my_container的容易,基于image_name镜像,并设置容器内的端口和主机端口的映射
docker run --name container_name -p 10001:10001 -p 10002:10002 -it image_name /bin/bash

2、复制文件到容器

# 从主机复制到指定容器的指定位置
docker cp /docker_test/app container_name:/docker_test

3、进入容器

docker exec -it container_name /bin/bash

4、退出容器

# 容器停止运行
exit
# 容器继续运行,回到主窗口
先 Ctrl + P 再 Ctrl + Q

5、启动容器

进入容器的前提是容器已运行

# 重启就是restart
docker start my_container

6、查看依赖某个镜像的所有容器信息

docker ps -a --filter ancestor=image_name

注意:以上命令中的容器或镜像名称都可以使用对应id代替。

四、离线安装

如果实际部署的设备无法连接外网,则需要将事先建立的镜像(可基于上述步骤)移植到生产设备。

1、使用安装包安装docker

# 官网下载地址https://download.docker.com/linux,根据对应操作系统和处理器选择版本下载
sudo yum localinstall <安装包名称>.rpm
# 启动
sudo systemctl start docker

2、保存本地生成的镜像

# 保存
docker save -o <镜像文件名>.tar <镜像名>:<版本>

3、加载镜像

# 将<镜像文件名>.tar文件拷贝到目标设备,然后执行
docker load -i <镜像文件名>.tar

4、运行

docker run -d <镜像名>:<版本>

五、卸载docker

1、停止所有容器

sudo docker stop $(sudo docker ps -aq)

2、删除所有容器

sudo docker rm $(sudo docker ps -aq)

3、卸载软件包

# ubuntu系统
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# centos
sudo yum remove docker-ce docker-ce-cli containerd.io

4、删除相关文件和目录

# 其他目录根据实际情况操作
sudo rm -rf /var/lib/docker

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode】 剑指 Offer学习计划(java版本含注释)(下)

目录 前言第十六天&#xff08;排序&#xff09;剑指 Offer 45. 把数组排成最小的数&#xff08;中等&#xff09;剑指 Offer 61. 扑克牌中的顺子&#xff08;简单&#xff09; 第十七天&#xff08;排序&#xff09;剑指 Offer 40. 最小的k个数&#xff08;简单&#xff09; 第…

STL常见容器(set/multiset)---C++

STL常见容器目录&#xff1a; 7. set/multiset 容器7.1 set/multiset 基本概念7.2 set构造和赋值7.3 set大小和交换7.4 set插入和删除7.5 set查找和统计7.6 set和multiset区别7.6.1 pair对组创建7.6.2 set和multiset区别 7.7 set容器排序7.7.1 内置数据类型7.7.2 自定义数据类型…

记录 关于navicat连接数据库报错1045的问题

重装数据库之后就连接不上了 报错1045 而网上的解决方案大都是更改数据库密码&#xff0c;但是我在第一步就被卡住无法更改密码&#xff0c;输入指令也报错&#xff0c;检查的环境变量也没错&#xff0c;经过长时间的试错终于找到解决了办法 解决办法 删除data文件夹 如果无法…

吸引用户购买产品的文案技巧,媒介盒子揭秘

在营销过程中&#xff0c;想要吸引用户购买产品&#xff0c;文案是重中之重&#xff0c;需要一定的技巧才能将文案写好&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;在品牌推广中如何通过一些小技巧吸引用户购买产品&#xff1a; 一、 少说专业术语 少说行话、黑话。多…

如何选择合适的幻兽帕鲁服务器CPU核心数和内存大小,避免丢包和延迟高?

根据幻兽帕鲁服务器的实际案例分析选择合适的CPU核心数和内存大小以避免丢包和延迟高&#xff0c;首先需要考虑的是服务器的性能需求。幻兽帕鲁服务器推荐使用4核CPU和16GB内存&#xff0c;建议使用32GB以上的内存才能稳定运行。这表明对于幻兽帕鲁这样的游戏服务器来说&#x…

2024有哪些免费的mac苹果电脑深度清理工具?CleanMyMac X

苹果电脑用户们&#xff0c;你们是否经常感到你们的Mac变得不再像刚拆封时那样迅速、流畅&#xff1f;可能是时候对你的苹果电脑进行一次深度清理了。在这个时刻&#xff0c;拥有一些高效的深度清理工具就显得尤为重要。今天&#xff0c;我将介绍几款优秀的苹果电脑深度清理工具…

(done) 如何计算 Hessian Matrix 海森矩阵 海塞矩阵

参考视频1&#xff1a;https://www.bilibili.com/video/BV1H64y1T7zQ/?spm_id_from333.337.search-card.all.click 参考视频2&#xff08;正定矩阵&#xff09;&#xff1a;https://www.bilibili.com/video/BV1Ag411M76G/?spm_id_from333.337.search-card.all.click&vd_…

关于vue中关于eslint报错的问题

1 代码保存的时候会自动将单引号报错为双引号 导致eslint报错的问题&#xff0c; 解决思路&#xff1a; 在项目根目录下新建一个.prettierrc.json文件 { “tabWidth”: 2,“useTabs”: false,“singleQuote”: true,“semi”: false} 2 关于报错代码的时候 出现尾随逗号报错…

继承-学习2

this关键字&#xff1a;指向调用该方法的对象&#xff0c;一般我们是在当前类中使用this关键字&#xff0c;所以我们常说代表本类对象的引用 super关键字&#xff1a;代表父类存储空间的标识(可看作父类对象的引用) 父类&#xff1a; package ven;public class Fu {//父类成员…

WhatsApp代理設置指南

某些情況下&#xff0c;你可能需要使用WhatsApp代理來確保WhatsApp順暢且不受限制的通信。本篇文章將講解WhatsApp代理是什麼、WhatsApp代理的使用場景、以及如何在WhatsApp中使用和設置代理。​​​​​​​ WhatsApp代理指什麼? WhatsApp代理是位於可以訪問WhatsApp的國家或…

AtCoder Beginner Contest 341

C - Takahashi Gets Lost 分析&#xff1a;数据小&#xff0c;暴力没什么好说的 int h,w,n; string t; char c[505][505]; int dx[4]{1,-1,0,0}; int dy[4]{0,0,1,-1}; int get(char c){if(cL)return 3;if(cU)return 1;if(cR)return 2;return 0; } int check(int x,int y,int …

ensp路由器将不同网络连通在一起

1.拓扑结构信息如下 二层交换机&#xff1a;lsw2,lsw3,lsw5,lsw6 不进行ip配置&#xff0c;只是定义vlan&#xff0c;和主机标注的保持一致&#xff0c;向下连接pc用access&#xff0c;向上连接路由交换机用trunk lsw2配置信息如下图 定义vlan&#xff0c;设置各个连接口的方式…

如何进行弱网测试?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 如今这个高度互联的时代里&#xff0c;网络环境对于应用程序的影响越来越重要。 而弱网测试就是…

SpringMVC 学习(七)之报文信息转换器 HttpMessageConverter

目录 1 HttpMessageConverter 介绍 2 RequestBody 注解 3 ResponseBody 注解 4 RequestEntity 5 ResponseEntity 6 RestController 注解 1 HttpMessageConverter 介绍 HttpMessageConverter 报文信息转换器&#xff0c;将请求报文&#xff08;如JSON、XML、HTML等&#x…

Biotin aniline,生物素苯胺,用于研究蛋白质结构和功能

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;769933-15-5&#xff0c;Biotin aniline&#xff0c;生物素苯胺&#xff0c;Biotin-aniline&#xff0c;生物素-苯胺 一、基本信息 【产品简介】&#xff1a;Biotin aniline is composed of three parts: biotin, w…

【会议征稿通知】第十届人文学科与社会科学研究国际学术会议(ICHSSR 2024)

第十届人文学科与社会科学研究国际学术会议&#xff08;ICHSSR 2024) 2024 10th International Conference on Humanities and Social Science Research 第十届人文学科与社会科学研究国际学术会议&#xff08;ICHSSR 2023)将于2024年4月26-28日在中国厦门隆重举行。会议主要…

RabbitMQ的常见工作模式

Work queues 工作队列模式 模式说明 通过Helloworld工程我们已经能够构建一个简单的消息队列的基本项目&#xff0c;项目中存在几个角色:生产 者、消费者、队列&#xff0c;而对于我们真实的开发中 &#xff0c;对于消息的消费者通过是有多个的。 比如在实现用户注册功能时&…

Apache Calcite 一条 SQL 的查询计划生成之旅【上】

作者&#xff1a;沈磊&#xff08;LakeShen&#xff09;&#xff0c;公众号&#xff1a;雷克分析 背景 Apache Calcite 作为一款开源的动态数据管理框架&#xff0c;由于其模块化、可扩展、以及不和任何计算引擎绑定的特性&#xff0c;目前在开源项目和商业化产品中已得到广泛…

Cesium 自定义Primitive

1、为什么要自定义Primitive a、在飞机飞行过程中&#xff0c;如果使用entity同时绘制飞机和线的时候&#xff0c;会发现飞机的飞行位置和线的位置不统一&#xff0c;出现差距&#xff0c;出现脱线。 b、结合代码分析&#xff0c;cesium的线和飞机模型是分开渲染的&#xff0c;…

跨境电商与支付介绍

1、跨境电商定义和分类&#xff1b; 2、国际贸易清结算&#xff1b; 3、跨境支付&#xff1b; 1、跨境电商定义和分类 跨境电商业务简单说就是指不同国家地域的主体通过电子商务进行交易的一种业务模式。同传统的电商不同&#xff0c;交易双方属于不同的国家。因此&#xff0…