【DevOps】Docker安装和使用示例

一、Ubuntu 20.04 上安装 Docker

在 Ubuntu 20.04 上安装 Docker 可以通过几种不同的方法完成,其中最简单和最常见的方法是使用 Docker 的官方安装脚本,或者通过 Ubuntu 的包管理工具 apt 手动安装。这里我将介绍两种方法:使用 Docker 的便捷安装脚本和使用 apt 手动安装。

方法1:使用 Docker 的便捷安装脚本

这个方法是最快捷的,适用于快速设立一个开发环境。但注意,官方脚本会添加 Docker 的官方仓库到你的系统中,适合信任 Docker 仓库的场景。

  1. 更新你的包索引:

    sudo apt update
    
  2. 安装必要的包:

    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
  3. 下载 Docker 的官方安装脚本并执行:

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    
  4. 添加当前用户到 Docker 组(可选):

    sudo usermod -aG docker ${USER}
    

    为了使这个改变生效,你可能需要登出并重新登录。这步操作让你能够不使用 sudo 命令来运行 Docker。

  5. 验证安装:

    docker version
    

    此命令应当显示 Docker 客户端和服务端的版本信息,说明 Docker 已正确安装。

方法2:使用 apt 手动安装

这个方法稍微复杂一些,但它让你对安装过程有更多的控制,尤其是在生产环境中推荐使用。

  1. 更新你的包索引:

    sudo apt update
    
  2. 安装包以允许 apt 通过 HTTPS 使用仓库:

    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
  3. 添加 Docker 的官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  4. 设置 Docker 稳定版仓库:

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  5. 再次更新你的包索引(现在包含 Docker 的仓库):

    sudo apt update
    
  6. 安装 Docker Engine:

    sudo apt install docker-ce docker-ce-cli containerd.io
    
  7. 添加当前用户到 Docker 组(可选):

    sudo usermod -aG docker ${USER}
    

    同样,为了使这个改变生效,你可能需要登出并重新登录。

  8. 启动 Docker 服务(如果没有自动启动的话):

    sudo systemctl start docker
    
  9. 设置 Docker 服务自动启动:

    sudo systemctl enable docker
    
  10. 验证安装:

    docker version
    

    运行这个命令应当显示 Docker 客户端和服务端的版本,证明 Docker 已正确安装。

验证 Docker 是否正确安装

无论使用哪种方法安装,都可以通过运行一个测试容器来验证 Docker 是否正确安装和配置:

docker run hello-world

这个命令会下载一个测试用的镜像并在容器中运行。如果一切设置正确,它会输出一段欢迎信息。

以上两种方法可以根据你对安装过程控制级别的需求来选择使用。

二、Docker命令示例

下面将详细解释一些常用的 Docker 命令,并附上示例来说明它们的用法。

1. docker pull

用于从仓库拉取或者更新指定的镜像。

示例:

docker pull ubuntu:18.04

这条命令会从 Docker Hub 拉取 Ubuntu 18.04 的官方镜像。

2. docker run

创建一个新的容器并运行一个命令。

示例:

docker run -it --name test ubuntu:18.04 /bin/bash

这会启动一个名为 test 的容器,基于 ubuntu:18.04 镜像,并开启一个交互式终端(-it),运行 /bin/bash

3. docker ps

列出当前正在运行的容器。

示例:

docker ps

显示所有活跃的容器。

示例:

docker ps -a

显示所有容器,包括未运行的。

4. docker stop

停止一个运行中的容器。

示例:

docker stop test

这会停止名为 test 的容器。

5. docker start

启动一个已经生成、已停止运行的容器。

示例:

docker start test

这会重新启动名为 test 的容器。

6. docker rm

删除一个或多个容器。

示例:

docker rm test

这会删除名为 test 的容器。使用 -f 参数可以强制删除正在运行的容器。

7. docker images

列出本地的所有镜像。

示例:

docker images
8. docker rmi

删除一个或多个镜像。

示例:

docker rmi ubuntu:18.04

