侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux docker命令教程:如何使用docker命令管理容器、镜像、网络和数据卷(附实例详解和注意事项)

Linux docker命令介绍

docker命令是Docker的命令行接口,它可以让你与Docker引擎进行交互,执行各种操作,如创建、运行、停止、删除容器,构建、推送、拉取镜像,管理网络和数据卷等。docker命令的全称是Docker Command Line Interface,简称Docker CLI。Docker CLI是Docker的核心组件之一,它通过发送RESTful API请求给Docker引擎,来控制Docker的行为。Docker CLI的设计目标是简单、易用、灵活和可扩展,它支持多种子命令、选项、参数和环境变量,以满足不同的用户需求和场景。

Linux docker命令适用的Linux版本

docker命令适用于所有支持Docker的Linux版本,包括Ubuntu、Debian、CentOS、Fedora、Red Hat、SUSE等。不过,不同的Linux版本可能需要不同的安装步骤和依赖包,你可以参考Docker的官方文档来选择合适的安装方法。一般来说,你需要安装以下几个组件:

  • Docker Engine:Docker的核心,负责创建和管理容器,提供RESTful API接口。
  • Docker CLI:Docker的命令行接口,负责与Docker Engine进行交互,执行各种操作。
  • Docker Compose:Docker的编排工具,负责定义和运行多个容器的应用程序。
  • Docker Machine:Docker的虚拟机管理工具,负责在本地或远程的虚拟机上安装和配置Docker Engine。

下面是在CentOS 8上安装Docker的示例命令:

[linux@bashcommandnotfound.cn ~]$ sudo dnf install -y yum-utils
[linux@bashcommandnotfound.cn ~]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[linux@bashcommandnotfound.cn ~]$ sudo dnf install -y docker-ce docker-ce-cli containerd.io
[linux@bashcommandnotfound.cn ~]$ sudo systemctl start docker
[linux@bashcommandnotfound.cn ~]$ sudo systemctl enable docker
[linux@bashcommandnotfound.cn ~]$ sudo docker run hello-world

Linux docker命令的基本语法

docker命令的基本语法格式如下:

docker [OPTIONS] COMMAND [ARG...]

其中,OPTIONS是可选的全局选项,用于控制Docker CLI的行为,如指定Docker引擎的地址、输出的格式、日志的级别等。COMMAND是要执行的子命令,如run、build、ps、images等。ARG是子命令的选项、参数或者标志,用于指定子命令的具体操作和对象,如容器的名称、镜像的标签、端口的映射等。

Linux docker命令的常用选项或参数说明

docker命令的全局选项有很多,这里只列出20个最常用的:

选项说明
-H, --host list指定要连接的Docker引擎的地址,可以是本地或远程的socket、tcp或http地址,可以指定多个地址
-D, --debug开启调试模式,输出更多的日志信息
-l, --log-level string设置日志的级别,可以是debug、info、warn、error或fatal,默认为info
--tls使用TLS加密连接Docker引擎,需要提供有效的证书和密钥
--tlscacert string指定CA证书的路径,默认为~/.docker/ca.pem
--tlscert string指定客户端证书的路径,默认为~/.docker/cert.pem
--tlskey string指定客户端密钥的路径,默认为~/.docker/key.pem
--tlsverify使用TLS加密连接Docker引擎,并验证服务器的证书
-v, --version显示Docker的版本信息并退出
--config string指定Docker CLI的配置文件的路径,默认为~/.docker
-c, --context string指定要使用的上下文,上下文是一组配置参数,用于指定Docker引擎的地址和认证信息
--help显示Docker CLI的帮助信息

docker命令的子命令也有很多,这里只列出20个最常用的:

子命令说明
run创建并运行一个或多个容器
build根据Dockerfile构建一个镜像
pull从仓库拉取一个或多个镜像
push将一个或多个镜像推送到仓库
ps列出容器
images列出镜像
rm删除一个或多个容器
rmi删除一个或多个镜像
start启动一个或多个已经存在的容器
stop停止一个或多个运行中的容器
exec在运行中的容器中执行一个命令
logs获取容器的日志
inspect获取容器或镜像的详细信息
cp在容器和本地文件系统之间复制文件或目录
commit从容器创建一个新的镜像
tag给镜像打上一个或多个标签
network管理网络
volume管理数据卷
compose管理使用Docker Compose定义的应用程序
system管理Docker系统

每个子命令都有自己的选项和参数,你可以使用docker COMMAND --help来查看具体的用法和说明。

