前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker操作实践(3):Docker的操作详解

Docker操作实践(3):Docker的操作详解

作者头像
嘉为蓝鲸
修改于 2019-10-08 10:05:20
修改于 2019-10-08 10:05:20
8280
举报
今天是Docker讨论系列的终章,我们先从docker的命令开始介绍,再说明Docker run命令关键参数...

如果你还没看过前面的内容:

第一篇《容器的本质是什么?容器从何而来?》

第二篇《Docker的安装及架构介绍》

一张图了解docker命令

上图摘自:

http://bingohuang.com/simplify-docker-image-2/

1. 概念介绍:

Images:docker镜像。可将容器转化为镜像,也可从镜像运行出一个个的容器实例。类似于虚拟机模板的概念。

Container:容器。

有running\stopped\pause三种状态,类似于虚拟机的概念。

Tar files:可以将镜像打包为tar文件,也可以将打包后的tar文件重新load为镜像

Dockerfile:构建镜像的声明式配置文件。Docker技术的核心亮点之一。当我们从一个基础镜像(centos镜像)构建一个另一个基础镜像(如java镜像)时,一般不会使用的在centos镜像中直接安装java的方式,而是将java软件与centos镜像放置于一起,在相同目录下编写好dockerfile,dockerfile中定义了java镜像安装的命令和环境配置参数等安装信息,然后使用docker build命令就可以将这些软件及配置文件打包成一个java镜像。这样做的好处就是通过这种声明式的构建方式最终构建了一个纯净的镜像文件。

Registry:镜像仓库。用于存储镜像文件。

Engine:docker引擎

2. 与Engine相关的命令

Docker version 查看docker版本

Docker info 显示 Docker 系统信息,包括镜像和容器数.

Docker events 从服务器获取实时事件

3. 与容器相关的命令

状态操作命令:

  • Docker start 从stop到running
  • Docker kill 从running到stop,直接kill容器进程
  • Docker stop 从running到stop,容器在停止前先完成一些保护性的动作之后再停止容器
  • Docker pause 暂停容器中所有的进程
  • Docker unpause 恢复容器中所有的进程

容器与镜像相关的操作命令:

  • Docker commit 将容器保存为一个新的镜像
  • Docker create 从镜像创建一个容器,该容器状态为stop
  • Docker run 从镜像创建一个容器并将该容器启动
  • Docker diff 检查自镜像运行之后,容器里文件结构的更改

容器与tar文件相关的操作命令:

  • Docker export 将容器导出为一个tar文件

容器自身的其他操作命令:

  • Docker inspect 获取容器/镜像的元数据
  • Docker attach 连接到正在运行中的容器
  • Docker port 列出指定的容器的端口映射
  • Docker ps 查看系统中的容器
  • Docker top 查看容器中运行的进程信息
  • Docker rm 删除容器
  • Docker logs 获取容器的日志
  • Docker wait 阻塞运行直到容器停止,然后打印出它的退出代码
  • Docker exec 在运行的容器中执行命令
  • Docker network 操作容器网络

4. 与镜像相关的命令

容器与镜像相关的操作命令:

  • Docker commit 将容器保存为一个新的镜像
  • Docker create 从镜像创建一个容器,该容器状态为stop
  • Docker run 从镜像创建一个容器并将该容器启动
  • Docker diff 检查自镜像运行之后,容器里文件结构的更改

镜像与tar files相关的命令:

  • Docker import 将tar文件load为镜像,会丢失相关的元数据和历史记录
  • Docker load 将tar文件load为镜像
  • Docker save 将镜像保存为tar文件

镜像与dockerfile相关的命令:

  • Docker build 基于dockerfile构建镜像

镜像与仓库相关的命令:

  • Docker pull 从仓库下载镜像
  • Docker push 将镜像上传至仓库

镜像自身的命令:

  • Docker images 列举镜像
  • Docker rmi 删除镜像
  • Docker tag 为镜像打上标签
  • Docker inspect 列出镜像的详细信息
  • Docker history 列出镜像的构建历史

5. 与 tar files相关的命令

  • Docker export 将容器导出tar文件
  • Docker import 将tar文件load为镜像,会丢失相关的元数据和历史记录
  • Docker load 将tar文件load为镜像
  • Docker save 将镜像保存为tar文件

6. 与dockerfile相关的命令:

  • Docker build 基于dockerfile构建镜像

7. 与Registry相关的命令:

镜像与仓库相关的命令:

Docker pull 从仓库下载镜像

Docker push 将镜像上传至仓库

仓库自身的命令:

Docker search 在仓库中查找某个镜像

Docker login 登录仓库

Docker logout 登出仓库

其他docker命令学习示意图

Docker命令学习示意图:

图片来源:https://blog.csdn.net/yuanfenger/article/details/73316481

