一、Docker使用步骤(kali为例)
1.安装Docker:
(1)更新系统包索引:
bash
sudo apt-get update
(2)安装Docker:
bash
sudo apt-get install docker.io
2.配置docker源:
{"registry-mirrors" :
[
"https://docker.kejilion.pro",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://dockerhub.timeweb.cloud",
]
}
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会做以下几件事情:
- 检查本地是否有
httpd
镜像,如果没有,则尝试从Docker Hub下载。 - 创建一个新的容器实例,使用指定的
httpd
镜像。 - 以分离模式启动容器,并将容器的80端口映射到宿主机的8080端口。
- 由于使用了
--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_id
(container_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_id
(image_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
网络。
- 查看容器网络信息