docker(二)容器管理

1.docker run 

docker run -it --name "centos_v1" eeb6

docker run -d -p 80:80 --name "nginx_v2" nginx:latest

-i

交互的方式创建容器,一般与t连用

-t

分配一个终端

--name

给容器起名字

-d

后台运行容器,并输出容器id

-p

端口映射 宿主机:容器

-v

挂载数据卷

--rm

当容器退出时,容器也会随之删除,一般用户测试的场景

-e

向容器中传递环境变量

-w

指定工作目录为/etc

--add-host添加主机映射

2.docker ps 等同于docker container ls

docker ps 显示正在运行的容器

--no-trunc 显示完整信息 一般指 container id 与command命令

-a 显示所有容器

docker ps --no-trunc

3.awk过滤容器id

docker ps -a | awk 'NR>1 {print $1}'
docker ps -a -q

4.停止容器 stop

docker stop nginx_v2
docker container stop suspicious_montalcini
    停止名为"suspicious_montalcini"的容器运行,本案例停止的是一个容器。

docker container stop suspicious_montalcini bold_mahavira
    停止名为"suspicious_montalcini"和"bold_mahavira"容器的运行,本案例启动的是多个容器。

docker container stop -t 3 inspiring_hertz
    停止名为"inspiring_hertz"容器的运行,指定3秒后发送kill指令。

docker container stop -t 1 zealous_heyrovsky compassionate_mclaren
    停止名为"zealous_heyrovsky"和"compassionate_mclaren"容器的运行,指定1秒后发送kill指令。

温馨提示:
    若不使用"-t"选项,则默认的间隔10秒后向容器发送kill指令。

5.启动容器 start

docker start nginx_v2
docker container start suspicious_montalcini
    启动名为"suspicious_montalcini"的容器,本案例启动的是一个容器。
    
docker container stop suspicious_montalcini bold_mahavira
    启动名为"suspicious_montalcini"和"bold_mahavira"的容器,本案例启动的是多个容器。

docker container start -ai suspicious_montalcini
    启动名为"suspicious_montalcini"的容器,启动时也可以加选项如下:
        -a:
            将容器的标准输出和错误输出到当前终端。
        -i:
            启动时分配一个交互式的标准输入程序。
温馨提示:
    当我们分配一个"-i"时,这个标准输入对接的程序必须有交互能力,否则此选项无效。
    比如"sh","bash"程序可以进行交互,而"tail","sleep"则不行。

6.创建容器 create

docker create -p 1222:80 --name "nginx_v5" nginx:latest

7.重启镜像restart

docker restart nginx_v5

8.结束容器 kill

docker kill nginx_v5

9.删除容器 rm

docker rm `docker ps -a -q`
docker rm -f 强制删除
docker container rm compassionate_mclaren 
    删除一个已停止的容器,如果没有加"-f"选项,是无法删除一个正在运行的容器。
docker container rm -f -v compassionate_mclaren suspicious_montalcini
    -f:
        代表强制删除,可以强制删除一个正在运行的容器。
    -v:
        删除容器并随之删除匿名存储卷相关信息,如果容器有存储卷有自定义名称,而非随机存储卷,则此选项无效。

10.进入容器attach

docker attach sleepy_northcutt 
    连接容器,并将本地的stdin,stdout,stderr连接到容器。

container attach  --no-stdin  recursing_varahamihira
    连接容器时,可以不指定标准输入。

温馨提示:
    (1)attach这个命令并不会产生新的进程,而是将本地的stdin,stdout,stderr连接到容器而已,并不会产生新的进程;
    (2)如果想要退出容器,尤其是守护进程是"/bin/sh","/bin/bash"时,依次按"ctrl + p","ctrl + q"退出容器;
    (3)当COMMAND指向的守护进程退出时,容器的生命周期运行结束(即容器退出);

exec创建新的终端,attach连接容器时公用一个终端
docker exec -it nginx_v1 /bin/bash

11.进入容器exec

docker container exec inspiring_hertz ls  -l  /etc/network
    在inspiring_hertz容器中执行一个命令ls。

docker container exec inspiring_hertz cat /etc/hosts
    在inspiring_hertz容器中执行一个命令cat。

docker container exec  -w /etc/network/if-up.d -it inspiring_hertz sh
    在inspiring_hertz容器中执行一个命令sh。
        -w:
            指定工作目录。
        -i:
            分配标准输入。
        -t:
            分配一个终端。

12.docker cp 容器与宿主机传输文件

docker cp nginx.tar.gz nginx_v1:/tmp/  宿主机上传到容器中
docker cp nginx_v1:/tmp/test.txt . 宿主机从容器上下载