Docker命令学习示意图:

图片来源:https://www.twblogs.net/a/5c290471bd9eee01606d2e41

Docker run命令简介

Docker run命令的作用在于从一个容器镜像生成一个容器实例并将其启动。

Docker run的主要命令参数如下:

主要参数

说明

-d

后台运行容器,并返回容器ID

-i

以交互模式运行容器,通常与 -t 同时使用

-t

为容器重新分配一个伪输入终端,通常与 -i 同时使用

--name="nginx-lb"

为容器指定一个名称

--dns 8.8.8.8

指定容器使用的DNS服务器,默认和宿主一致

-h "mars"

指定容器的hostname

-e username="tom"

设置环境变量

-m

设置容器使用内存最大值

--net="bridge"

指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型

--link=[]

添加链接到另一个容器

--expose=[]

开放一个端口或一组端口

-p

将一个docker主机的端口映射到容器中

-v

将一个docker主机的目录映射到容器中

--ip

为容器指定ip地址

Docker run命令关键参数说明

1. -i -t -d

使用docker run -it [IMAGE_NAME] 可以启动一个容器,并进入命令行交互界面:

使用exit可退出此容器

使用-d可以让容器在后台运行:

2. --ip

--ip可以为容器指定ip地址,先使用docker network ls查看主机上的docker网络:

使用--ip参数启动容器:

此时会报错,如果要使用自定义ip,只能使用自定义的容器网络。先创建自定义的容器网络:

也可以在创建时手动指定容器的子网:

重新运行指定容器ip的命令:

执行成功,查看容器ip地址:

3. -h –name

-h指定容器中的主机名,--name指定容器的名字

4. -p

-p 可以将主机上的端口映射到容器中。-p 8088:80 表示将主机的8088端口映射到容器的80端口上:

5. -v

--privileged表示将对主机的文件更改的权限赋予此容器, -v 表示将主机的 /host/v1 目录映射给容器上的 /con/logs目录 ,如果容器中没有此目录,则会自动创建。执行命令

docker run -it --privileged -v /host/v1:/con/logs centos

在主机上的相应目录可看到容器中对该目录写入的内容

为容器挂载主机上的卷并设置容器只有对此卷的只读权限:

docker run -it –privileged -v /host/v1:/con/logs:ro centos

6. -m -c

-m用来指定容器内存,-c可用于指定容器的cpu配额

我们可以下载progrium/stress容器来测试容器的配额指定。使用以下命令查看该容器有哪些测试功能:

使用docker run -m 2000m可启动一个内存占用2000MB的容器,但该容器中未进行什么进程时,该容器并不会直接占用主机2000MB的内存。此时我们可以启动stress容器,并使用--vm 1和 –vm-bytes 2000M表示启动stress容器时在其中启动一个占用内存2000M的进程:

如果我们在一个总限额为2000MB的stress容器中启动3个占用500MB的进程,总共1500MB,那么情况如下:

在容器中是运行超过容器内存限额的进程的:

关于cpu限制,--cpu-share表示主机上运行的容器的cpu使用权重的定义。由于主机上有4个cpu核,所有需 --cpu 4参数在容器中启动4个进程以便将主机的cpu全部占满。

关于docker run中的 --cpus 参数,则是指定cpu的个数。当主机上有4个cpu时,容器只会使用总共1个cpu,也就是4分之1。

此数值也可以为小数,如0.5 ,那么容器只会使用此主机8分之1的cpu。

当数值与主机的cpu核数相同时,将可使用此主机的所有cpu配额,可以看到4个cpu全满。

我们可以启动5个占满cpu的进程而不是4个,情况如下:

作者:沈晓龙

其他话题

Docker操作实践(2):Docker的安装及架构介绍

Docker操作实践(1):容器的本质是什么?容器从何而来?

使用sqlplus进行Oracle数据库批量自动发布

赣州银行增强科技创新,实现一键灾备切换

