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"

]

}

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网络。
相关推荐
2301_819287121 小时前
ce第六次作业
linux·运维·服务器·网络
CIb0la1 小时前
GitLab 停止为中国区用户提供 GitLab.com 账号服务
运维·网络·程序人生
武汉联从信息1 小时前
如何使用linux日志管理工具来管理oracle osb服务器日志文件?
linux·运维·服务器
天天进步20151 小时前
STUN服务器实现NAT穿透
运维·服务器
PieroPc1 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
VinciYan2 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
冷曦_sole2 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒2 小时前
Linux(二)_清理空间
linux·运维·服务器
tntlbb3 小时前
Ubuntu20.4 VPN+Docker代理配置
运维·ubuntu·docker·容器
Gabriel_liao3 小时前
Docker安装Neo4j
docker·容器·neo4j