【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(二)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(二)

1.7 容器的进入


使用docker 原生方法进入容器,可以使用 docker attach 和 docker exec 命令进入。或者也可以使用docker run -it 在创建容器时就进入容器。


使用 exit 容器停止退出


使用 ctrl +p ctrl +q 容器不停止退出


1.7.1 使用 docker attch 的方法

docker attch 可以进入一个已经运行容器。然后输入命令执行动作.


格式:


docker  attch  容器ID或名称


输入exit 进行退出。这个会退出docker attch 进程,通常容器也会退出,处于终止状态


输入 ctrl +p 和 ctrl +q 或者 按住ctrl 键 然后依次输入 p 键 q 键 可以退出 attach 进程而不停止容器


#使用docker attch 容器ID/名称  进入运行的容器
[root@host103 ~]# docker attach  mycentos
#输入exit 退出后,容器也终止了
[root@5a51e6a3c5bf /]# exit 
exit


1.7.2 使用 docker exec的方法

格式:


docker  exec   [选项]   容器id/名称  bash或/bin/bash等  [ -c ]   “命令序列”


关于 docker  exec 选项:


可以看出只用-i 时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令

返回值都可以正确获取。


使用-it时,则和我们平常操作console界面类似。而且也不会像attach方式因为退出,导致

整个容器退出。


如果只使用-t参数,则可以看到一个console窗口,但是执行命令会发现由于没有获得stdin

的输出,无法看到命令执行情况


在后台执行一个进程。可以看出,如果一个命令需要长时间进程,使用-d参数会很快返回。

程序在后台运行。如果不使用-d参数,由于命令需要长时间执行,docker exec会卡住,一直等命令执行完成


才返回。


关于docker  exec 后面的命令:


我们通常会使用 docker   exec   -it   bash 进入容器并开启一个bash环境的伪终端。也可以将bash 换成其他一条命令,让容器执行完后,将结果输出到屏幕

后面可以跟上 -c 选项  “命令序列",命令序列可以是多个命令,使用分号隔开,可以一次性执行多条命令