业务复杂、数据庞大、应用广怎办?了解下分布式事务的解决思路!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嘉为科技 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker 使用指南 (一)—— 基本操作
本文介绍了Docker技术的基本概念、使用方法、以及如何在本地搭建Docker环境。主要包括Docker的用途、基本概念、容器与虚拟机的区别、镜像与容器、仓库与镜像、Docker的安装与使用、Docker的常用命令、Docker的生态系统、Docker的实际应用场景、Docker的图形化使用、Docker的监控和管理、Docker的集群和日志管理、Docker的安全、Docker的故障处理
田飞雨
2016/07/20
18.2K0
Docker 使用指南 (一)—— 基本操作
我看谁还敢说不懂Docker
Docker引领着容器生态,但也是容器生态的一部分,在了解Docker之前需要先了解以下容器技术。
MCNU云原生
2023/03/17
6320
我看谁还敢说不懂Docker
Docker命令详解
Docker 命令类别划分 Docker环境信息 — docker [info|version] 容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause] 容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat] 容器rootfs命令 — docker [commit|cp|diff] 镜像仓库 — docker [login|pul
LuckySec
2022/11/02
3510
Docker命令详解
Docker 基础与实践
作为一个后端开发,我刚开始工作的时候其实主要都是在本地调试的,并没有怎么了解过 Docker 的相关使用。直到后来开始接触较为复杂的底层链开发,因为链或其相关工具的依赖关系比较复杂,也涉及很多版本冲突问题,在本机或服务器上每次需要配置复杂的环境,且每次重启后很多服务与配置都需要重新部署,繁琐且容易出现一些莫名的跨平台错误。
pseudoyu
2023/04/11
9700
Docker的基本使用——常用docker命令
​ 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
不愿意做鱼的小鲸鱼
2022/09/26
6900
Docker的基本使用——常用docker命令
docker的使用二
Dockerfile是由一系列命令和参数构成的脚本,这些命令基于基础镜像并最终创建一个新的镜像。dockerfile类似于项目中的requirements里面是我们构建的镜像所需要的依赖的安装命令等内容,当我们构建完成dockerfile文件后只需将该文件移植到另一台docker上运行就可以生成一个我们需要的镜像。
GH
2020/04/02
9960
Docker安装及操作
链接:https://pan.baidu.com/s/1us3e1YAzoYPByd6hEG19eQ 提取码:ld9y 复制这段内容后打开百度网盘手机App,操作更方便
小闫同学啊
2019/07/18
1.2K0
Docker安装及操作
docker容器化python服务部署(supervisor-gunicorn-flask)
本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/13223767.html
用户7225427
2020/09/03
2.5K0
docker容器化python服务部署(supervisor-gunicorn-flask)
Docker初识到使用
例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。
苏州程序大白
2022/04/13
3740
Docker初识到使用
关于 Docker 入门,这一篇就够了
说到 Docker ,你会常遇到两个内容:image 和 container (即镜像和容器) 关于镜像和容器,你可以这样来理解:镜像是构建 Docker 的基石,用户基于镜像来运行自己的容器。或者说,镜像是 Docker 生命周期中的构建或打包阶段,而容器则是启动或是执行阶段。好吧,说的再明白点儿,就是有了镜像,才有的容器。容器是在镜像的基础上,才有的。
纯洁的微笑
2019/09/25
7920
一篇文章学会Docke
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
用户1212940
2019/11/13
5670
Docker 入门
虚拟化技术是一种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的,不可切割的障碍。使用户可以比原本的组态更好的方式,来应用这些资源。
RendaZhang
2020/12/16
7570
docker基本操作
容器中可以运行网络应用,但是要让外部也可以访问这些应用,可以通过-p或-P参数指定端口映射。
CoderJia
2024/10/18
1450
Docker 我们该学习什么呢?
Docker 是 Docker.Lnc 公司开源的一个基于 LXC 技术之上搭建的Container 容器引擎,源代码托管在 Github 上,基于 Go 语言并遵从 Apache2.0 协议开源。 简单的说就是 Docker 是一种容器技术。出现的原因是:虚拟机占用资源特别大,启动慢。程序和环境打包在一起。开发和运维之间的鸿沟,减少运维的工作量。
用户2242639
2021/06/29
3890
3-docker基础操作命令
docker的命令分老版命令格式和新版命令格式,新版命令主要是更直观了,添加了镜像[image]和容器[container]来区分命令,简单举例对比:
jackxiao
2021/11/16
3340
# Docker (二)
Dockerfile 是 Docker 镜像的自动化构建脚本,本质是一个纯文本文件(无后缀名,通常命名为 Dockerfile),其中包含一系列按顺序执行的指令。这些指令定义了如何从基础镜像开始,逐步添加配置、依赖和代码,最终生成一个可运行的容器镜像
落幕
2025/06/08
960
# Docker (二)
Docker 容器技术使用指南
1.1 Docker 的基本概念 1.2 为什么使用 Docker 1.3 Docker 体系结构简介 1.4 Docker 容器技术的应用场景
杰哥的IT之旅
2021/06/01
2.4K0
Docker 容器技术使用指南
Docker容器详解
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的App),更重要的是容器性能开销极低。
kubernetes中文社区
2019/06/24
8220
Docker容器详解
docker实践(2)常用命令和DockerFile详解
1、获取:docker pull centos获取镜像 #从官方仓库注册服务器下载镜像
黄规速
2022/04/14
7830
docker实践(2)常用命令和DockerFile详解
云时代Docker原理万字详解!!!
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
架构师修行之路
2020/02/20
5750
云时代Docker原理万字详解!!!
相关推荐
Docker 使用指南 (一)—— 基本操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档