【Docker】三 镜像容器常用命令

简介: 国内访问Docker Hub的速度很不稳定,有时甚至出现连接不上的情况。本节我们来为Docker配置镜像 加速器,从而解决这个问题。目前国内很多云服务商都提供了镜像加速的服务。常用的镜像加速器有:阿里云加速器、DaoCloud加速器等。各厂商镜像加速器的使用方式大致类似, 笔者以阿里云加速器为例进行讲解。

1 配置镜像加速器

国内访问Docker Hub的速度很不稳定,有时甚至出现连接不上的情况。本节我们来为Docker配置镜像 加速器,从而解决这个问题。目前国内很多云服务商都提供了镜像加速的服务。

常用的镜像加速器有:阿里云加速器、DaoCloud加速器等。各厂商镜像加速器的使用方式大致类似, 笔者以阿里云加速器为例进行讲解。

  1. 注册阿里云账号后,即可在阿里云控制台(https://cr.console.aliyun.com/#/accelerator)看到类似 如下的⻚面。

在这里插入图片描述

  1. 按照图中的说明,即可配置镜像加速器。

2 Docker镜像常用命令

我们首先来讨论Docker镜像的常用命令。

2.1 搜索镜像

可使用 docker search 命令搜索存放在Docker Hub中的镜像。 命令格式:

docker search [OPTIONS] TERM

参数:
在这里插入图片描述
示例1:

docker search java

执行该命令后,Docker就会在Docker Hub中搜索含有“java”这个关键词的镜像仓库。执行该命令后, 可看到类似于如下的表格:

在这里插入图片描述

该表格包含五列,含义如下:

1 NAME:镜像仓库名称。
2 DESCRIPTION:镜像仓库描述。
3 STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于GitHub的Stars。
4 OFFICAL:表示是否为官方仓库,该列标记为[OK]的镜像均由各软件的官方项目组创建和维护。由 结果可知,java这个镜像仓库是官方仓库,而其他的仓库都不是镜像仓库。
5 AUTOMATED:表示是否是自动构建的镜像仓库。

示例2:

docker search -s 10 java

2.2 下载镜像[重要]

使用命令 docker pull 命令即可从Docker Registry上下载镜像。

命令格式:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

参数:
在这里插入图片描述
示例1:

docker pull java

执行该命令后,Docker会从Docker Hub中的java仓库下载最新版本的Java镜像。

示例2:
该命令还可指定想要下载的镜像标签以及Docker Registry地址,例如:

docker pull reg.itmuch.com/java:7

这样就可以从指定的Docker Registry中下载标签为7的Java镜像。

2.3 列出镜像[重要]

使用 docker images 命令即可列出已下载的镜像。
执行该命令后,将会看到类似于如下的表格:

该表格包含了5列,含义如下:
1 REPOSITORY:镜像所属仓库名称。
2 TAG:镜像标签。默认是latest,表示最新。 3 IMAGE ID:镜像ID,表示镜像唯一标识。 4 CREATED:镜像创建时间。
5 SIZE:镜像大小。

命令格式:

docker images [OPTIONS] [REPOSITORY[:TAG]]

参数:

在这里插入图片描述
示例:

docker images
docker images java
docker images java:8
docker images --digests
docker images --filter "dangling=true" # 展示虚悬镜像

2.3 删除本地镜像[重要]

使用 docker rmi 命令即可删除指定镜像。
命令格式:

docker rmi [OPTIONS] IMAGE [IMAGE...]

参数:

在这里插入图片描述
例1:删除指定名称的镜像。

docker rmi hello-world

表示删除hello-world这个镜像。

例2:删除所有镜像。

docker rmi -f $(docker images)

-f参数表示强制删除。

2.4 保存镜像

使用 docker save 即可保存镜像。
命令格式:

docker save [OPTIONS] IMAGE [IMAGE...]

参数:
在这里插入图片描述
例1:

docker save busybox > busybox.tar
docker save --output busybox.tar busybox

2.5 加载镜像

使用 docker load 命令即可加载镜像。
命令格式:

docker load [OPTIONS]

参数:

在这里插入图片描述
例1:

docker load < busybox.tar.gz
docker load --input fedora.tar

2.6 构建镜像[重要]

通过Dockerfile构建镜像。
命令格式:

docker build [OPTIONS] PATH | URL | -

参数:
在这里插入图片描述
在这里插入图片描述

3 容器常用命令

我们来讨论Docker容器的常用命令。

3.1 新建并启动容器[重要]

使用以下 docker run 命令即可新建并启动一个容器。该命令是我们最常用的命令了,它有很多选 项,下面列举一些常用的选项。

1 -d选项:表示后台运行
2 -P选项:随机端口映射
3 -p选项:指定端口映射,有以下四种格式。


ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort

4 --network选项:指定网络模式,该选项有以下可选参数:
--network=bridge: 默认选项,表示连接到默认的网桥。
--network=host:容器使用宿主机的网络。
--network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。
--network=none:不配置该容器的网络,用户可自定义网络配置。

示例1:

docker run java /bin/echo 'Hello World'

这样终端会打印Hello World的字样,跟在本地直接执行 /bin/echo 'Hello World' 一样。

示例2:

docker run -d -p 91:80 nginx

这样就能启动一个Nginx容器。在本例中,我们为docker run添加了两个参数,含义如下:

访问http://Docker宿主机IP:91/ ,将会看到如图的界面:

在这里插入图片描述
TIPS:

需要注意的是,使用docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该 名称的镜像,Docker就会自动从Docker Hub下载镜像并启动一个Docker容器。

3.2 列出容器[重要]

使用 docker ps 命令即可列出运行中的容器。执行该命令后,可看到类似于如下的表格。

在这里插入图片描述
如需列出所有容器(包括已停止的容器),可使用-a参数。 该表格包含了七列,含义如下:
1 CONTAINER_ID:表示容器ID。
2 IMAGE:表示镜像名称。
3 COMMAND:表示启动容器时运行的命令。
4 CREATED:表示容器的创建时间。
5 STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
6 PORTS:表示容器对外的端口号。
7 NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的--name选项 自行指定。
命令格式:

docker ps [OPTIONS]

参数:

在这里插入图片描述
示例:

docker ps -n 5
docker ps -a -q

3.3 停止容器[重要]

使用 docker stop 命令,即可停止容器。
命令格式:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

参数:
在这里插入图片描述
示例:

docker stop 784fd3b294d7

3.4 强制停止容器[重要]

可使用 docker kill 命令停止一个或更多运行着的容器。

命令格式:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

参数:
在这里插入图片描述
例如:

docker kill 784fd3b294d7

3.5 启动已停止的容器[重要]

使用 docker run 命令,即可新建并启动一个容器。对于已停止的容器,可使用 docker start
令来启动。 命令格式:

docker start [OPTIONS] CONTAINER [CONTAINER...]

参数:

在这里插入图片描述
例如:

docker start 784fd3b294d7

3.6 重启容器[重要]

可使用 命令来重启容器。该命令实际上是先执行了 docker stop 命令,然后执行
了 命令。

命令格式:

docker restart [OPTIONS] CONTAINER [CONTAINER...]

参数:
在这里插入图片描述

3.6 进入容器[重要]

某场景下,我们可能需要进入运行中的容器。
1 使用 docker attach 命令进入容器。 例如:

docker attach 784fd3b294d7

很多场景下,使用 docker attach 命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口 都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。

2 使用 nsenter 进入容器

nsenter工具包含在util-linux 2.23或更高版本中。为了连接到容器,我们需要找到容器第一个进程的PID,可通过以下命令获取:

docker inspect --format "{{.State.Pid}}" $CONTAINER_ID

获得PID后,就可使用nsenter命令进入容器了:

nsenter --target "$PID" --mount --uts --ipc --net --pid

读者也可将以上两条命令封装成一个Shell,从而简化进入容器的过程。

3 docker exec

docker exec -it 容器id /bin/bash

3.7 删除容器[重要]

使用 docker rm 命令即可删除指定容器。
命令格式

docker rm [OPTIONS] CONTAINER [CONTAINER...]

参数:
在这里插入图片描述
例1:删除指定容器。

docker rm 784fd3b294d7

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。
例2:删除所有的容器。

docker rm -f $(docker ps -a -q)

3.8 导出容器

将容器导出成一个压缩包文件。
命令格式:

docker export [OPTIONS] CONTAINER

参数:
在这里插入图片描述
示例:

docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda

3.9 导入容器

使用 docker import 命令即可从归档文件导入内容并创建镜像。 命令格式:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

参数:
在这里插入图片描述
示例:

docker import nginx2.tar nginx

在这里插入图片描述

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
存储 Java Linux
【Docker】(2)还在浏览网页寻找Docker命令?本文全面列举与使用Docker里的各个命令!想要什么命令直接从本文拿!
docker有着比VM更少的抽象层 由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源 因此在CPU、内存利用率上Docker将会在效率上有明显优势 docker利用的时宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核 进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的。 而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个Docker容器只需
542 124
|
7月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
655 115
|
6月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
705 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
6月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
721 6
|
6月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
606 6
|
6月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
892 4
|
8月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1131 108