Docker入门之常用命令
写在前面
细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没。
让我们一起来回顾一下Docker
是什么?
- 是一种虚拟化技术
- 能够将应用程序自动部署到容器
- 使用Go语言开源引擎
- 能够非常方便的将我们的应用程序以及运行所以来的环境部署到开发,测试及生产环境。一次编译,随处可用
有什么优势?
- 提供了简单轻量的建模方式
- 职责的逻辑分离
- 快速高效的开发生命周期
- 让应用部署具备了高可移植性
- 更方便的使用面向服务的架构
Docker的使用场景?
- 使用Docker容器开发,测试,部署服务
- 创建隔离的运行环境
- 搭建测试环境
- 构建多用户的平台即服务(PaaS)基础设施
- 提供软件即服务(SaaS)应用程序
- 高性能,超大规模的宿主机部署
常用命令
查看已安装的Docker版本
docker version

我们知道docker采用的是C/S架构的方式,所以我们可以看到一个是client端,一个是server端(守护进程)。
查看docker是否在运行以及所有状态的容器实例
docker ps // 列出目前正在运行的containers docker ps -a //列出所有的docker containers,包括没有运行的
我们用下面的命令来尝试运行一个容器化的web server
docker run -d -p 80:80 --name webserver nginx
如果nginx这个镜像在本地没有找到,docker就会自动从docker hub 上下载到本地并且运行在80端口,我们输入 http://localhost 就可以看到已经运行成功

如果我们不手动停止刚才的container的话,它就一直会运行。
docker stop webserver
docker start webserver
在docker安装成功之后会在机器上启动客户端,可以进行一些基础的设置

Docker命令从功能上来说分为下面几个部分:
容器生命周期管理
包含 run ,start/stop/restart , kill , rm , pause/unpause , create , exec ,以run命令举例,用它来创建并运行一个容器,语法如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
容器操作
包含 ps , inspect ,top , attach , events , logs , wait , export , port
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
容器rootfs命令
包含 commit ,cp , diff
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] //从容器创建一个新的镜像。
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
镜像仓库
包含 login , pull , push , search
docker login [OPTIONS] [SERVER] //登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
OPTIONS说明:
-u :登陆的用户名
-p :登陆的密码
本地镜像管理
包含 images , rmi , tag , build , history , save , import
docker images [OPTIONS] [REPOSITORY[:TAG]] //列出本地镜像
OPTIONS说明:
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
--digests :显示镜像的摘要信息
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
info|version
显示docker系统相关信息

以上列出的只是其中的几个命令,详细命令可参考官网或者 docker --help 来查看
https://docs.docker.com/edge/engine/reference/commandline/docker/
写在最后
docker官方提供了很好的文档支持,社区也非常的活跃,非常易于学习。
容器虚拟化技术已然是未来的主流,应该是每个coder都需要去了解和学习的。
Docker入门之常用命令的更多相关文章
- Docker 入门指南——常用命令
前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...
- Docker入门以及常用命令
目的: Docker入门 Docker简介 Centos7安装Docker Docker HelloWorld运行原理解析 阿里云镜像仓库配置 Docker常用命令 Docker基本命令 Docker ...
- docker入门及常用命令
Docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...
- Docker的入门及常用命令
Docker入门及常用命令 1. 各个容器之间是相互隔离状态: 这样减少了我们软件之间的影响. 2. docker是os层虚拟化架构的一种产品体现, os层虚拟化架构出来的操作系统需要和宿主机操作系统 ...
- Docker基础和常用命令
Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- docker 安装与常用命令与常用容器(containers)环境
注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...
- Docker系列之常用命令操作手册
目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...
- Docker(2):快速入门及常用命令
什么是Docker? Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行和管理 ...
- Docker三剑客之常用命令
一.docker-machine 命令 说明 docker-machine create 创建一个 Docker 主机(常用-d virtualbox) docker-machine ls 查看所有的 ...
随机推荐
- gitignore样例解析
# 这是注释行 -- 被忽略 *.a # 忽略所有以 .a 为扩展名的文件 !lib.a # 但是lib.a 文件或目录不要忽略,即使前面设置了对*.a的忽略 /TODO # 只忽略此目录下的TODO ...
- 多个tab选项卡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 基于input子系统的sensor驱动调试(一)
要想弄明白世界的本质,就要追根溯源:代码也是一样的道理: 最近调试几个sensor驱动,alps sensor驱动.compass sensor驱动.G-sensor驱动都是一样的架构: 一.基于in ...
- windbg关于.NET分析的扩展命令
收到一个dump文件,运行环境的.net framework的详细版本是多少呢? dump信息与性能计数器结合分析时,想知道该dump运行的进程号是多少? dump定位到有效的堆栈信息,而对应的源码是 ...
- jQuery之开关灯示例
准备jquery-3.2.1.js文件 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 【一小时入门】webpack 入门指南
什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...
- 给“file”类型的input框赋值的问题
开发"新闻编辑"功能时,会遇到给"file"类型的input框赋值的问题,用来展示之前上传的文件,但由于file类型的input框受到安全限制,所以不能被赋值, ...
- js面向对象学习笔记(四):对象的混合写法
//对象的混合写法//1.构造函数function 构造函数() { this.属性}构造函数.原型.方法 = function () {};//调用var 对象1 = new 构造函数();对象1. ...
- bzoj:3730: 震波
Description 在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i].不幸的是,这片土地常常发生地震,并且随着时 ...
- hihoCoder #1078 : 线段树的区间修改(线段树区间更新板子题)
#1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题 ...