一、Ubuntu安装Docker

下面是具体的步骤:
1.准备条件:安装前先卸载操作系统默认安装的docker,再安装必要支持。

#安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc#安装必要支持
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

2.准备安装:设置阿里源,因为访问官方源会超时。

# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg#添加阿里apt源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#更新源
sudo apt update
sudo apt-get update

3.安装Docker

#安装最新版本的Docker
sudo apt install docker-ce docker-ce-cli containerd.io
#等待安装完成#查看Docker版本
sudo docker version#查看Docker运行状态
sudo systemctl status docker

当安装好了Docker之后,有两种方式来执行docker 命令

  • 在docker命令前加上sudo, 比如:sudo docker ps
  • sudo -i 切换至root用户,再执行docker 命令,比如:docker ps

由于国内无法访问到Docker,首先在安装的时候选国内阿里的源,参考上面的第2点。
另外还需要在docker daemon 配置文件中增加国内可用的 docker hub mirror ;
在 /etc/docker/ 这个位置找到daemon.json 文件【没有此文件可以新建】修改为以下内容:

{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"],"insecure-registries": ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],"debug": true,"experimental": false
}

在这里插入图片描述

重载和重启dockers服务

sudo systemctl daemon-reload
sudo systemctl restart docker

启动Docker并添加开机自启动

#启动 Docker
sudo systemctl start docker#设置开机启动 Docker
systemctl enable docker#重启 Docker 
sudo systemctl restart docker

二、常用docker命令

1. docker pull
拉取镜像到本地,如拉取mysql镜像可以用docker pull mysql:版本号,不写默认是最新。
在这里插入图片描述

2. docker images
查看本地镜像
在这里插入图片描述
3. docker rmi
删除本地镜像
在这里插入图片描述
4. docker ps
列出当前正在运行的 Docker 容器
docker ps -a 列出所有创建的容器,包括停止运行的容器
ps 是 “process status” 的缩写, -a 代表 --all
在这里插入图片描述
5. docker rm
删除指定容器,删除前需要停止运行容器,或使用docker rm -f 强制删除
docker rm 容器ID或者容器名 都可以删除容器
在这里插入图片描述
6. docker run
用于创建一个新的容器,并在该容器中启动指定的镜像所对应的应用程序或进程。它会先检查本地是否存在指定的镜像,如果不存在,则会从默认的镜像仓库(如 DockerHub)中拉取该镜像,然后基于该镜像创建容器,并为容器分配所需的资源,最后启动容器内的应用程序。如果镜像已经存在,则直接使用本地镜像创建并启动容器。

#直接运行
docker run python:3.9-slim#交互式运行
docker run -it --name testContainer python:3.9-slim /bin/bash
  • -it:表示以交互式模式运行容器

  • –name testContainer:为容器指定一个名称,方便后续操作

  • python:3.9-slim:使用指定的镜像

  • /bin/bash:启动一个bash shell

  • 退出容器 exit
    在这里插入图片描述
    docker start 用于启动已经创建但处于停止状态的容器。它不会创建新的容器,也不会检查或拉取镜像,而是直接启动之前已经创建好的处于停止状态的容器,使容器内的应用程序或进程继续运行。

    docker stop 停止容器运行。
    在这里插入图片描述

7. docker exec
进行容器内部

docker exec -it testContainer bash

在一个正在运行的名为 testContainer 的容器中执行交互式 bash 命令
-it:表示以交互式模式运行容器
bash:启动一个bash shell
在这里插入图片描述

8. docker build

用来执行Dockerfile文件,制作自己的镜像时会用到

docker build -t myapp:3 .

-t 用于给镜像命名,这里将其命名为myapp 并带上标签
最后的 . 代表构建上下文的路径,也就是告诉 Docker,将当前目录及其包含的所有文件和子目录作为构建镜像时可访问的范围

三、构造Python Flask Web应用镜像

1. 创建Flask应用
新建一个项目pythonflaskweb ,创建 app.py 文件

# -*- coding: GBK -*-
# 处理中文乱码from flask import Flask
from datetime import datetime
import pytzapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Docker!'@app.route('/index')
def hello_index():# 设置时区为北京beijing_tz = pytz.timezone('Asia/Shanghai')# 获取当前UTC时间utc_now = datetime.utcnow().replace(tzinfo=pytz.utc)# 转换为北京时区时间beijing_now = utc_now.astimezone(beijing_tz)TT= beijing_now.strftime('%Y-%m-%d %H:%M:%S')return (f"当前时间是: {TT}")if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

