【docker】容器的运行、停止、查看等基本操作

这篇具有很好参考价值的文章主要介绍了【docker】容器的运行、停止、查看等基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

容器与镜像的区别

image镜像

  • Docker image是一个read-only文件,位于磁盘上
  • 这个文件包含文件系统,源码,库文件,依赖,工具等一些运行application所需要的文件
  • 可以理解成一个模板
  • docker image具有分层的概念

container容器

  • 一个运行中的docker image,位于内存中
  • 实质是复制image并在image最上层加上一层read-write的层(称之为container layer,容器层)
  • 基于同一个image可以创建多个container
    【docker】容器的运行、停止、查看等基本操作,CI/CD/CM,docker,k8s,容器,镜像,podman

容器的基本操作

容器的基本操作都是命令docker container开头,大部分情况下可以简写为docker,例如docker container run可以简写为docker run

下面是docker container开头的命令列表:

$ docker container --help

Usage:  docker container COMMAND

Manage containers

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ls          List containers
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  run         Run a command in a new container
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

docker container create

docker container create只是新建一个容器,并不启动一个容器。

$ docker container create --name nginx -p 8899:80 nginx
5932d5e624f7cced52fb8f9282a01c5a112fba249236d028733c424ec7099a6e

docker container run

docker container run新建并启动一个容器。

$ docker container run -d --name nginx -p 8899:80 nginx
ee86be635d8b0ff99e36796191da4ee5c34241f37dc0f66c8b21e2a85517e9de

选项:

  • -d:表示以detach模式后台运行
  • –name:为容器指定一个名字
  • -p:端口映射,宿主机端口为8899映射到docker内端口80

docker container ls

docker container ls查看启动的容器,也可以简写为docker ps或者docker container ps

$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
ee86be635d8b   nginx     "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:8899->80/tcp, :::8899->80/tcp   nginx

选项:

  • -a:列出所有的容器(包括正在运行的和已停止运行的)
  • -l:显示最近创建的容器
  • -n:显示最近创建的n个容器
  • -q:只显示容器ID

docker container stop

docker container stop停止运行中的容器,后面需要带上容器的名称或者ID,ID可以只写前面几位,不需要写全,能根据ID前缀找到对应的唯一的容器即可,其他带ID的命令也类似。

$ docker container stop ee86be635d8b
ee86be635d8b

$ docker container stop nginx
nginx

$ docker container stop ee8
ee8

docker container start

docker container start启动已停止的容器。

$ docker container start nginx
nginx

docker container restart

docker container restart重启运行中的容器。

$ docker container restart nginx
nginx

docker container kill

docker container kill强制停止运行中的容器。

$ docker container kill nginx
nginx

docker container rm

docker container rm可以删除容器。

$ docker container rm nginx
nginx

如果容器的状态是正在运行中是不可以删除的,此时可以加上-f选项来强制删除运行中的容器。

docker container logs

docker container logs可以用来查看容器的日志。

$ docker container logs -f nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
。。。。。。

如果要实时的日志,可以使用-f选项,类似于tail -f命令。

docker container top

docker container top可以用来查看容器内的进程情况,类似于top命令。

$ docker container top nginx
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                6083                6063                0                   19:37               pts/0               00:00:00            nginx: master process nginx -g daemon off;
systemd+            6144                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6145                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6146                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6147                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6148                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6149                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6150                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6151                6083                0                   19:37               pts/0               00:00:00            nginx: worker process

docker container inspect

docker container inspect查看容器的详细信息,如镜像信息、环境变量、网络等。

$ docker container inspect nginx
。。。。。。

docker container exec

docker container exec可以进入到运行中的容器并执行一个命令。

$ docker container exec -it nginx /bin/bash
root@11f5e64bb119:/#

docker container attach

docker container attach同样可以进入到运行中的容器并执行一个命令。

docker container attach进入容器然后退出会导致容器停止,而docker container exec进入容器后退出不会导致容器停止,这是两者的区别。

$ docker container attach nginx

docker container cp

docker container cp用来在宿主机和容器之间拷贝文件。

从宿主机拷贝文件到容器中:

$ docker container cp test.txt nginx:/home

从容器中拷贝文件到宿主机:

$ docker container cp nginx:/docker-entrypoint.sh .

docker container export

docker container export是将一个容器导出为一个压缩的镜像。

$ docker container export nginx > nginx.tar.gz

后续如果要将这个压缩的镜像导入要使用docker image import命令。

docker container commit

docker container commit是将一个容器提交为为一个镜像。

$ docker container commit -m "nginx v1.0" nginx nginx:v1.0
sha256:0b36bf0f81dda62c4ced29e84d0b44a7c812bb643b2c1d898df0b8897f58c964

docker container diff

docker container diff命令用于检查容器文件系统上文件或目录的更改。

$ docker container diff nginx
C /run
A /run/nginx.pid
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf

docker container pause

docker container pause暂停一个或多个容器内的所有进程。

$ docker container pause nginx
nginx

使用docker container ls可以看到容器的状态为pause

docker container unpause

docker container unpause取消暂停一个或多个容器内的所有进程。

$ docker container unpause nginx
nginx

此时容器的状态又变为UP

docker container rename

docker container rename重命名容器。

$ docker container rename nginx ng

docker container port

docker container port列出容器的端口映射或容器的特定映射。

$ docker container port nginx
80/tcp -> 0.0.0.0:8899
80/tcp -> :::8899

docker container update

docker container update可以更新一个或多个容器的配置,可以更新CPU、内存等配置信息。

具体可以更新的选项如下:

$ docker container update --help

Usage:  docker container update [OPTIONS] CONTAINER [CONTAINER...]

Update configuration of one or more containers

Options:
      --blkio-weight uint16        Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --cpu-period int             Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int              Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int          Limit the CPU real-time period in microseconds
      --cpu-rt-runtime int         Limit the CPU real-time runtime in microseconds
  -c, --cpu-shares int             CPU shares (relative weight)
      --cpus decimal               Number of CPUs
      --cpuset-cpus string         CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string         MEMs in which to allow execution (0-3, 0,1)
      --kernel-memory bytes        Kernel memory limit
  -m, --memory bytes               Memory limit
      --memory-reservation bytes   Memory soft limit
      --memory-swap bytes          Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --pids-limit int             Tune container pids limit (set -1 for unlimited)
      --restart string             Restart policy to apply when a container exits

下面的例子可以更改容器的重启策略:

$ docker container update --restart=no nginx
nginx

参数说明:

  • no:默认策略,在容器退出时不重启容器
  • on-failure:在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3:在容器非正常退出时重启容器,最多重启3次
  • always:在容器退出时总是重启容器
  • unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

docker container wait

docker container wait阻止一个或多个容器停止,然后打印退出代码。

$ docker container wait nginx
0

docker container prune

docker container prune删除所有停止的容器。

$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
5932d5e624f7cced52fb8f9282a01c5a112fba249236d028733c424ec7099a6e

容器运行的两种交互模式

attach模式

例如:

$ docker container run -p 80:80 nginx

通过这种方式创建的容器,容器会在前台执行。

容器的输入输出结果会反映到本地端,本地端的输入输出也会反映到容器,例如能在终端看到网页浏览器的 log,ctrl+c会让容器停止。

一般情况不推荐使用attach模式。

detach模式

例如:

$ docker container run -d -p 80:80 nginx
73773e7f0d409e4fba9b1ca6b0c0f2eebab7fa9b030dfe4d2c1cf2865c7275bd

通过这种方式创建的容器会在后台执行,命令行打印完容器的ID就结束了。

连接容器的shell

docker container run -it创建一个容器并进入交互式模式:

$ docker container run -it nginx /bin/bash
root@7faafc56bd4f:/# exit
exit

如果带了-d参数,-it就不会生效。

docker container exec -it在一个已经运行的容器里执行一个额外的command:文章来源地址https://www.toymoban.com/news/detail-683784.html

$ docker container run -d nginx
06d4f86b592e417c876bc66bd62f5ddbd3aeaa1c8c6dd93670ef73151f32a851

$ docker container exec -it 06 bash
root@06d4f86b592e:/#

批量删除容器

$ docker container rm -f $(docker container ls -aq)
06d4f86b592e
7faafc56bd4f

docker container run背后发生了什么?