Linux docker命令的实例

docker命令的实例有很多,这里只列出15个最常用的:

运行一个交互式的Ubuntu容器

[linux@bashcommandnotfound.cn ~]$ sudo docker run -it --rm ubuntu bash

这个命令会从仓库拉取ubuntu镜像(如果本地没有的话),然后创建并运行一个容器,进入容器的bash交互式shell。-it选项表示分配一个伪终端并保持标准输入打开,--rm选项表示容器退出后自动删除。

运行一个后台的Nginx容器,并映射80端口

[linux@bashcommandnotfound.cn ~]$ sudo docker run -d -p 80:80 --name nginx nginx

这个命令会从仓库拉取nginx镜像(如果本地没有的话),然后创建并运行一个容器,以后台模式运行。-d选项表示以分离模式运行容器,-p选项表示将容器的80端口映射到主机的80端口,--name选项表示给容器命名为nginx。这样,你就可以通过浏览器访问主机的80端口,看到nginx的欢迎页面。

查看运行中的容器

[linux@bashcommandnotfound.cn ~]$ sudo docker ps

这个命令会列出所有运行中的容器的信息,包括容器的ID、名称、镜像、命令、状态、端口等。如果你想查看所有的容器,包括已经停止的,你可以加上-a选项。

查看本地的镜像

[linux@bashcommandnotfound.cn ~]$ sudo docker images

这个命令会列出所有本地的镜像的信息,包括镜像的ID、名称、标签、大小、创建时间等。如果你想查看镜像的摘要信息,你可以加上--digests选项。如果你想查看镜像的历史层,你可以加上--history选项。

停止一个容器

[linux@bashcommandnotfound.cn ~]$ sudo docker stop nginx

这个命令会停止一个运行中的容器,你可以使用容器的ID或名称来指定要停止的容器。这个命令会向容器发送SIGTERM信号,让容器优雅地退出。如果你想强制停止一个容器,你可以加上-f选项,这会向容器发送SIGKILL信号,立即终止容器的进程。

删除一个容器

[linux@bashcommandnotfound.cn ~]$ sudo docker rm nginx

这个命令会删除一个已经停止的容器,你可以使用容器的ID或名称来指定要删除的容器。这个命令会删除容器的元数据和文件系统,但不会删除容器使用的数据卷和网络。如果你想删除一个运行中的容器,你可以加上-f选项,这会先停止容器,然后删除容器。如果你想删除容器使用的数据卷,你可以加上-v选项。

删除一个镜像

[linux@bashcommandnotfound.cn ~]$ sudo docker rmi ubuntu

这个命令会删除一个本地的镜像,你可以使用镜像的ID或名称来指定要删除的镜像。这个命令会删除镜像的元数据和文件系统,但不会删除镜像的历史层。如果你想删除一个被其他镜像依赖的镜像,你可以加上-f选项,这会先删除依赖的镜像,然后删除镜像。如果你想删除一个镜像的所有标签,你可以加上-a选项。

启动一个已经存在的容器

[linux@bashcommandnotfound.cn ~]$ sudo docker start nginx

这个命令会启动一个已经存在的容器,你可以使用容器的ID或名称来指定要启动的容器。这个命令会恢复容器的状态和配置,但不会覆盖容器的命令和选项。如果你想在启动容器后进入容器的交互式shell,你可以加上-i选项。

在运行中的容器中执行一个命令

[linux@bashcommandnotfound.cn ~]$ sudo docker exec -it nginx bash

这个命令会在运行中的容器中执行一个命令,你可以使用容器的ID或名称来指定要执行命令的容器。这个命令会在容器中创建一个新的进程,执行给定的命令,然后退出。-it选项表示分配一个伪终端并保持标准输入打开,这样你就可以在容器中运行交互式命令,如bash。

获取容器的日志

[linux@bashcommandnotfound.cn ~]$ sudo docker logs nginx

这个命令会获取容器的日志,你可以使用容器的ID或名称来指定要获取日志的容器。这个命令会输出容器的标准输出和标准错误的内容,你可以使用-t选项来显示日志的时间戳,使用-f选项来持续输出日志,使用--tail选项来指定输出日志的行数。

获取容器或镜像的详细信息

[linux@bashcommandnotfound.cn ~]$ sudo docker inspect nginx