删除本地的 ubuntu:18.04 镜像。

9. docker build

根据 Dockerfile 创建镜像。

示例:

docker build -t myimage:latest .

这条命令会使用当前目录的 Dockerfile 来构建一个标记为 myimage:latest 的镜像。

10. docker logs

获取容器的日志。

示例:

docker logs test

显示名为 test 的容器的日志。

11. docker exec

在运行的容器中执行命令。

示例:

docker exec -it test /bin/bash

这条命令会在名为 test 的容器中启动一个 bash 会话。

12. docker network create

创建一个新的网络。

示例:

docker network create my-net

创建一个名为 my-net 的网络。

13. docker network ls

列出所有网络。

示例:

docker network ls
14. docker attach

连接到正在运行的容器。

示例:

docker attach test

这会连接到名为 test 的容器。

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

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

相关文章

jenkins教程

jenkins 一、简介二、下载安装三、配置jdk、maven和SSH四、部署微服务 一、简介 Jenkins是一个流行的开源自动化服务器,用于自动化软件开发过程中的构建、测试和部署任务。它提供了一个可扩展的插件生态系统,支持各种编程语言和工具。 Jenkins是一款开…

美团代付系统源码搭建ZHU16728

2024美团外卖点单代付系统源码基于php 基础开发,这套系统搭载了外卖系统属性,可添加物流信息。 1.完美对接微信支付,支付宝支付。 2.这套系统全新UI界面,完美搭建可以用作商用系统服务。 3.前端UI界面内容丰富,功能齐全…

有关CSS中排版常见问题(清除默认样式问题 + 元素居中问题 + 元素之间的空白问题 + 行内块的幽灵空白问题)

前言:在练习CSS排版的时候,我们经常会遇到一些排版上的问题,那么我们如何去解决这些问题呢?本篇文章给出了一些新手在练习排版时候可能会遇到的问题的解决方案。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

【消息队列】RabbitMQ五种消息模式

RabbitMQ RabbitMQRabbitMQ安装 常见的消息模型基本消息队列SpringAMQPWorkQueue消息预取发布订阅模式Fanout ExchangeDirectExchangeTopicExchange 消息转换器 RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件 官网地址:https://www.rabbitmq.com/ R…

【VUE】Vue中实现树状表格结构编辑与版本对比的详细技术实现

Vue中实现树状表格结构编辑与版本对比的详细技术实现 在Vue中,创建一个可编辑的树状表格并实施版本对比功能是一种需求较为常见的场景。在本教程中,我们将使用Vue结合Element UI的el-table组件,来构建一个树状表格,其中包含添加、…

深入探究C++四大关键特性:初始化列表、友元函数、内部类与static成员

目录 1. 构造函数不为人知的那些事 1.1 构造函数体赋值与初始化列表对比 1.2 explicit关键字与构造函数隐式转换 2. static成员 2.1 static成员的概念 2.2 static成员的特性与应用 2.3 小结 3. C11 成员变量初始化新用法 4. 友元 4.1 友元函数 4.2 友元类 5. 内部类…

Python 中的花卉矩阵组合

使用场景描述 (rib) 协议编写脚本的基础知识。通过创建在 3D 空间中转换的基本几何图形,解决了 xyz 坐标系的基础知识。初步渲染是使用基本着色完成的,因此可以更容易地看到几何体。RenderMan 图1 图 1 是我作为作业参考的示例图片,并尝试匹配 中的图片。为了完成这项任务…

Python | Leetcode Python题解之第61题旋转链表

题目: 题解: class Solution:def rotateRight(self, head: ListNode, k: int) -> ListNode:if k 0 or not head or not head.next:return headn 1cur headwhile cur.next:cur cur.nextn 1if (add : n - k % n) n:return headcur.next headwhi…

机器学习的两种典型任务

机器学习中的典型任务类型可以分为分类任务(Classification)和回归任务(Regression) 分类任务 回归任务 简单的理解,分类任务是对离散值进行预测,根据每个样本的值/特征预测该样本属于类 型A、类型B 还是类…

