🍀 前言
博客地址:
- CSDN:https://blog.csdn.net/powerbiubiu
👋 简介
在本章节中,将深入探讨 Docker 容器的概念,以及容器的使用。
📖 正文
1 什么是容器
1.1 Docker容器的介绍
Docker 容器是 Docker 平台上运行的轻量级、独立且可移植的软件包,用于打包应用程序及其所有依赖项、配置和运行时环境。容器化技术使得应用程序能够在一个隔离的环境中运行,而不会受到底层操作系统和硬件的影响。容器是从 Docker 镜像创建的实例,类似于对象是从类创建的实例。每个容器都是相互隔离的、独立运行的进程,具有自己的文件系统、进程空间和网络接口。容器之间相互隔离,不会相互干扰,因此可以在同一主机上同时运行多个容器,每个容器都可以承载一个独立的应用程序。
1.2 Docker容器的特点
- 可移植性:容器可以在任何支持 Docker 的平台上运行,无论是开发环境、测试环境还是生产环境。容器在不同的环境中具有相同的行为,因此可以轻松地将应用程序从一个环境迁移到另一个环境。
- 隔离性:容器使用 Linux 内核的命名空间和控制组特性来实现进程隔离、文件系统隔离、网络隔离和资源隔离。这使得容器之间相互隔离,不会相互干扰,提高了安全性和可靠性。
- 可管理性:容器可以通过 Docker CLI 或图形界面工具进行管理。可以方便地创建、启动、停止、重启和删除容器,以及查看和监控容器的状态和日志。
- 可复制性:容器可以通过 Docker 镜像进行复制和分发,从而实现应用程序的快速部署和交付。镜像定义了容器所需的所有文件和配置,因此可以轻松地创建多个相同的容器实例。
2 启动容器
docker run IMAGE:TAG
参数说明:
IMAGE
:镜像名称;TAG
:标签,镜像版本号。
以启动Jenkins为例
docker run -d -u root -p 8080:8080 -p 50000:50000 -v \e\my_jenkins\jenkins_home:/docker/jenkins --name myJenkins jenkins/jenkins:lts-jdk17
参数说明:
docker run
:允许Docker容器命令;-d
:在后台运行容器;-u root
:以root用户身份运行容器,通常用于确保容器内的进程具有足够的权限执行需要的操作;-p 8080:8080
:将容器内部的 8080 端口映射到宿主机的 8080 端口。Jenkins 服务通常在 8080 端口上运行;-p 50000:50000
: 将容器内部的 50000 端口映射到宿主机的 50000 端口。这是 Jenkins 使用的用于构建和执行任务的端口。-v \e\my_jenkins\jenkins_home:/docker/jenkins
:将宿主机上的目录D:\my_jenkins\jenkins_home
挂载到容器内的/docker/jenkins
目录,这样可以确保Jenkins数据和配置持久化,即使容器被删除,数据仍然保留在宿主机上,--name myJenkins
:给容器指定一个名称jenkins/jenkins:lts-jdk17
:指定要运行的 Docker 镜像的名称和版本。在这里,使用的是 Jenkins 的 LTS 版本,内部使用的 JDK 17。
3 查看容器
docker ps
: 查看正在运行中的容器;docker ps -a
: 查看所有容器,包括运行中的、已经停止运行的容器。
通过命令查看,启动的jenkins已经成功了
字段说明:
CONTAINER ID
: 容器 ID;IMAGE
:创建容器时使用的镜像;COMMAND
:容器最后运行的命令;CREATED
:容器创建时间;STATUS
: 容器状态;PORTS
:端口信息;NAMES
:容器名:和容器 ID 一样,可以标识容器的唯一性,同一台宿主机上不允许有同名容器存在,否则会冲。
4 进入容器
docker exec -it [container ID or NAMES]
通过容器ID或者容器名称进入
比如,根据容器ID进入mysql的容器docker exec -it 0d9c8040112a /bin/bash
,mysql -uroot -p
登录mysql
通过使用exit
退出mysql,回到mysql容器后,再通过exit
退出mysql容器
5 停止容器
5.1 正常停止
docker container stop [container ID or NAMES]
简写模式,可省略关键字container
docker stop [container ID or NAMES]
5.2 强制停止
docker container kill [container ID or NAMES]
简写模式,可省略关键字 container )
docker kill [container ID or NAMES]
5.3 运行已停止的容器
docker container strat [container ID or NAMES]
简写模式,可省略关键字 container )
docker strat [container ID or NAMES]
6 重启容器
docker restart [container ID or NAMES]
不管容器是否启动,直接重启
参数:
-t
:表示限时多少秒关闭容器,然后重启,如:docker restart 330635813b68
7 导出导入容器
7.1 导出容器
docker export
比如导出Jenkins容器,docker export 330635813b68 > jenkins.tar
7.2 导入容器
docker import
将导出的Jenkins容器,通过cat jenkins.tar | docker import - test/jenkins:v1.0
进行导入
8 删除容器
docker container rm [container ID or NAMES]
简写模式,可省略关键字 container
docker rm [container ID or NAMES]
如果需要删除所有已经停止的容器,可以通过
docker container prune
进行删除
✏ 总结
Docker 容器是现代应用程序交付和部署的一种重要方式。它们提供了更高效、可移植和可扩展的应用程序运行环境,使得开发者能够更快速地构建、交付和运行应用程序,同时简化了应用程序的依赖管理和环境配置。