Docker入门-常用命令

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker镜像操作Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。获取镜像从Docker镜像仓库获取镜像的命令是docker pull。

Docker镜像操作

Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。

获取镜像

从Docker镜像仓库获取镜像的命令是docker pull。其命令格式为:

docker pull [选项][Docker Registry地址[:端口号]/]仓库名[:标签]

具体的选项可以通过docker pull --help命令看到,这里我们说一下镜像名称的格式。Docker镜像仓库地址:地址的格式一般是<域名/IP>[:端口号]。默认地址是Docker Hub。仓库名:如之前所说,这里的仓库名是两段式名称,即<用户名>/<软件名>。对于Docker Hub,如果不给出用户名,则默认为library,也就是官方镜像。

docker pull ubuntu:16.04

上面的命令中没有给出Docker镜像仓库地址,因此将会从Docker Hub获取镜像。而镜像名称是ubuntu:16.04,因此将会获取官方镜像library/ubuntu仓库中标签为16.04的镜像。

运行镜像

有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以上面的ubuntu:16.04为例,如果我们打算启动里面的bash并且进行交互式操作的话,可以执行下面的命令。

docker run -it --rm ubuntu:16.04 bash

-it:这是两个参数,一个是-i:交互式操作,一个是-t终端。

--rm:这个参数是说容器退出后随之将其删除

ubuntu:16.04:这是指用ubuntu:16.04镜像为基础来启动容器。

bash:放在镜像名后的是命令,这里我们希望有个交互式shell,因此用的是bash。

最后我们通过exit退出了这个容器。

列出镜像

要想列出已经下载下来的镜像,可以使用docker image ls命令。列表包含了仓库名、标签、镜像ID、创建时间以及所占用的空间。

docker image ls

查看镜像、容器、数据卷所占用的空间。

docker system df

仓库名、标签均为的镜像称为虚悬镜像(dangling image),显示这类镜像

docker image ls -f dangling=true

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除

docker image prune

删除本地镜像

如果要删除本地的镜像,可以使用docker image rm命令,其格式为:

docker image rm [选项] <镜像1>[<镜像2>...]

其中,<镜像>可以是镜像短ID、镜像长ID、镜像名或者镜像摘要。

使用docker image ls -q来配置docker image rm,这样可以批量删除希望删除的镜像。

docker image rm $(docker image ls -q ubuntu) #删除所有仓库名为redis的镜像

或者删除所有在ubuntu:16.04之前的镜像:

docker image rm $(docker image ls -q -f before=ubuntu:16.04)

Docker容器操作

容器是独立运行的一个或一组应该,以及它们运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。

启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

因为Docker的容器实是轻量级的,用户可以随时删除和新创建容器。

新建并启动

docker run

输出一个“Hello World”,之后终止容器。

docker run ubuntu:16.04 /bin/echo "Hello world"

启动已终止容器

docker container start 或者 docker start

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

docker run -t -i ubuntu:16.04 /bin/bash

-t 让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。当利用docker run来创建容器时,Docker在后台运行的标准操作包括:

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

后台运行

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

如果不使用-d参数运行容器,比如docker run hello-world会把日志打印在控制台。
如果使用-d参数运行容器,比如docker run -d hello-world不会输出日志,只会打印容器id(输出结果可以用docker logs查看);

注:容器是否会长久运行,是和docker run指定的命令有关,和-d参数无关。

停止运行的容器

可以使用docker container stop来终止一个运行中的容器。终止状态的容器可以用docker container ls -a 命令看到。处于终止状态的容器,可以通过docker container start命令来重新启动。此处,docker container restart命令会将一个运行态的容器终止,处于再重新启动它。

进入容器

在使用-d参数时,容器启动后进入后台,某些时候需要进入容器进行操作,使用docker exec命令可以进入到运行中。

exec命令 -i -t参数

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

docker exec -it 容器id /bin/bash

导出和导入容器

导出容器

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

docker export 容器ID>导出文件名.tar

导入容器

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

cat 导出文件名.tar|docker import - 镜像用户/镜像名:镜像版本

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

docker import http://study.163.com/image.tgz example/imagerepo

删除容器

删除容器

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

docker container rm ubuntu:16:04

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

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

用docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太多要一个个删除可以会很麻烦,用下面的命令可以清理掉所有处于终止状态的容器。

docker container prune
相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
26天前
|
安全 Docker 容器
|
26天前
|
网络安全 数据安全/隐私保护 Docker
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
84 5
|
24天前
|
存储 监控 安全
|
8天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
14天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
54 2
|
22天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
33 3
|
24天前
|
存储 关系型数据库 MySQL
|
27天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
45 2