前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文详解Docker容器(Container)

一文详解Docker容器(Container)

原创
作者头像
一个风轻云淡
发布2023-10-26 09:14:02
1.8K0
发布2023-10-26 09:14:02
举报
文章被收录于专栏:java学习java

基本介绍

Docker容器(Container) 是独立运行的一个或一组应用。 Docker容器(Container) 是从 Docker镜像(Images) 创建的运行实例,它可以被启动、开始、停止、 删除。 每个 Docker容器(Container) 都是相互隔离的、保证安全的平台。Docker容器(container) 和 Docker镜像(Images) 以及 Docker仓库 并称为 Docker 的三大核心概念。

容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源

单个 Docker 镜像启动多个容器的示意图:

​编辑

常用命令

docker run :创建一个新的容器

代码语言:javascript
复制
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
代码语言:javascript
复制
docker run --name containerName -p 80:80 -d nginx 

命令解读:

  • docker run :创建并运行一个容器
  • --name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

-p参数,是将容器端口映射到宿主机端口。 默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。 现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:

代码语言:javascript
复制
docker exec -it mn bash 

命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

选项

说明

-d, --detach=false

指定容器运行于前台还是后台,默认为 false。

-i, --interactive=false

打开 STDIN,用于控制台交互。

-t, --tty=false

分配 tty 设备,该可以支持终端登录,默认为 false。

-u, --user=""

指定容器的用户。

-a, --attach=[]

登录容器(必须是以 docker run -d 启动的容器)。

-w, --workdir=""

指定容器的工作目录。

-c, --cpu-shares=0

设置容器 CPU 权重,在 CPU 共享场景使用。

-e, --env=[]

指定环境变量,容器中可以使用该环境变量。

-m, --memory=""

指定容器的内存上限。

-P, --publish-all=false

指定容器暴露的端口。

-p, --publish=[]

指定容器暴露的端口。

-h, --hostname=""

指定容器的主机名。

-v, --volume=[]

给容器挂载存储卷,挂载到容器的某个目录。

–volumes-from=[]

给容器挂载其他容器上的卷,挂载到容器的某个目录。

–cap-add=[]

添加权限。

–cap-drop=[]

删除权限。

–cidfile=""

运行容器后,在指定文件中写入容器 PID 值,一种典型的监控系统用法。

–cpuset=""

设置容器可以使用哪些 CPU,此参数可以用来容器独占 CPU。

–device=[]

添加主机设备给容器,相当于设备直通。

–dns=[]

指定容器的 dns 服务器。

–dns-search=[]

指定容器的 dns 搜索域名,写入到容器的 /etc/resolv.conf 文件。

–entrypoint=""

覆盖 image 的入口点。

–env-file=[]

指定环境变量文件,文件格式为每行一个环境变量。

–expose=[]

指定容器暴露的端口,即修改镜像的暴露端口。

–link=[]

指定容器间的关联,使用其他容器的 IP、env 等信息。

–lxc-conf=[]

指定容器的配置文件,只有在指定 --exec-driver=lxc 时使用。

–name=""

指定容器名字,后续可以通过名字进行容器管理,links 特性需要使用名字。

–net=“bridge”

器网络设置: 1. bridge 使用 docker daemon 指定的网桥。 2. host //容器使用主机的网络。 3. container:NAME_or_ID >//使用其他容器的网路,共享 IP 和 PORT 等网络资源。 4. none 容器使用自己的网络(类似–net=bridge),但是不进行配置。

–privileged=false

指定容器是否为特权容器,特权容器拥有所有的 capabilities。

–restart=“no”

指定容器停止后的重启策略: 1. no:容器退出时不重启。 2. on-failure:容器故障退出(返回值非零)时重启。 3. always:容器退出时总是重启。

–rm=false

指定容器停止后自动删除容器(不支持以 docker run -d 启动的容器)。

–sig-proxy=true

设置由代理接受并处理信号,但是 SIGCHLD、SIGSTOP 和 SIGKILL 不能被代理。

docker ps :列出 Docker容器相关信息

代码语言:javascript
复制
docker ps [OPTIONS]

选项

说明

无参

默认显示正在运行的容器。

-a

显示所有的容器,包括未运行的。

-f

根据条件过滤显示的内容。

–format

指定返回值的模板文件。

-l

显示最近创建的容器。

-n

列出最近创建的n个容器。

–no-trunc

不截断输出。

-q

静默模式,只显示容器编号。

-s

显示总的文件大小。

docker stop :停止一个运行中的 Docker容器

代码语言:javascript
复制
docker stop [OPTIONS] CONTAINER [CONTAINER...]

docker rm : 删除一个或者多个已经停止的 Docker容器

代码语言:javascript
复制
docker rm [OPTIONS] CONTAINER [CONTAINER...]

参数

说明

-f

通过 SIGKILL 信号强制删除一个运行中的容器。

-l

移除容器间的网络连接,而非容器本身。

-v:-v

删除与容器关联的卷。

docker pause :暂停 Docker容器 中所有的进程

docker pause 命令可以用来暂停 Docker容器 中所有的进程。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。

代码语言:javascript
复制
docker pause [OPTIONS] CONTAINER [CONTAINER...]

docker unpause : 恢复 Docker容器 中所有的进程

docker unpause 命令可以用来恢复 Docker容器 中所有的进程。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。

代码语言:javascript
复制
docker unpause [OPTIONS] CONTAINER [CONTAINER...]

docker kill : 杀掉一个或者多个正在运行的 Docker容器

docker kill 命令可以用来杀掉一个或者多个正在运行的 Docker容器。该命令后面的 CONTAINER 可以是容器Id,或者是容器名。

代码语言:javascript
复制
docker kill [OPTIONS] CONTAINER [CONTAINER...]

参数

说明

-s

向容器发送一个信号。

docker exec : 运行的 Docker容器 中执行命令

docker exec 命令可以用来在运行的 Docker容器 中执行命令。 docker exec命令是需要容器处于运行中且 PID 1 进程也处于运行中才能执行的操作。该命令后面的参数 container 可以是容器 Id 或者是容器名。

代码语言:javascript
复制
docker exec [options] container command [arg...]

参数

描述

–detach, -d

后台运行模式,在后台执行命令相关命令。

–detach-keys

覆盖容器后台运行的一些参数信息。

–env, -e

设置环境变量。

–interactive, -i

展示容器输入信息 STDIN。

–privileged

为命令提供一些扩展权限。

–tty, -t

命令行交互模式。

–user, -u

设置用户名。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本介绍
  • 常用命令
    • docker run :创建一个新的容器
      • docker ps :列出 Docker容器相关信息
        • docker stop :停止一个运行中的 Docker容器
          • docker rm : 删除一个或者多个已经停止的 Docker容器
            • docker pause :暂停 Docker容器 中所有的进程
              • docker unpause : 恢复 Docker容器 中所有的进程
                • docker kill : 杀掉一个或者多个正在运行的 Docker容器
                  • docker exec : 运行的 Docker容器 中执行命令
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档