《‘狂’人日记》---Docker从入门到进阶之基础操作(二)

简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 本篇文章将向您展示常用的Docker技术,让您快速入门

书接上文,讲到了Docker的安装以及ps 和 run命令,那么这里就为大家介绍镜像的命令

1.镜像常用命令

1.1 使用语法和参数

[root@base ~]# docker image --help

Usage:  docker image COMMAND

Manage images

Options:
      --help   Print usage

Commands:
  build       从Dockerfile构建映像
  history     显示image的历史
  import      从压缩文件中导入内容以创建文件系统映像
  inspect     显示一个或多个image的详细信息
  load        从tar存档文件或STDIN加载映像
  ls          image列表
  prune       删除未使用的image
  pull        从注册表中提取映像或存储库
  push        将映像或存储库推入注册表
  rm          删除一个或多个image
  save        保存一个或多个image到tar存档(默认流到STDOUT)
  tag         创建指向SOURCE_IMAGE的标签TARGET_IMAGE

Run 'docker image COMMAND --help' for more information on a command.

1.2 常用命令介绍(部分)

1.2.1 ls --- image列表

1.2.1.1 使用语法

Usage:  docker image ls [OPTIONS] [REPOSITORY[:TAG]]

List images

Aliases:
  ls, images, list

Options:
  -a, --all             显示所有图像(默认隐藏中间图像)
      --digests         显示摘要
  -f, --filter filter   根据提供的条件过滤输出
      --format string   使用Go模板打印漂亮的图片
      --help            打印使用
      --no-trunc        不截断输出
  -q, --quiet           只显示数字id

1.2.1.2 -a 列出所有Image