13.保存容器为镜像commit

docker commit nginx_v2 nginx:v3
docker commit 容器  新镜像id
docker container commit -a "wangyan@oldboyedu.com" -m "add by wanyan"  recursing_varahamihira oldboyedu-linux:v0.2
    -a:
   指定作者信息。
    -m:
        提交注释信息,即对本次的提交做一个注释说明。

14.docker container ls

查看的参考案例:
    docker container ls
        列出所有正在运行的容器。        
    docker container ls -l
        列出最近一个启动容器。
    docker container ls -a
        列出所有的容器,包括已退出状态的容器。
    docker container ls -q
        列出正在运行容器的ID。
    docker container ls -s
        列出正在运行的容器及容器产生的数据大小,及多了一个SIZE字段。
别名:
    ls,ps,list均为别名,也就是说,上面的"ls"命令可以被"ps"和"list"来替换使用。

输出个字段含义如下:
    CONTAINER ID
        容器的ID,即容器的唯一编号。
    IMAGE
        镜像信息,容器基于哪个镜像启动的。
    COMMAND
        容器启动时的守护进程命令。
    CREATED
        创建容器的时间。
    STATUS
        代表容器的状态,常见的状态有4种,分别如下:
            Up:
                代表容器正在运行。
            Exited:
                代表容器退出
            Pause:
                暂停状态,容器的进程没有运行,而是被挂起了。
            Created:
                创建状态,一般指使用create命令创建但未启动的容器。
    PORTS     
        端口映射信息。
    NAMES
        容器的名称。
    SIZE
        容器产生的数据大小。

15.docker logs

docker container logs -f optimistic_elbakyan
    查看"optimistic_elbakyan"容器日志。

docker container logs -tf --since 2022-05-26T01:13:08Z --until 2022-05-26T01:28:38Z optimistic_elbakyan
    查看"optimistic_elbakyan"容器日志,并对日志做以下过滤。
        -t:
            显示时间戳。
        -f:
            实时查看日志,有点类似于"tail -f"选项。
        --since:
            查看某个时间点之后的日志信息,此处我查看是"2022-05-26T01:13:08Z"之后的日志。
        --until:
            查看某个时间点之前到日志信息,此处我查看到是"2022-05-26T01:28:38Z"之前的日志。

面试题: 从2G的nginx容器日志中查看最近2小时的日志信息。

16.使用"diff"对比容器的变化

docker container diff funny_northcutt 
温馨提示:
    使用diff命令对比的是某个容器和其镜像的之间的文件变化,比如新增,删除,修改了文件或目录等。

17.使用export导出容器的文件系统到tar包

docker container export -o oldboyedu-linux80-alpine.tar.gz peaceful_shockley 
    基于-o选项,将peaceful_shockley的内容到处到一个叫oldboyedu-linux80-alpine.tar.gz的tar包中。

docker container export peaceful_shockley > oldboyedu-linux80-alpine.tar.gz
    基于重定向,将peaceful_shockley的内容到处到一个叫oldboyedu-linux80-alpine.tar.gz的tar包中。

温馨提示:
    将容器的文件系统到出到一个tar包后,我们可以使用import从该tar包中导入一个新的镜像。
docker image import oldboyedu-linux80-alpine.tar.gz

18.使用"inspect"查看容器的详细信息即模板语法

docker  container inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' peaceful_shockley
    查看容器的IP地址。

docker  container inspect -f '{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' peaceful_shockley
    查看容器的MAC地址。

docker  container inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' peaceful_shockley
    查看容器的网关地址。

docker  container inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' peaceful_shockley 
    查看容器的IP地址。

docker container inspect --format='{{json .NetworkSettings.Networks.bridge}}' peaceful_shockley
    返回桥接网卡信息。

参考链接:
    https://docs.docker.com/engine/reference/commandline/inspect/

19.使用"kill"停止容器运行

docker container kill funny_northcutt

20.使用"pause"暂停的容器运行(可以理解为虚拟机的"挂起")

docker container pause funny_northcutt

21.使用"unpause"恢复暂停的容器

docker container unpause zen_montalcini 
​

温馨提示:
    (1)恢复暂停的容器并不会重置容器的运行时间,恢复后,服务是可以正常访问的;

22.使用"port"查看端口映射信息

docker container port dazzling_austin 
    查看容器的所以端口映射信息,端口映射需要使用-p或者-P参数来指定。
    
docker container port dazzling_austin 80/tcp
    查看容器的80端口TCP协议的端口映射信息。

23.使用"prune"移除所有未使用的容器

docker container prune -f
    移除所有未使用的容器。

24.使用"rename"为容器进行重命名操作

