Docker的基础使用

server/2024/11/14 23:30:25/

一、Docker使用步骤(kali为例)

1.安装Docker

(1)更新系统包索引:

sudo apt-get update

(2)安装Docker:

sudo apt-get install docker.io

2.配置docker源:

{"registry-mirrors" :
[
  "https://hub.littlediary.cn",
"https://hub.xdark.top",
"https://docker.kejilion.pro",
"https://registry.dockermirror.com",
"https://hub.rat.dev",
"https://dhub.kubesre.xyz",
"https://docker.nastool.de",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.rainbond.cc"
]
}

3.拉取CentOS 7像

sudo docker pull centos:

4.运行CentOS 7容器

sudo docker run -it --name my_centos7 centos:7 /bin/bash
  • sudo:以超级用户权限运行命令,通常在Linux系统中需要管理员权限来执行Docker命令。
  • docker run:Docker命令用来创建并启动一个新的容器
  • -it:这是一个组合参数,-i 表示交互式操作,-t 分配一个伪终端。这两者一起使用,可以让您在命令行中与容器进行交互。
  • --name my_centos7:为新创建的容器指定一个名称,这里是 my_centos7
  • centos:7:指定要使用的Docker镜像,这里是 centos:7 镜像。
  • /bin/bash:指定容器启动后执行的命令,这里是启动bash shell。

5.运行Apache容器

docker container run -d --rm -p 8080:80 httpd
  • sudo:以超级用户权限运行命令,通常在Linux系统中需要管理员权限来执行Docker命令。
  • docker container run:Docker命令用来创建并启动一个新的容器
  • -d:表示以“分离模式”运行容器,即在后台运行。
  • --rm:表示容器退出时自动清理容器文件系统,删除容器
  • -p 8080:80:将容器内部的80端口映射到宿主机的8080端口。这意味着访问宿主机的8080端口时,实际上是访问容器内部的80端口。
  • httpd:指定要使用的Docker镜像名称,这里是 httpd 镜像,它是基于Apache HTTP Server的官方镜像。

执行这个命令后,Docker会做以下几件事情:

  1. 检查本地是否有 httpd 镜像,如果没有,则尝试从Docker Hub下载。
  2. 创建一个新的容器实例,使用指定的 httpd 镜像。
  3. 以分离模式启动容器,并将容器的80端口映射到宿主机的8080端口。
  4. 由于使用了 --rm 参数,当容器停止时,它将被自动删除。