2. 创建Dockerfile
Dockerfile是Docker镜像的构建脚本,用于定义应用的运行环境。以下是一个典型的Flask应用的Dockerfile:

# 使用官方Python基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制当前目录内容到工作目录
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露应用运行的端口
EXPOSE 5000# 运行应用
CMD ["python", "app.py"]

3. 创建requirements.txt
为了管理Python依赖,需要创建一个requirements.txt文件,列出所有必要的库:

Flask==2.2.2
Werkzeug==2.3.7
pytz

4.构建Docker镜像
在项目根目录下运行以下命令构建Docker镜像:

docker build -t flask-app .

-t 选项用于给镜像命名,这里我们将其命名为flask-app
最后的 . 代表构建上下文的路径

5.运行Docker容器
构建完成后,可以使用以下命令运行容器

docker run -p 5000:5000 flask-app

-p 选项用于端口映射,将主机的5000端口映射到容器的5000端口

6.验证应用
在浏览器中访问http://localhost:5000,如果看到“Hello, Docker!”,说明你的Flask应用已经成功运行在Docker容器中。
在这里插入图片描述
在这里插入图片描述

下图为项目结构:
在这里插入图片描述

7.打包镜像和加载镜像
docker save 命令允许你将一个或多个镜像保存到一个tar归档文件中,然后可以将其复制到另一台机器。
docker load 命令允许你从tar归档中加载镜像到另一台机器上。

#使用 docker images 命令来列出机器上的所有图像
docker images #使用 docker save 命令将镜像保存到一个tar文件中
docker save IMAGE ID > MyImage.tar #使用 docker load 命令将镜像加载到机器
docker load < MyImage.tar 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

7. 实现接口多重断言pytest-assume

pytest-assume 终极指南&#xff1a;实现多重断言的无缝验证 在自动化测试中&#xff0c;单个测试往往需要验证多个条件。本文将深入解析如何通过pytest-assume插件优雅解决多重断言问题。 一、为什么需要多重断言&#xff1f; 传统断言的局限性 def test_user_profile():use…

HTML 按钮单击事件示例

# HTML 按钮单击事件示例 以下是几种不同的方式来实现按钮的单击事件&#xff1a; ## 1. 最简单的 HTML 按钮单击事件 html <!DOCTYPE html> <html> <head> <title>按钮单击事件示例</title> </head> <body> <!-- 方法…

Kamailio SIP+RTP双网卡SBC呼叫流程与媒体处理说明

本文档旨在详细解释基于提供的 kamailio_sbc_dual_nic.cfg 配置文件&#xff0c;在双网卡SBC&#xff08;Session Border Controller&#xff09;场景下&#xff0c;Kamailio (5.8.3) 如何与rtpengine协同工作&#xff0c;处理SIP信令以及音频、视频和RTCP媒体流的转发。该方案…

青少年编程与数学 01-012 通用应用软件简介 15 人工智能助手

青少年编程与数学 01-012 通用应用软件简介 15 人工智能助手 一、什么是人工智能助手二、人工智能助手的产生和发展&#xff08;一&#xff09;早期探索阶段&#xff08;二&#xff09;技术突破阶段&#xff08;三&#xff09;广泛应用阶段 三、人工智能助手的主要功能&#xf…

JavaWeb学习——day9(图书管理系统初级)

文章目录 1. 项目功能模块设计1. 登录与权限控制&#xff1a;2. 图书管理功能&#xff08;仅管理员&#xff09;3. 用户功能&#xff08;普通用户&#xff09;&#xff1a; 2. 数据库设计3. 具体功能实现步骤步骤 1&#xff1a;扩展 UserService 来管理角色步骤 2&#xff1a;修…

【设计模式】策略模式 在java中的应用

文章目录 概述策略模式的定义与应用场景定义应用场景 策略模式的核心设计思想 策略模式的纯Java实现1. 定义策略接口&#xff08;抽象基类&#xff09;2. 设计具体策略类3. 通过示例代码理解策略模式的基本用法 策略模式的优缺点与扩展性分析1. 策略模式在设计中的优势2. 如何让…

Container

目录 一、Containerd 概述 1. 什么是 Containerd 主要特点和功能&#xff1a; 2. Containerd 的起源与背景 二、Containerd 架构 1. 架构概述 2. 核心组件解析 &#xff08;1&#xff09;Storage&#xff08;存储&#xff09; &#xff08;2&#xff09;Metadata&…

C#设计模式-Builder-生成器-对象创建型模式