docker container rename brave_blackburn oldboyedu-linux80
    将容器名称为"brave_blackburn"更名为"oldboyedu-linux80"。
    
docker container rename fc370238b8b2 oldboyedu-linux
    将容器ID为"fc370238b8b2"更名为"oldboyedu-linux"。
    
温馨提示:
    无论是容器的名字还是容器的ID,都必须唯一。

25.使用"stats"查看容器的运行状态

docker container stats  
    实时查看所有正在运行的容器状态信息,主要包括CPU,内存的使用情况。
​
docker container stats  --no-stream -a
    查看一次的容器状态信息,主要包括CPU,内存的使用情况。
        --no-stream:
            代表只查看第一次的返回结果。
        -a:
            代表查看所有状态的容器信息,默认只查看正在运行的容器信息。
​
docker container stats  --no-stream oldboyedu-linux
    只查看"oldboyedu-linux"容器的状态信息。
    
docker container stats  --no-stream --format "{{ json .}}" oldboyedu-linux  | jq
    只查看"oldboyedu-linux"容器的状态信息,要求返回结果为json格式,可以使用jq命令查看json解析。
    

docker container stats  --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" oldboyedu-linux  
    只查看"oldboyedu-linux"容器的状态信息,要求返回的结果只查看指定字段。指定的各字段含义如下所示:
        .Container  
            容器名称或 ID(用户输入)
        .Name   
            容器名称
        .ID 
            容器 ID
        .CPUPerc    
            CPU 百分比
        .MemUsage   
            内存使用情况
        .NetIO  
            网络 IO
        .BlockIO    
            块 IO
        .MemPerc    
            内存百分比(在 Windows 上不可用)
        .PIDs   
            PID 数(在 Windows 上不可用)
​
输出的各字段结果
    CONTAINER ID   
        容器的ID。 
    NAME 
        容器的名称。
    CPU %     
        CPU使用的百分比。
    MEM USAGE / LIMIT   
        内存的已使用情况/内存限制
    MEM %     
        内存使用的百分比。
    NET I/O     
        容器通过其网络接口发送和接收的数据量
    BLOCK I/O   
        容器从主机上的块设备读取和写入的数据量
    PIDS
        容器创建的进程或线程数
​
参考链接:
    https://docs.docker.com/engine/reference/commandline/stats/

26.使用top命令查看容器的进程信息

docker container top zealous_cerf 
    查看zealous_cerf容器的进程信息。

27.使用"update"更新容器的配置

docker container update -m 200000000 --memory-swap 200000000 interesting_snyder
    启动一个容器限制其内存上线为200MB左右。  
​
温馨提示:
    正常情况下,容器启动会占用宿主机的全部资源空间,但为了能够保证同一台宿主机其他容器也能正常运行,通常情况下我们会设置资源上限来解决问题。
​
​参考链接:(压力测试stress)
    https://hub.docker.com/r/jasonyin2020/oldboyedu-linux-tools

28.使用"wait"命令查看容器的退出状态码

docker container wait loving_diffie
    等待容器退出时返回状态码。

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker容器管理是指对已创建的容器进行操作和管理,包括查看容器状态、启动/停止容器、删除容器等。以下是一些常见的Docker容器管理操作: 1. 查看正在运行的容器: 使用命令`docker ps`可以列出当前正在运行的容器。加上`-a`参数可以显示所有容器,包括已停止的。 2. 启动和停止容器: - 使用命令`docker start <容器ID或名称>`可以启动一个已创建但停止的容器。 - 使用命令`docker stop <容器ID或名称>`可以停止一个正在运行的容器。 3. 进入容器: 使用命令`docker exec -it <容器ID或名称> <命令>`可以在正在运行的容器中执行命令。加上`-it`参数可以进入交互模式,例如`docker exec -it <容器ID或名称> /bin/bash`可以进入容器的Shell。 4. 删除容器: 使用命令`docker rm <容器ID或名称>`可以删除一个已停止的容器。加上`-f`参数可以强制删除正在运行的容器。 5. 查看容器日志: 使用命令`docker logs <容器ID或名称>`可以查看容器的日志输出。 6. 查看容器详细信息: 使用命令`docker inspect <容器ID或名称>`可以查看容器的详细配置信息,包括网络设置、挂载的数据卷等。 7. 复制文件到/从容器: - 使用命令`docker cp <本地文件路径> <容器ID或名称>:<容器内路径>`可以将本地文件复制到容器内。 - 使用命令`docker cp <容器ID或名称>:<容器内路径> <本地文件路径>`可以将容器内的文件复制到本地。 这些是Docker容器管理的一些常见操作,希望对你有所帮助。如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值