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

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

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

相关文章

基于Keil的RTE(run time environment)配置GD32开发环境,移植FreeRTOS

前言&#xff1a; 10多年前就用STM32了&#xff0c;最近从STM32转到GD32&#xff0c;感觉国产的芯片发展是真的快&#xff0c;不但更便宜&#xff0c;还更快更好用了&#xff08;是在是受不了STM32 I2C BUSY的那个BUG&#xff09;。 先说下&#xff0c;实际上STM32的程序可以…

2024 CHINASHOP丨悠络客AI应用亮点抢鲜看,还有价值百元门票免费送哦!

3月13日-15日&#xff0c;备受国内外关注的第二十四届中国零售业博览会&#xff08;2024 CHINASHOP&#xff09;将在上海国家会展中心正式开展&#xff01;悠络客作为深耕智慧门店15年的公有云人工智能企业&#xff0c;也将带着全新AI产品和智慧门店解决方案亮相展会&#xff0…

【C\C++】C\C++内存管理

目录 一、C\C内存分配 1、栈区 2、堆区 3、全局(静态)区 4、常量区 5、代码段 二、C语言内存管理方式 1、malloc 2、calloc 3、relloc 4、free 三、C内存管理方式 一、C\C内存分配 C\C内存分区示意图如下&#xff1a; 1、栈区 栈区由编译器自动分配释放&#xff0…

【Kotlin】函数

1 常规函数 1.1 无参函数 fun main() {myFun() }fun myFun() {println("myFun") // 打印: myFun } 1.2 有参函数 1&#xff09;常规调用 fun main() {myFun("myFun") // 打印: myFun }fun myFun(str: String) {println(str) } 2&#xff09;形参指定默…

Linux系统Docker部署RStudio Server

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE&#xff0c;并通过 Web 浏览器进行访问…

配置资源管理

目录 1 Secret1.1 Secret 的类型1.2 Secret 使用方式1.3 示例1.3.1 创建 Secret 示例1.3.2 使用 Secret 示例 2 ConfigMap2.1 示例2.1.1 创建 ConfigMap 示例2.1.2 Pod 中使用 ConfigMap2.1.3 ConfigMap 的热更新2.1.4 ConfigMap 更新后滚动更新 Pod 1 Secret Secret 是用来保…

PaddleOCR基于PPOCRv4的垂类场景模型微调——手写文字识别

PaddleOCR手写文字识别 一. 项目背景二. 环境配置三. 数据构造四. 模型微调五. 串联推理六. 注意事项七. 参考文献 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;ORC是指对包含文本资料的图像文件进行分析识别处理&#xff0c;获取文字…

HTML+CSS+BootStrap景区官网

一、技术栈 支持pc、pad、手机访问&#xff0c;页面自适应&#xff01;&#xff01; html5cssbootstrapjs 二、项目截图 接受项目定制&#xff0c;站内联系博主&#xff01;&#xff01;&#xff01;

【设计模式】观察者模式及函数式编程的替代C++

本文介绍观察者模式以及使用函数式编程替代简单的策略模式。 观察者模式 观察者模式是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;其所有依赖者都会收到通知并自动更新。 当对象间存在一对多关系时&#…

构建安全的REST API:OAuth2和JWT实践

引言 大家好&#xff0c;我是小黑&#xff0c;小黑在这里跟咱们聊聊&#xff0c;为什么REST API这么重要&#xff0c;同时&#xff0c;为何OAuth2和JWT在构建安全的REST API中扮演着不可或缺的角色。 想象一下&#xff0c;咱们每天都在使用的社交媒体、在线购物、银行服务等等…

linux中对信号的认识

信号的概念与相关知识认识 信号是向目标进程发送消息通知的的一种机制。 信号可以以异步的方式发送给进程&#xff0c;也就是说&#xff0c;进程无需主动等待&#xff0c;而是在任何时间都可以接收到信号。 信号的种类 用kill-l命令查看系统定义的信号列表&#xff1a; 前台…

「Java开发指南」MyEclipse如何支持Spring Scaffolding?(四)

在上文中&#xff08;点击这里回顾>>&#xff09;主要为大家介绍了应用程序分层、代码助手等内容&#xff0c;本文将继续介绍Spring DSL模型等。 MyEclipse v2023.1.2离线版下载(Q技术交流&#xff1a;742336981&#xff09; 5. Spring DSL模型 支持Spring的MyEclipse…