$ docker container run -d --publish 80:80 --name webhost nginx
  1. 在本地查找是否有nginx这个image镜像,但是没有发现
  2. 去远程的image registry查找nginx镜像(默认的registry是Docker Hub)
  3. 下载最新版本的nginx镜像 (nginx:latest 默认)
  4. 基于nginx镜像来创建一个新的容器,并且准备运行
  5. docker engine分配给这个容器一个虚拟IP地址
  6. 在宿主机上打开80端口并把容器的80端口转发到宿主机上
  7. 启动容器,运行指定的命令(这里是一个shell脚本去启动nginx)

到了这里,关于【docker】容器的运行、停止、查看等基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker基本操作之数据卷(容器数据管理)

    您的“关注”和“点赞”,是认可,是支持,是动力。 如意见相佐,可留言。 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。 本文首发在IT羊资源网。 《IT羊资源网》,网址:https://www.ityangzy.com IT羊资源网是IT世界的羊群! 一个致力于科技、信息技术

    2024年02月13日
    浏览(47)
  • 【linux】docker基本概念和基础指令操作(镜像、容器)

    docker 镜像 images xxxx(名称):xxxx(版本号) 每一个image可以生成若干个 容器 (container),所有用相同镜像生成的容器环境完全一样 每一个容器都是一个完全独立的云端服务器

    2024年02月01日
    浏览(54)
  • Docker - 基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载

    目录 一、对 Docker  的理解 1、Docker 基本概念 2、Docker 与 虚拟机的区别 3、何为镜像和容器? 4、Docker 主要架构 二、Docker 基本操作 1、Docker 镜像操作 2、案例(镜像):去 DockerHub 搜索并拉取一个 Nginx 镜像,打包后删除镜像,重新加载 .tar 文件 3、Docker 容器操作 1.docker run(启

    2024年04月13日
    浏览(47)
  • Docker基本操作之删除容器Container和删除镜像IMAGE

    1.1 删除容器Container语法 1.2 删除容器Container 操作 删除容器Container使用docker rm 命令,例如删除mysql容器: 1.3 docker ps docker ps 语法: docker ps 各个参数的说明: 2.1 删除镜像IMAGE语法 删除镜像IMAGE使用 docker rmi 命令,例如删除 mysql 镜像: 2.2 docker images 各个参数的说明: 2.3 强制删

    2024年02月14日
    浏览(47)
  • docker基本操作:安装部署、设置ssh远程登入、配置docker镜像文件并创建docker容器

    Docker 是一个流行的应用程序容器化和部署平台,允许开发人员轻松地创建、部署和管理容器中的应用程序。 请注意运行此命令需要 root 或 sudo 权限,因此可能需要在命令前加上 sudo 并输入密码。 一、更新系统工具(ubuntu) 安装docker 查看docker版本 启动docker服务 二、一些基本

    2024年02月04日
    浏览(66)
  • 【Java】微服务——Docker容器部署(docker安装,docker配置镜像加速,DockerHub,docker基本操作,Dockerfile自定义镜像.Docker-Compose)

    微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题 大型项目组件较多,运

    2024年02月04日
    浏览(55)
  • 【Docker 】Docker 客户端,容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 可以通过命令 dock

    2024年02月11日
    浏览(45)
  • 在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

      在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。 Docker官方相关

    2024年02月03日
    浏览(54)
  • 【c++】 list容器的基本操作与接口

    List容器是一个双向链表。 采用动态存储分配,不会造成内存浪费和溢出 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素 链表灵活,但是空间和时间额外耗费较大 list构造函数 list数据元素插入和删除操作 list大小操作 list赋值操作 l ist数据的存取 li

    2024年02月17日
    浏览(49)
  • 【Docker】2、Docker 基本操作【镜像操作】

    🔋 镜像名称一般由两部分组成: [repository]:[tag] 🔋 若没有指定 tag ,默认是 latest (最新版本的镜像) 更多命令: docker --help 从 DockerHub 拉取 nginx 镜像 🔋① 访问 DockerHub 官网【https://hub.docker.com/】 🔋② 搜索 nginx 🔋③ 执行拉取镜像的命令 🔋④ 查看所有镜像 ✏️ ① 把

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包