这个命令会获取容器或镜像的详细信息,你可以使用容器或镜像的ID或名称来指定要获取信息的对象。这个命令会以JSON格式输出对象的所有属性和配置,如ID、名称、状态、网络、数据卷、环境变量、标签等。你可以使用-f选项来指定一个Go模板,来过滤和格式化输出的信息。

在容器和本地文件系统之间复制文件或目录

[linux@bashcommandnotfound.cn ~]$ sudo docker cp nginx:/etc/nginx/nginx.conf .

这个命令会在容器和本地文件系统之间复制文件或目录,你可以使用容器的ID或名称来指定要复制的容器。这个命令的语法格式如下:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

其中,SRC_PATH和DEST_PATH可以是容器内或本地的文件或目录的路径,-表示标准输入或输出。你可以使用-L选项来跟随符号链接。这个命令会保留文件或目录的所有者、权限和时间戳。

从容器创建一个新的镜像

[linux@bashcommandnotfound.cn ~]$ sudo docker commit -m "Add nginx.conf" nginx nginx-custom

这个命令会从容器创建一个新的镜像,你可以使用容器的ID或名称来指定要创建镜像的容器。这个命令会将容器的当前状态作为一个新的层,添加到容器使用的镜像的基础上,生成一个新的镜像。-m选项表示给新的镜像添加一个提交信息,最后一个参数表示给新的镜像指定一个名称和标签。

给镜像打上一个或多个标签

[linux@bashcommandnotfound.cn ~]$ sudo docker tag nginx nginx:latest

这个命令会给镜像打上一个或多个标签,你可以使用镜像的ID或名称来指定要打标签的镜像。这个命令会给镜像添加一个新的引用,而不会改变镜像的内容。标签的格式可以是NAME:TAG,也可以是REGISTRY/NAME:TAG,如果省略TAG,默认为latest,如果省略REGISTRY,默认为Docker Hub。

管理网络

[linux@bashcommandnotfound.cn ~]$ sudo docker network ls

这个命令会列出所有的网络,包括网络的ID、名称、驱动、范围等。你可以使用docker network create命令来创建一个新的网络,使用docker network rm命令来删除一个网络,使用docker network inspect命令来获取一个网络的详细信息,使用docker network connect命令和docker network disconnect命令来将容器连接或断开一个网络。

管理数据卷

[linux@bashcommandnotfound.cn ~]$ sudo docker volume ls

这个命令会列出所有的数据卷,包括数据卷的名称、驱动、标签等。你可以使用docker volume create命令来创建一个新的数据卷,使用docker volume rm命令来删除一个数据卷,使用docker volume inspect命令来获取一个数据卷的详细信息,使用docker volume prune命令来删除所有未使用的数据卷。

管理使用Docker Compose定义的应用程序

[linux@bashcommandnotfound.cn ~]$ sudo docker compose up -d

这个命令会根据当前目录下的docker-compose.yml文件,创建并运行一个由多个容器组成的应用程序,以后台模式运行。docker-compose.yml文件是一个YAML格式的文件,用于定义应用程序的服务、网络、数据卷等。你可以使用docker compose down命令来停止并删除一个应用程序,使用docker compose ps命令来列出一个应用程序的容器,使用docker compose logs命令来获取一个应用程序的日志,使用docker compose exec命令来在一个应用程序的容器中执行一个命令。

管理Docker系统

[linux@bashcommandnotfound.cn ~]$ sudo docker system df

这个命令会显示Docker系统的磁盘使用情况,包括容器、镜像、数据卷、构建缓存等的数量、大小、可回收空间等。你可以使用docker system prune命令来删除所有未使用的对象,释放磁盘空间,使用docker system info命令来显示Docker系统的信息,如版本、内存、CPU、操作系统等。

Linux docker命令的注意事项

使用docker命令时,有一些注意事项需要了解:

  • docker命令需要root权限或者docker用户组的权限,如果你没有这些权限,你需要在命令前加上sudo,或者将你的用户添加到docker用户组中。
  • docker命令的输出可能会随着Docker的版本和配置的变化而变化,如果你遇到和文档或教程不一致的情况,你可以使用docker version命令来查看你的Docker的版本,或者使用docker --help命令来查看你的Docker CLI的用法和选项。
  • docker命令可能会遇到一些常见的错误,如bash: docker: command not foundCannot connect to the Docker daemonError response from daemon等,如果你遇到这些错误,你可以参考Docker的官方文档或社区论坛来寻找解决方案,或者使用docker system events命令来查看Docker系统的事件和错误。
0

评论区