linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

05. 操作Docker容器

  • 简介
  • 1. 容器的基本操作
    • 1.1 创建和启动容器
    • 1.2 容器管理命令
  • 2. 容器运行模式
    • 2.1 后台运行
  • 终止容器
  • 进入容器
    • attach命令
    • 使用exec命令
  • 导出和导入容器
    • 导出容器 docker export
    • 导入容器快照 docker inport
  • 删除容器
    • 清理所有处于终止状态的容器

简介

容器是 Docker 的核心概念,它是一个轻量级的、独立运行的应用单元,包含应用程序及其运行环境。与虚拟机相比,容器共享主机操作系统内核,仅打包必要的运行环境,因此更加轻量和高效。

本文将介绍如何管理 Docker 容器的完整生命周期,包括创建、启动、停止和删除等操作。

1. 容器的基本操作

1.1 创建和启动容器

Docker 提供了两种启动容器的方式:

  • 基于镜像新建并启动容器
  • 重新启动已终止的容器

使用 docker run 命令创建并启动容器:

# 运行容器并输出信息
docker run centos:7 /bin/echo "Hello wang"

下面来启动一个bash终端,允许用户进行交互

# 启动交互式终端
docker run -it centos:7 /bin/bash

参数说明:

  • -i: 保持标准输入打开
  • -t: 分配伪终端(pseudo-tty)

在交互模式下,用户可以通过创建的终端来输入命令。例如:

[root@29bd2b63c1af /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@29bd2b63c1af /]# pwd
/
[root@29bd2b63c1af /]# touch /mnt/a.txt
[root@29bd2b63c1af /]# exit     #退出容器
docker container ls -a       #列出所有容器
docker diff 容器名或sha256值     #列出某个容器的历史操作
docker stop 容器名或sha256值     #关闭容器
docker hostory   镜像名:标签     #列出镜像的历史操作

当利用docker run来创建容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
  • 从地址池配置一个IP地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

1.2 容器管理命令

# 查看容器
docker container ls -a    # 列出所有容器
docker ps                # 查看运行中的容器

# 启动/停止容器
docker container start <容器ID>   # 启动已终止的容器
docker container stop <容器ID>    # 停止运行中的容器
docker container restart <容器ID> # 重启容器

# 容器状态
docker diff <容器ID>     # 查看容器文件变更
docker top <容器ID>      # 查看容器进程

2. 容器运行模式

2.1 后台运行

使用 -d 参数可以让容器在后台运行:

# 前台运行
docker run centos:7 /bin/sh -c "while true; do echo hello world; sleep 1; done"
# 后台运行
docker run -d centos:7 /bin/sh -c "while true;do echo hello world;sleep 1;done"

# 查看容器日志
docker logs <容器ID>

注意:容器是否持续运行取决于启动命令,而不是 -d 参数

终止容器

可以使用docker container stop来终止一个运行中的容器
此外,当Docker容器中指定的应用终结时,容器也自动终止
如上面启动了一个终端的容器,用户通过exit命令或ctrl+d来退出终端时,所创建的容器立刻终止。
终止状态的容器可以用docker container ls -a来查看。

docker container ls -a

处于终止状态的容器,可以通过 docker container start命令重新启动
还有 docker container restart命令会将一个运行状态的容器终止,然后在重新启动它。

进入容器

使用 -d参数时,容器启动后会进入后台运行
当需要进入容器进行操作,可以使用docker attach或者docker exec,建议使用 docker exec命令。

attach命令

使用attach命令

docker run -d -it centos:7
docker container ls
docker attach 容器ID号
## 说明:如果从这个stdin中exit,会导致容器的停止

使用exec命令

-i -t参数

docker exec后边可以跟多个参数,这里主要是-i -t参数
只有-i参数时,由于没有分配伪终端,界面没有我们熟悉的Linux命令提示符。但命令执行结果仍然可以返回。
-i -t参数一起使用,就是熟悉的linux命令提示符

docker run -d -it centos:7

docker container ls 

docker exec -i 容器ID bash

docker exec -it 容器ID  bash

# 说明:从这个stdin中exit,不会导致容器的停止。

导出和导入容器

导出容器 docker export

如果要导出本地某个容器,可以使用docker export命令

docker container ls -a 

docker export 容器ID > filename.tar  
## 这样将导出容器快照到本地文件

导入容器快照 docker inport

可以使用docker import从容器快照文件中再导入为镜像

cat filename.tar | docker import - test/centos:v2.0
docker image ls

此外,也可以通过制定URL或者某个目录来导入

docker import http://example.com/exampleimage.tgz example/imagerepo

说明:
用户既可以使用docker load来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个容器快照到本地镜像库。两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。从容器快照文件导入时可以重新制定标签等元数据信息。

删除容器

可以使用docker container rm来删除一个处于中止状态的容器。

docker container rm 容器ID或容器名      #删除容器

如果要删除一个运行中的容器,可以添加-f参数,Docker会发送SIGKILL信号给容器

清理所有处于终止状态的容器

用docker container ls -a命令可以查看所有已经创建的包括终止状态的容器,当数量过多,可以用下面的命令清理掉所有处于终止状态的容器

docker container prune      #删除所有处于终止状态的容器
最近更新时间:
Prev
04. 利用commit理解镜像构成
Next
06. 使用Dockerfile定制镜像