[root@base ~]# docker image ls -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-7            latest              7e989e1e46e7        2 weeks ago         380 MB
docker.io/nginx     latest              b692a91e4e15        3 weeks ago         142 MB
[root@base ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-7            latest              7e989e1e46e7        2 weeks ago         380 MB
docker.io/nginx     latest              b692a91e4e15        3 weeks ago         142 MB

image.png

1.2.1.3 -q 只显示数字id

[root@base ~]# docker image ls -q
7e989e1e46e7
b692a91e4e15

1.2.2 rm --- 删除一个或多个image

1.2.2.1 使用语法

Usage:  docker image rm [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

Aliases:
  rm, rmi, remove

Options:
  -f, --force      强制移除image
      --help       Print usage
      --no-prune   Do not delete untagged parents

1.2.2.2 -f 删除镜像

[root@base ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-7            latest              7e989e1e46e7        2 weeks ago         380 MB
docker.io/nginx     latest              b692a91e4e15        3 weeks ago         142 MB
[root@base ~]# docker image rm -f 7e989
Untagged: centos-7:latest
Deleted: sha256:7e989e1e46e7f23498f0ca7da2a9ec7794ff4d7f06b77f7ef6e90222cdb3d346
[root@base ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              b692a91e4e15        3 weeks ago         142 MB

1.2.2.3 rmi --- 等同于 image rm

[root@base ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              b692a91e4e15        3 weeks ago         142 MB
[root@base ~]# docker rmi b692
Untagged: docker.io/nginx:latest
Untagged: docker.io/nginx@sha256:ecc068890de55a75f1a32cc8063e79f90f0b043d70c5fcf28f1713395a4b3d49
Deleted: sha256:b692a91e4e1582db97076184dae0b2f4a7a86b68c4fe6f91affa50ae06369bf5
Deleted: sha256:20fe57e949a4f70bf714590d9d5a78d158d12f4619d148619427a86dfc2e5a7a
Deleted: sha256:042a89e2d80d230c47e0f2add6e13a5958cf18b039f04a3751200937ef76ba03
Deleted: sha256:9e20f968300754f2d3ace5b726448b9a4249bb8196aded53b36ae8b6d3e8c174
Deleted: sha256:15e9cede496de643a978a58c0b49ef7beea83b368dfefc2e46fa0e8dd589f099
Deleted: sha256:d2850ddb0c4ca9f6289f624b27f987873e556c41250f5c5ed47a69c6c2529e4b
Deleted: sha256:92a4e8a3140f7a04a0e5a15793adef2d0e8889ed306a8f95a6cfb67cecb5f212
[root@base ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

image.png

1.2.3 build --- 从Dockerfile构建映像

1.2.3.1 使用语法(常用)

Usage:  docker image build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Options:
      --build-arg list             设置构建时变量(默认[])
      --cache-from stringSlice     将镜像视为缓存源
      --cgroup-parent string       可选父容器cgroup
      --compress                   使用gzip压缩构建上下文
      --cpu-period int             限制CPU CFS(完全公平调度程序)周期
      --cpu-quota int              限制CPU CFS(完全公平调度程序)配额
  -c, --cpu-shares int             CPU份额(相对权重)
      --cpuset-cpus string         允许执行的cpu(0-3、0、1)
      --cpuset-mems string         允许执行的MEMs (0- 3,0,1)
      --disable-content-trust      跳过图像验证(默认为true)
  -f, --file string                Dockerfile的名称(默认为'PATH/Dockerfile')
      --force-rm                   总是删除中间容器
      --help                       Print usage
      --isolation string           容器隔离技术
      --label list                 设置image的元数据(默认[])
  -m, --memory string              内存限制
      --memory-swap string         交换限制等于内存加上交换:'-1'来启用无限交换
      --network string             在构建期间为RUN指令设置网络模式(默认为"default")
      --no-cache                   在构建映像时不使用缓存
      --pull                       总是尝试拉出更新版本的image
  -q, --quiet                      关闭构建输出并在成功时打印image ID
      --rm                         在成功构建后移除中间容器(默认为true)
      --security-opt stringSlice   安全选项
      --shm-size string            “/dev/shm”的大小,默认为64MB
  -t, --tag list                   以' Name:tag'格式命名和可选的标记(default [])
      --ulimit ulimit              Ulimit选项(默认[])
  -v, --volume list                设置构建时绑定挂载(默认[])

1.2.3.2 构建一个带有openssh-server的容器镜像

[root@base ~]# cat Dockerfile
FROM centos:7

RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

#RUN useradd admin
#RUN echo "admin:admin" | chpasswd
RUN echo "root:123456" | chpasswd
#RUN echo "admin  ALL=(ALL)    ALL" >> /etc/sudoers

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
[root@base ~]# docker build -t ssh-server .

image.png

image.png

1.2.3.3 从构建的镜像拉起容器

[root@base ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ssh-server          latest              4e28f6e4fc6a        15 minutes ago      390 MB
docker.io/centos    7                   eeb6ee3f44bd        11 months ago       204 MB
[root@base ~]# docker run -dit --name sshd -p 10022:22 ssh-server
53b462f31348b9fc0bdda53084f374782d1c073155c5445434d555d988a6264d
[root@base ~]# ssh localhost:10022
ssh: Could not resolve hostname localhost:10022: Name or service not known
[root@base ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS                     PORTS                   NAMES
53b462f31348        ssh-server          "/usr/sbin/sshd -D"   11 seconds ago      Up 10 seconds              0.0.0.0:10022->22/tcp   sshd
88958f0f4fc8        7e989e1e46e7        "/bin/bash"           2 weeks ago         Exited (137) 2 weeks ago                           centos7

image.png

目录
相关文章
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
76 5
|
4天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
32 2
|
11天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
21 3
|
16天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
41 2
|
23天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
29天前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
1月前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)
|
1月前
|
Oracle 关系型数据库 Linux
Docker入门和安装
这篇文章提供了Docker的入门指南和在CentOS系统上安装Docker的详细步骤。
39 0
Docker入门和安装
|
Docker 索引 容器
Docker从入门到精通——安装Docker
Docker从入门到精通——安装Docker
72 0
|
6月前
|
关系型数据库 MySQL 应用服务中间件
Docker 从入门,安装、配置、及部署
Docker 从入门,安装、配置、及部署
241 1