三、Docker常用命令详解(上)

一、Docker解释(举例说明)

Docker容器是类似于Linux系统环境的轻量级虚拟化技术,用于运行和隔离应用程序。

当容器从镜像启动时,Docker会在镜像的最上一层创建一个可写层,而镜像本身是只读的并且保持不变。

这意味着容器可以在镜像的基础上进行修改和添加新的文件,而不会影响到原始的镜像。

举例说明:

容器的启动流程涉及到镜像的层级结构和容器的运行环境。在Docker中,镜像是由多个只读层组成的,而容器则在镜像的基础上创建一个可写层,以运行应用程序。

举例在Docker中部署一个CentOS 7并运行Nginx的流程如下:

1. 检查镜像:首先需要检查Docker中是否已经有CentOS 7的镜像。如果没有,需要从Docker Hub或其他镜像仓库中下载CentOS 7的镜像。

2. 创建容器:使用`docker run`命令创建一个基于CentOS 7镜像的容器,并在容器内运行Nginx。命令可能如下:

  [root@localhost ~]# docker run -d --name my-nginx-container centos:7


3. 启动容器:使用`docker start`命令启动已创建的容器。

[root@localhost ~]#   docker start my-nginx-container


4. 安装Nginx:在已启动的CentOS 7容器中,使用`yum`命令安装Nginx。

  [root@localhost ~]# docker exec -it my-nginx-container yum install -y nginx


5. 启动Nginx服务:在容器内启动Nginx服务。

  [root@localhost ~]# docker exec -it my-nginx-container systemctl start nginx


在这个过程中,Docker会在CentOS 7镜像的最上层创建一个可写层,然后安装Nginx并启动服务。这个可写层是容器的文件系统,容器内的任何修改都会被记录在这个可写层中,而不会影响到原始的只读镜像。这样就实现了在CentOS 7容器中运行Nginx的过程。

容器与镜像之间的关系可以类比于面向编程中的对象与类之间的关系。

镜像可以看作是一个类,而容器则是根据这个类创建出来的实例。

因此,必须先有镜像才能创建容器。

生成的容器是一个独立于宿主机的隔离进程,它有自己的文件系统、网络和命名空间。这意味着容器之间相互隔离,互不影响,并且可以在同一台宿主机上运行多个相互独立的容器。

这种隔离性使得容器成为一种非常灵活和高效的应用部署方式。

二、Docker基础命令

1、查看运行的容器

[root@localhost ~]# docker ps

 解释如下:

- `-a, --all`: 显示所有的容器,包括正在运行的和已经停止的。
- `-f, --filter filter`: 根据提供的条件过滤输出。可以使用多个过滤条件,例如`-f "status=running"`可以只显示正在运行的容器。
- `--format string`: 使用Go模板来美化打印容器的输出。
- `-n, --last int`: 显示最后创建的n个容器,包括所有状态的容器。默认为-1,表示显示所有。
- `-l, --latest`: 显示最近创建的容器,包括所有状态的容器。
- `--no-trunc`: 不截断输出,显示完整的容器信息。
- `-q, --quiet`: 仅显示容器的ID。
- `-s, --size`: 显示总文件大小。
[root@localhost ~]# docker ps -a

 2、启动容器docker run

docker run :创建一个新的容器并运行一个命令

docker run 是日常用的最频繁用的命令之一,同样也是较为复杂的命令之一

命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS :
-i :表示启动一个可交互的容器,并持续打开标准输入

-t: 表示使用终端关联到容器的标准输入输出上

-d :表示容器放置后台运行

--rm:退出后即删除容器

--name :表示定义容器唯一名称

-p 映射端口

-v 指定路径挂载数据卷

-e 运行容器传递环境变量

IMAGE :表示要运行的镜像

COMMAND :表示启动容器时要运行的命令

我们先来搞一个centos的镜像;

[root@localhost ~]# docker pull centos:centos7.9.2009

根据这个centos镜像-it 启动一个交互式容器

docker run 启动一个交互式容器在容器内执行/bin/bash 命令
[root@localhost ~]# docker run -it eeb6ee3f44bd  /bin/bash

生成的容器是一个独立于宿主机的隔离进程,它有自己的文件系统、网络和命名空间。这意味着容器之间相互隔离,互不影响,并且可以在同一台宿主机上运行多个相互独立的容器。

但是看了下IP a 发现上面啥玩意没有~

但是好的一点是yum配备 我们可以使用yum 下一个net-tools

[root@a83c873ebad1 /]# yum install -y net-tools

看下ip地址

3、退出docker容器

[root@a83c873ebad1 /]# exit  

但是执行exit,对于容器而言相当于关机,你再去docker pa -a去看可以看到;

如何退出容器还可以让其运行
#再创建一个
[root@localhost ~]# docker run -it --name my_centos centos:centos7.9.2009 /bin/bash

退出容器

exit: 容器停止并退出

ctrl+p+q:容器不停止退出

还在运行;

4、--rm 启动一个退出即删除容器

正常exit退出的容器,还可以通过docker ps -a看到

现在搞一个退出即销毁的;

[root@localhost ~]# docker run -it --rm --name centos_rm centos:centos7.9.2009 /bin/bash

5、-d 启动一个后台容器

开启一个后台交互的容器,注意启动的时候加上-it,如果不加的话 docker 启动容器会自动停止。
[root@localhost ~]# docker run -it --name my_centos_d -d eeb6ee3f44bd /bin/bash

6、进入置为后台已经启动的容器

进入一个容器可以使用 docker exec 或者 docker attach

1. docker exec命令:

   - 通过`docker exec`命令可以在运行的容器中开启一个新的终端。这个新的终端不会影响到容器原有的运行状态,而且在退出时不会停止容器的运行。
   - 例如,可以使用以下命令进入正在运行的容器并开启一个新的终端:
  
     docker exec -it <container_id/name> /bin/bash

[root@localhost ~]# docker exec -it my_centos_d /bin/bash

   - 当退出这个新的终端时,容器仍然会继续运行。

2. docker attach命令:

   - 通过`docker attach`命令可以连接到容器正在执行的终端。退出这个终端会导致容器的停止。
   - 例如,可以使用以下命令连接到正在运行的容器的终端:

     docker attach <container_id/name>

[root@localhost ~]# docker attach d9f2d6e8d12d

   - 当退出这个终端时,容器也会停止运行。

7、启动;停止;重启容器操作

[root@localhost ~]#docker start d9f2d6e8d12d
[root@localhost ~]#docker stop d9f2d6e8d12d
[root@localhost ~]#docker restart d9f2d6e8d12d
[root@localhost ~]#docker restart my_centos_d

 其他操作和这个一致;

8、删除容器

删除hello-world

[root@localhost ~]# docker rm  compassionate_herschel

删除启动中的容器有两种方法:

1、先stop停止,再删除

2、docker rm -f 容器id/容器名称(强制删除)

 根据点1 docker ps --help可以快速定位不同状态的容器;以及只显示ID

[root@localhost ~]# docker ps -af status=exited

#根据容器的状态,删除 Exited 状态的容器
[root@localhost ~]# docker rm $(docker ps -qf status=exited)

#删除所有容器
[root@localhost ~]# docker rm $(docker ps -qa)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵唯一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值