docker常用命令">二、Docker常用命令

  • 容器生命周期管理
    • 创建并启动容器
      • docker run:这是最常用的命令之一。例如,docker run -it ubuntu:latest /bin/bash。其中,-it表示以交互模式(-i)和终端模式(-t)运行容器ubuntu:latest是使用的镜像,/bin/bash是在容器启动后执行的命令。这个命令会从本地拉取(如果不存在)ubuntu:latest镜像,然后在容器中启动一个bash终端,用户可以在其中执行 Ubuntu 系统的命令。
    • 启动已停止的容器
      • docker start:用于启动一个或多个已经停止的容器。例如,docker start container_idcontainer_id容器的唯一标识符,可以通过docker ps -a命令获取)。
    • 停止容器
      • docker stop:用于正常停止一个运行中的容器。例如,docker stop container_id。它会发送一个SIGTERM信号给容器内的主进程,让容器有机会进行清理操作后再停止。
    • 重启容器
      • docker restart:重新启动一个容器。例如,docker restart container_id。它会先停止容器,然后再启动它。
    • 删除容器
      • docker rm:用于删除一个或多个已停止的容器。例如,docker rm container_id。如果要删除正在运行的容器,需要先停止它,或者使用-f选项强制删除(不推荐,可能导致数据丢失和容器内进程异常退出),如docker rm -f container_id
  • 容器操作与信息查看
    • 查看容器列表
      • docker ps:查看正在运行的容器。例如,docker ps会显示容器的 ID、镜像名称、创建时间、状态等信息。使用docker ps -a可以查看包括已停止容器在内的所有容器的信息。
    • 查看容器日志
      • docker logs:用于查看容器的日志信息。例如,docker logs container_id会显示容器内主进程的标准输出和标准错误输出的内容。可以使用-f选项来实时跟踪日志,就像tail -f命令一样,如docker logs -f container_id
    • 进入容器内部
      • docker exec:在运行的容器中执行命令。例如,docker exec -it container_id /bin/bash可以进入容器内部的bash终端,-it参数的作用和docker run中的类似,用于交互和终端模式。
    • 查看容器资源使用情况
      • docker stats:实时显示容器的资源使用情况,包括 CPU 使用率、内存使用量、网络 I/O 等。例如,docker stats container_id
  • 镜像管理
    • 拉取镜像
      • docker pull:从镜像仓库(如 Docker Hub)拉取镜像。例如,docker pull nginx:latest会拉取最新版本的nginx镜像。
    • 查看本地镜像列表
      • docker images:显示本地存储的所有镜像的详细信息,包括镜像 ID、仓库名称、标签、镜像大小等。例如,docker images
    • 删除本地镜像
      • docker rmi:用于删除本地镜像。例如,docker rmi image_idimage_id是镜像的唯一标识符,可以通过docker images命令获取)。如果要删除带有标签的镜像,也可以使用docker rmi image_name:tag的形式。
  • 容器网络管理
    • 查看容器网络信息
      • docker network ls:列出所有的 Docker 网络。例如,docker network ls会显示网络的名称、ID、驱动类型等信息。
    • 创建自定义网络
      • docker network create:用于创建一个新的网络。例如,docker network create my_network会创建一个名为my_network的网络,可以将容器连接到这个网络中,以实现容器间的通信等功能。
    • 容器连接到网络
      • docker network connect:将一个容器连接到指定的网络。例如,docker network connect my_network container_id会将container_id对应的容器连接到my_network网络。

http://www.ppmy.cn/server/141964.html

相关文章

unity基础,点乘叉乘。

简单记录下点乘叉乘&#xff0c;要不每次用完就忘&#xff0c;忘了又查。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class TestCrossDot : MonoBehaviour {/// <summary>/// 原点/// </summary>public Transform t…

恒创科技:什么是 RAID 3 ? RAID 3、4 和5之间有什么区别?

RAID 是一种存储数据以提高性能并减少数据丢失的特定技术。您可以根据自己的需求选择多种 RAID 类型。RAID 3 是列表中比较有效的类型之一。本文将重点介绍这种特定的 RAID 技术&#xff0c;并比较 RAID 3、4 和 5。 RAID 3 的定义 RAID 3 是一种特定的磁盘配置&#xff0c;用于…

PyTorch nn.Embedding介绍

nn.Embedding 是 PyTorch 中用于将离散的整数索引(代表类别或符号)转换为连续向量表示的层。这个嵌入层特别适合用于自然语言处理、序列数据、推荐系统、以及生物信息学中的离散符号编码(如氨基酸序列等)等任务。 一、nn.Embedding 的定义和参数 nn.Embedding(num_embedd…

【MIT-OS6.S081笔记1】Chapter1阅读摘要:Operating system interfaces

记录阅读《xv6: a simple, Unix-like teaching operating system》的一些摘要&#xff0c;这是第一章的内容&#xff1a;Operating system interfaces。 fork函数作用&#xff1a;fork创建一个新进程&#xff0c;称为子进程&#xff0c;其内存内容与调用进程&#xff08;称为父…

React Hooks在现代前端开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent初体验(一)

一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…

Java中的泛型

什么是泛型&#xff1f; 限制容器存储的元素类型&#xff0c;用于集合、接口、实现类中 说明&#xff1a;泛型参数在指明时&#xff0c;不可以使用基本数据类型&#xff01;不过可以使用包装类替换 案例1&#xff1a;ArrayList ArrayList<Integer> list new ArrayList…

看懂本文,入门神经网络Neural Network

神经网络&#xff08;Neural Network&#xff09; 1.1图片 每一个图片都是三维数组&#xff0c;每个像素的值为0-255&#xff0c;如 训练集Training Dataset&#xff1a;“上课学的知识”&#xff0c;用于训练模型得到参数 验证集Validation Dataset&#xff1a;“课后习题”…