【云原生|Docker系列第4篇】Docker的容器的入门实践

简介: 【云原生|Docker系列第4篇】Docker的容器的入门实践

欢迎来到云原生系列的第4篇博客!在前面的两篇博客中,我们已经学习了Docker镜像的基本概念和入门实践。本篇博客将带您深入了解Docker容器,探索如何使用Docker容器来构建、运行和管理应用程序。无论您是新手还是有一定经验的开发者,通过本篇博客的实践指导,您将能够更加熟悉和掌握Docker容器的使用。

目录

1. Docker容器的基本概念回顾


在开始探索Docker容器的实践之前,让我们简要回顾一下Docker容器的基本概念。Docker容器是基于Docker镜像创建的实例,它是一个独立、隔离的运行环境。每个容器都包含了运行应用程序所需的一切,包括文件系统、系统工具、库以及配置等。容器化技术的出现使得应用程序的开发、测试和部署更加灵活、高效。

1.1 Docker容器的特点

  • 隔离性:Docker容器提供了强大的隔离性,每个容器都是相互隔离的运行环境,互不影响。
  • 轻量级:相比传统的虚拟机,Docker容器更轻量级,启动和停止速度更快。
  • 可移植性:Docker容器可以在不同的主机和环境中运行,无需关注底层操作系统的差异。
  • 易于管理:容器可以通过命令行或者Docker客户端进行管理,如启动、停止、重启和删除等。

2. Docker容器的创建与启动


所需要的命令主要为 docker run。

例如,下面的命令输出一个 “Hello World”,之后终止容器。

$ docker run ubuntu:18.04 /bin/echo 'Hello world'
# Hello world

3. 守护态运行


更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。

下面举两个例子来说明一下。

如果不使用 -d 参数运行容器。

$ docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

容器会把输出的结果 (STDOUT) 打印到宿主机上面

如果使用了 -d 参数运行容器。

$ docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
5e99da6aae33ffa34700f71eea4a356b5cf135ad37756cf3848b4eeae2e806a2

此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。

docker container logs [container ID or NAMES]

4. 终止容器


可以使用docker container stop 来终止一个运行中的容器。

此外,当 Docker 容器中指定的应用终结时,容器也自动终止。

例如对于上一章节中只启动了一个终端的容器,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。

例:

docker container stop 2d893c6294df604c3fd8f0e25e6975c0328fa6c65dcd763dab162e11dc281cfd

终止状态的容器可以用 docker container ls -a 命令看到。例如

$ docker container ls -a
CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS                          PORTS               NAMES
ba267838cc1b        ubuntu:18.04             "/bin/bash"            30 minutes ago      Exited (0) About a minute ago                       trusting_newton

此外,docker container restart 命令会将一个运行态的容器终止,然后再重新启动它。

5. 进入容器


某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明。

5.1 attach 命令

$ docker run -dit ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
243c32535da7        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           nostalgic_hypatia
$ docker attach 243c
root@243c32535da7:/#

5.2 exec 命令

5.2.1 -i -t 参数

docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。

当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

$ docker exec -it 69d1 bash
root@69d137adef7a:/#

也可以刚运行容器时直接进来

docker run -it ubuntu:latest /bin/bash

6. 查看容器列表


要查看正在运行的容器列表,可以使用docker ps命令。该命令将显示容器的ID、镜像名称、创建时间、运行状态等信息。

docker ps

如果需要查看包括已停止的容器在内的所有容器,可以使用docker ps -a命令。

也可以在Docker客户端上查看:

7. 导出和导入


7.1 导出容器

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

$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
7691a813g370e        ubuntu:17.04        "/bin/bash"         21 hours ago        Exited (0) 11 hours ago                       test
$ docker export 7691a813g370e > ubuntu.tar

这样将导出容器快照到本地文件。

7.2 导入容器快照

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

$ cat ubuntu.tar | docker import - dev/ubuntu:v2.0
$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
dev/ubuntu         v2.0                9d37a608a97        About a hour ago   143.3 MB

7.3 删除容器

要删除一个已停止的容器,可以使用docker rm命令,并指定容器的ID或者名称。

docker rm <容器ID或名称>

总结


通过本篇博客的实践指导,我们深入了解了Docker容器的创建、运行、交互、管理和数据管理。Docker容器提供了一种轻量级、隔离的运行环境,使得应用程序的开发和部署更加灵活和高效。无论是开发人员还是运维人员,通过掌握Docker容器的使用,我们可以更好地构建、运行和管理应用程序。

希望本篇博客对您理解和使用Docker容器起到了很好的指导作用。在接下来的博客中,我们将进一步探索Docker的更多功能和应用场景,帮助您更好地利用云原生技术构建和部署应用程序。继续关注我们的云原生|Docker系列,带您进入云原生的精彩世界!

相关文章
|
29天前
|
Docker 容器
进入Docker容器中
进入Docker容器中
35 2
|
1月前
|
Cloud Native 安全 持续交付
构建未来:云原生架构的演进与实践
【2月更文挑战第30天】 随着数字化转型的深入,企业对于信息技术的需求日益复杂化和动态化。传统的IT架构已难以满足快速迭代、灵活扩展及成本效率的双重要求。云原生技术作为解决这一矛盾的关键途径,通过容器化、微服务、持续集成/持续部署(CI/CD)等手段,实现了应用的快速开发、部署及运维。本文将探讨云原生架构的最新发展,分析其如何助力企业构建更加灵活、高效的业务系统,并结合实际案例,展示云原生转型过程中的最佳实践和面临的挑战。
|
2天前
|
存储 Kubernetes Docker
Kubernetes(K8S)集群管理Docker容器(概念篇)
Kubernetes(K8S)集群管理Docker容器(概念篇)
|
3天前
|
存储 Ubuntu 安全
Docker容器常用命令
Docker容器常用命令
13 1
|
3天前
|
监控 Docker 容器
Docker从入门到精通:Docker log 命令学习
了解 Docker 日志管理对容器监控至关重要。`docker logs` 命令用于查看和管理容器日志,例如,`docker logs &lt;container_name&gt;` 显示容器日志,`-f` 或 `--follow` 实时跟踪日志,`--tail` 显示指定行数,`--timestamps` 添加时间戳,`--since` 按日期筛选。Docker 支持多种日志驱动,如 `syslog`,可通过 `--log-driver` 配置。有效管理日志能提升应用程序的稳定性和可维护性。
7 0
|
7天前
|
机器学习/深度学习 数据挖掘 Docker
《Docker 简易速速上手小册》第1章 Docker 基础入门(2024 最新版)
《Docker 简易速速上手小册》第1章 Docker 基础入门(2024 最新版)
21 1
|
8天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
13 0
|
13天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
17 4
|
15天前
|
存储 Ubuntu 关系型数据库
Docker从入门到精通:ubuntu系统安装docker
本文介绍了Docker的安装过程。首先,文章简述了Docker的组成部分:镜像(如模板用于创建容器服务)、容器(运行应用的独立实体)和仓库(存储镜像的库)。接着,针对Ubuntu系统,详细阐述了卸载旧版本Docker、更新软件包、安装依赖、添加Docker官方GPG密钥和软件源、安装Docker以及配置用户组的步骤。最后,通过启动Docker、验证安装是否成功(运行`hello-world`镜像)和查看Docker版本来确认安装完成。
53 12
|
17天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
13 0

热门文章

最新文章