Django后台项目开发实战四

用户可以浏览工作列表以及工作详情 第四阶段 在 jobs 文件夹下创建 templates 文件夹&#xff0c;在里面创建 base.html 网页&#xff0c;内容如下 <!-- base.html --> <div style"text-align:center;"><h1 style "margin:auto; width:50%;&…

MATLAB - 自定义惯性矩阵

系列文章目录 前言 一、关键惯性约定 Simscape 多体软件在惯性定义中采用了一系列约定。请注意这些约定&#xff0c;因为如果手动进行惯性计算&#xff0c;这些约定可能会影响计算结果。如果您的惯性数据来自 CAD 应用程序或其他第三方软件&#xff0c;这些约定还可能影响到您需…

Mac好用又好看的终端iTerm2 + oh-my-zsh

Mac好用又好看的终端iTerm2 1. iTerm2的下载安装2. oh-my-zsh的安装2.1 官网安装方式2.2 国内镜像源安装方式 3. oh-my-zsh配置3.1 存放主题的路径3.2 存放插件的路径3.3 配置文件路径 1. iTerm2的下载安装 官网下载&#xff1a; iTerm2 2. oh-my-zsh的安装 oh-my-zsh是一…

C语言 | Leetcode C语言题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; char* getPermutation(int n, int k) {int factorial[n];factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;char* ans malloc(n 1);ans[n] \0;int valid[n 1];for (int i 0; i < n; i) {val…

飞书API(6):使用 pandas 处理数据并写入 MySQL 数据库

一、引入 上一篇了解了飞书 28 种数据类型通过接口读取到的数据结构&#xff0c;本文开始探讨如何将这些数据写入 MySQL 数据库。这个工作流的起点是从 API 获取到的一个完整的数据&#xff0c;终点是写入 MySQL 数据表&#xff0c;表结构和维格表结构类似。在过程中可以有不同…

【Leetcode每日一题】 动态规划 - 简单多状态 dp 问题 - 按摩师(难度⭐)(64)

1. 题目解析 题目链接&#xff1a;面试题 17.16. 按摩师 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 一、状态定义 在解决这类动态规划问题时&#xff0c;首先我们需要明确状态的定义。对于本题&#xff0c;我们…

在mac上安装node.js及使用npm,yarn相关命令教程

1、安装node.js 官网&#xff1a;Node.js — Download Node.js 选择需要的版本&#xff0c;点击DownLoad 2、点击继续&#xff0c;直到安装成功。 2.1打开终端输入命令node -v 显示版本号则说明已安装成功 3、全局安装yarn命令 1、sudo npm install --global yarn &#xf…

Git学习笔记(五)IDEA使用Git

在前面几篇文章中&#xff0c;我们已经介绍了git的基础知识&#xff0c;知道了其主要作用是用来进行代码的版本管理&#xff1b;并且已经介绍了Git操作的常用命令。在日常的开发环境下&#xff0c;除了通过Bash命令行来操作Git之外&#xff0c;我们另外一种常用的操作方式则是直…

基于STC12C5A60S2系列1T 8051单片机的Proteus中的单片机发送一帧或一串数据给串口调试助手软件接收区显示出来的串口通信应用

基于STC12C5A60S2系列1T 8051单片机的Proteus中的单片机发送一帧或一串数据给串口调试助手软件接收区显示出来的串口通信应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列…

Python_GUI框架 PyQt 与 Pyside6的介绍

Python_GUI框架 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI&#xff08;图形用户界面&#xff09;开发领域&#xff0c;PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库&#xff0c;为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GUI工…

手把手教数据结构与算法:优先级队列(银行排队问题)

队列 基本概念 队列的定义 队列&#xff08;Queue&#xff09;&#xff1a;队列是一种常见的数据结构&#xff0c;遵循先进先出&#xff08;First-In-First-Out, FIFO&#xff09;的原则。在队列中&#xff0c;元素按照进入队列的顺序排列。队列是一个线性的数据结构&#x…