目录

Docker的基础使用

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

1.安装Docker

(1)更新系统包索引:

bash 复制代码
sudo apt-get update

(2)安装Docker:

bash 复制代码
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" "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像

bash 复制代码
sudo docker pull centos:

4.运行CentOS 7容器

bash 复制代码
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容器

bash 复制代码
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 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网络。
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
牛马小陈同学5 分钟前
Kafka+Zookeeper从docker部署到spring boot使用完整教程
linux·spring boot·docker·zookeeper·kafka·prettyzoo·kafka-ui
緣起緣落6 分钟前
Linux(CentOS 7) 部署 redis 集群
linux·运维·服务器·redis·centos·集成学习
无名之逆34 分钟前
[特殊字符] Hyperlane 框架:高性能、灵活、易用的 Rust 微服务解决方案
运维·服务器·开发语言·数据库·后端·微服务·rust
运维开发小白39 分钟前
使用夜莺 + Elasticsearch进行日志收集和处理
运维·c#·linq
蒋星熠40 分钟前
在VMware下Hadoop分布式集群环境的配置--基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置
大数据·linux·hadoop·分布式·ubuntu·docker
404BrainNotFound1 小时前
Dokploy部署Net服务,打造CI/CD开发环境
运维·全栈
勤奋的树懒1 小时前
本地部署DeepSeek-R1(Dify压力测试和性能调优)
docker·junit·压力测试·ollama·deepseek·dify压力测试·dify性能调优
XINVRY-FPGA2 小时前
Xilinx FPGA XCVC1902-2MSEVSVA2197 Versal AI Core系列芯片的详细介绍
人工智能·嵌入式硬件·5g·ai·fpga开发·云计算·fpga
tjsoft2 小时前
Nginx配置伪静态,URL重写
android·运维·nginx
zyx没烦恼2 小时前
Linux 进程信号
linux·运维·服务器·开发语言·c++