[root@localhost ~]# docker exec -it 92829fa3c584 bash
[root@92829fa3c584 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#退出容器
[root@92829fa3c584 /]# exit
exit 
#退出后不影响容器运行


1.7.3 使用docker run -it 方法

[root@localhost opt]# docker run -it centos:7 bash
[root@ff96c27aa00c /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@ff96c27aa00c /]# 
[root@ff96c27aa00c /]# exit  
exit
[root@localhost opt]# docker ps -a
CONTAINER ID   IMAGE              COMMAND                  CREATED             STATUS                     PORTS                                     NAMES
ff96c27aa00c   centos:7           "bash"                   43 seconds ago      Exited (0) 4 seconds ago                                             recursing_mcnulty
#退出后容器也退出了


docker run -it会创建前台进程,但是会在输入exit后终止进程。


docker attach会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程


docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行


1.8 容器日志docker log


格式:


docker logs 容器ID


#启动容器并映射端口
[root@localhost ~]# docker run -id -P stevelugyq/nginx
a14514ee688dcf6495abb0ff2405bcc4887896446e1e2790e40298c3af7abdeb
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS                        PORTS                                     NAMES
a14514ee688d   stevelugyq/nginx   "/docker-entrypoint.…"   17 seconds ago   Up 16 seconds                 0.0.0.0:49153->80/tcp, :::49153->80/tcp   charming_noyce
#通过docker logs 容器ID访问该容器的日志
[root@localhost ~]# docker logs a14514ee688d
.......
192.168.109.1 - - [23/Jun/2022:15:23:11 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36" "-"
2022/06/23 15:23:12 [error] 31#31: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.109.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.109.133:49153", referrer: "http://192.168.109.133:49153/"
192.168.109.1 - - [23/Jun/2022:15:23:12 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.109.133:49153/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36" "-"




1.9 容器文件复制到主机docker cp


[root@localhost ~]# touch 1.txt
#将1.txt文件导入到容器a14514ee688d下的tmp目录
[root@localhost ~]# docker cp ./1.txt a14514ee688d:/tmp
#进入a14514ee688d容器
[root@localhost ~]# docker exec -it a14514ee688d bash
#进入到tmp目录查看
root@a14514ee688d:/# cd tmp/
root@a14514ee688d:/tmp# ls
1.txt
#在容器中写一个文件
root@a14514ee688d:/tmp# echo "i am stevelu" > 2.txt
root@a14514ee688d:/tmp# ls
1.txt  2.txt
root@a14514ee688d:/tmp# 
#将容器中的2.txt导出
root@a14514ee688d:/tmp# exit
exit
[root@localhost ~]# docker cp a14514ee688d:/tmp/2.txt /opt/
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
2.txt  containerd  nginx.tar  rh
[root@localhost opt]# cat 2.txt 
i am stevelu


1.10 容器的导入导出docker export


用户可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。


1.10.1 导出格式:docker export 容器ID/名称 > 文件名

#导出容器
[root@localhost ~]# docker export a14514ee688d > mycentos.tar
[root@localhost ~]# ls
1.txt  anaconda-ks.cfg  initial-setup-ks.cfg  mycentos.tar  original-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]# scp mycentos.tar 192.168.109.134


1.10.2 导入格式:cat 文件名 | docker import - 镜像名称:标签

导入后会生成镜像,但不会创建容器,再通过该镜像创建容器

[root@localhost ~]# cat mycentos.tar |docker import - centos:stevelu
sha256:b7e05242819397b7d020a461ae03621be1b06eb801bc4f30b6d13e5866ae4739
#此时查看镜像
[root@localhost ~]# docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
centos              stevelu   b7e052428193   10 seconds ago   140MB
#创建容器
[root@localhost ~]# docker run id centos:stevelu bash


1.11 查看docker消耗的资源状态


#启动容器
[root@localhost ~]# docker start eloquent_sinoussi
eloquent_sinoussi
[root@localhost ~]# docker start cool_chandrasekhar
cool_chandrasekhar
#查看资源消耗
[root@localhost ~]# docker stats



总结


1. Docker容器管理命令有哪些,分别是什么作用?

命令

说明
docker create -i [–name=容器名称] 镜像名 创建容器
docker create -it [–name=容器名称] 镜像名 <命令> 创建容器并导入命令
docker start <容器ID/名称> 启动容器
docker stop <容器ID/名称> 停止容器
docker kill <容器ID/名称> 立即强制停止容器
docker rm [-f] <容器ID/名称> 删除容器 (-f 强制删除正在运行的容器)
docker ps -a

查询所有容器运行状态 不加-a是运行容器状态

docker rm $(docker ps -aq)

删除所有容器

docker rmi $(docker images -q) 删除所有镜像
docker run [–name] -id 启动容器(一次性执行)
docker exec -it 容器ID/名称 bash 进入容器
docker attch 进入容器
docker run -it 启动时进入容器
docker export 容器导出/导入
docker cp 容器文件复制到主机
docker logs 容器pid=1的进程日志
docker export 容器ID/名称 > 文件名 导出文件
cat 文件名 docker import - 镜像名称:标签 导入文件

docker stats

查看docker消耗的资源状态

2.批量删除容器有哪些命令?

命令

说明
docker stop -> docker rm 删除已经停止的容器
docker rm -f 强制删除正在运行的容器
docker ps -a | awk ‘NR>=2{print "docker stop "$1}’ | bash 批量停止容器
docker ps -a | awk ‘NR>=2{print $1}’ | xargs docker stop 批量停止容器
docker ps -a | awk ‘NR>=2{print "docker rm "$1}’ | bash 批量删除所有容器
docker ps -a | awk ‘NR>=2{print $1)’ | xargs docker rm 批量删除所有容器
docker images | awk ‘NR>=2{print "docker rmi "$3}’ | bash 批量删除镜像
docker images | grep none | awk ‘{print $3}’| xargs docker rmi 删除none镜像
docker rm $(docker ps -a -q) 批量清理后台停止的容器
目录
相关文章
|
2天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
8天前
|
Kubernetes Linux 开发者
深入探索Docker容器化技术的奥秘
深入探索Docker容器化技术的奥秘
16 1
|
6天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
7天前
|
Cloud Native 持续交付 Docker
深入解析Docker容器化技术及其在生产环境中的应用
深入解析Docker容器化技术及其在生产环境中的应用
10 0
|
8天前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
23 0
|
8天前
|
Cloud Native 云计算 Docker
云原生之旅:从容器化到微服务架构
【9月更文挑战第27天】本文将引领读者进入云原生的世界,探索如何通过容器化技术实现应用的快速部署与扩展,并深入理解微服务架构的设计哲学。我们将一起见证代码如何转化为可在云端无缝运行的服务,同时讨论云原生生态中的最佳实践和面临的挑战。
|
1天前
|
监控 Cloud Native 持续交付
云原生架构:企业数字化转型的新引擎##
在当今数字化浪潮中,云原生架构正成为推动企业创新和竞争力的关键因素。本文探讨了云原生的核心概念、技术优势以及在现代业务场景中的应用实践,揭示了其如何助力企业实现高效运营、灵活扩展与持续集成。通过对云原生技术的深入剖析,我们将看到它不仅是一种技术趋势,更是企业数字化转型的战略选择。 ##
|
6天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构:打造弹性可扩展的应用
【9月更文挑战第29天】在云计算的浪潮中,云原生架构成为企业追求高效、灵活和可靠服务的关键。本文将深入解析云原生的概念,探讨如何利用容器化、微服务和持续集成/持续部署(CI/CD)等技术构建现代化应用。我们将通过一个简易的代码示例,展示如何在Kubernetes集群上部署一个基于Node.js的应用,从而揭示云原生技术的强大能力和潜在价值。
19 6
|
7天前
|
监控 Cloud Native 持续交付
云原生架构:构建弹性与高效的现代应用##
随着云计算技术的不断成熟,云原生架构逐渐成为企业技术转型的重要方向。本文将深入探讨云原生的核心概念、主要技术和典型应用场景,以及如何通过云原生架构实现高可用性、弹性扩展和快速迭代,助力企业在数字化转型中保持竞争优势。 ##
25 6

相关产品

  • 容器服务Kubernetes版
  • 下一篇
    无影云桌面