using System; using System.Collections.Generic;namespace A4_Builder_生成器_对象创建型模式 {// 产品类&#xff1a;最终要构建的复杂对象public class Computer{public string CPU { get; set; }public string GPU { get; set; }public int RAM { get; set; } // GBpublic…

C语言堆内存管理详解:malloc和free的使用指南

在C语言程序设计中&#xff0c;内存管理是一个重要的话题。本文将详细介绍堆内存的分配和释放&#xff0c;重点讲解malloc和free函数的使用方法&#xff0c;并通过实例说明相关注意事项。 一、堆内存与栈内存的区别 在C语言中&#xff0c;内存主要分为堆内存和栈内存&#xf…

探索 Oracle Database 23ai 中的 SQL 功能

探索 Oracle Database 23ai 中的 SQL 功能 介绍目标前提条件 功能 1&#xff1a;使用 FROM 子句功能 2&#xff1a;使用 BOOLEAN 数据类型功能 3&#xff1a;使用 IF NOT EXISTS DDL 子句功能 4&#xff1a;使用 INSERT 插入多行功能 5&#xff1a;使用新的 VALUE 构造函数功能…

SQL(6)

! 会排除null数据 select name from Customer where referee_id ! 2 or referee_id is null; 交叉联结 交叉连接&#xff08;CROSS JOIN&#xff09;-CSDN博客 197. 上升的温度 select a.id from weather as a cross join weather as b on datediff(a.recordDate ,b.recordD…

【Java面试题】cookie、session、jwt/token的异同

以下是对Cookie、Session、Token与JWT的异同的完善分析&#xff0c;结合技术原理、安全性和应用场景进行系统性对比&#xff1a; &#x1f50d; 一、核心概念与工作流程 机制定义工作流程核心特点Cookie客户端存储的小型文本数据1. 服务器通过Set-Cookie响应头下发数据2. 浏览…

数字经济时代科技创业的巨大潜力

2025年3月&#xff0c;42岁的字节跳动创始人张一鸣以655亿美元身家成为中国新首富。这位"80后"企业家白手起家的故事&#xff0c;展现了数字经济时代科技创业的巨大潜力。本文将带您了解张一鸣的成功秘诀&#xff0c;分析网络安全行业的最新趋势&#xff0c;并为计算…

深入剖析Nginx架构及其不同使用场景下的配置

一、Nginx 整体架构概览 1. Nginx简介 Nginx 是采用 C 语言 编写的高性能 Web 服务器、反向代理服务器及邮件代理服务器&#xff0c;特点是&#xff1a;高并发、高可用、低内存占用、模块化设计。 架构核心理念&#xff1a; Master-Worker 多进程模型 事件驱动&#xff08;…

单元测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 对于软件测试&#xff0c;我们先按照开发阶段来进行划分&#xff0c;将软件测试分为单元测试、集成测试、系统测试、验收测试&#xff0c;下面我们来聊聊单元测试。…

四款好用的Windows虚拟打印机,文档转PDF

1&#xff0c;Microsoft Print To PDF 2&#xff0c;Foxit Reader PDF Printer 3&#xff0c;Adobe PDF 4&#xff0c;clawPDF 参考文档&#xff1a; https://mp.weixin.qq.com/s/_mt4J2RwhqQE36DRAvc-Rg

《map和set的使用介绍》

引言&#xff1a; 上次我们学习了第一个高阶数据结构—二叉搜索树&#xff0c;趁热打铁&#xff0c;今天我们就再来学习两个数据结构—map和set。 一&#xff1a;序列式容器和关联式容器 前面我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、arra…

PostgreSQL(二十六)分区表管理

目录 一、分区表特点 1、概念&#xff1a; 2、好处&#xff1a; 3、特点&#xff1a; 二、范围分区介绍 1、简介 2、范围分区实验&#xff1a; 三、list分区介绍 1、简介 2、list分区表实验 四、hash分区介绍 1、简介 2、hash分区表实验 五、混合分区介绍 1、简…

概率论中的生日问题,违背直觉?如何计算? 以及从人性金融的角度分析如何违背直觉的?

一、生日问题的概率计算&#xff1a;为何23人就有50%概率撞生日&#xff1f; 1. 问题背景与直觉矛盾 生日问题指&#xff1a;在n个人中&#xff0c;至少有两人生日相同的概率超过50%时&#xff0c;n的最小值是多少&#xff1f; 直觉判断&#xff1a;因一年有365天&#xff0c…

Qt for WebAssembly官方说明文档

链接 Qt for WebAssembly | Qt 5.15