安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装docker也可以使用 playwithdocker 提供的在线环境使用。链接:https://labs.play-with-docker.com/,不过对于免费版每天只要4小时使用时间。

docker简介

  • Docker是最受大众关注的容器技术,并且现在"几乎”成为事实上的容器标准。
  • 容器是一 种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

docker容器简单来理解就是一款虚拟机,不过他相对于传统的虚拟机来说有很多优势。具体参数对比如下表所示:



容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。

docker容器简单使用

如图,这里使用的是阿里的ECS服务器安装的Centos 7,如果我们想要测试一个命令在 Ubuntu上的执行效果的话,利用docker的特点可以很方便的做到,而如果是我们使用虚拟机就需要安装Ubuntu系统就显得很麻烦。



输入 docker 可以获得docker的参数列表,跳转至文章末尾查看 1

1、HelloWorld

查看镜像

命令 docker images 列出本地镜像。



拉取镜像

下面我们将在Centos上运行一个容器,需要用到 Ubuntu 的镜像。这里我们可以使用 docker pull : 从镜像仓库中拉取或者更新指定镜像。

docker pull [OPTIONS] NAME[:TAG|@DIGEST] -a :拉取所有 tagged 镜像 --disable-content-trust :忽略镜像的校验,默认开启

这里我已经有了 ubuntu15.10 就不再测试了。docker 镜像源由于某些原因都比较慢,我们可以设置镜像加速器加速,跳转至文章末尾查看

创建容器

docker run :创建一个新的容器并运行一个命令

Docker 允许在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

$ docker run ubuntu:15.10 /bin/echo "Hello world"
# 参数详情
# docker: Docker 的二进制执行文件。
# run: 与前面的 docker 组合来运行一个容器。
# ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
# /bin/echo "Hello world": 在启动的容器里执行的命令

Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world” 。ps:如果本地没有 Ubuntu 的镜像,创建容器时会自行向仓库 pull 该镜像。

2、运行交互式的容器

我们之前已将创建了一个 ubuntu 容器,并在该容器上成功输出了 “Hello world”。下面我们在ubuntu 容器启动一个 shell,并与之交互。

$ docker run -i -t ubuntu:15.10 /bin/bash
# -t: 在新容器内指定一个伪终端或终端。
# -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

注意,这里的6a5e5ed60662:/# 表示我们已进入一个 ubuntu15.10 系统的容器

输入: cat /etc/issue 查看发行版本



我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

3、启动容器(后台模式)

我们在运行某些程序的时候总是希望他们在后台运行,不希望他们在前台阻塞窗口。在Linux 下可以在执行命令后借一个 ‘&’ 使之在后台运行,在docker 中我们通过 -d 参数指定其在后台运行。

使用以下命令创建一个以进程方式运行的容器。该命令意为没隔一秒中打印一个 “Hello world”。

$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

在输出中,我们没有看到期望的 “hello world”,而是一串长字符

“1a409b9bd25192b7a7b7ef0a1949385d60cb64c62431656a74692d3abf4b9a4d”

这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。

查看容器进程

我们可以通过 docker ps 来查看正在运行的容器及其相关信息。

CONTAINER ID   IMAGE    COMMAND          CREATED       STATUS  PORTS                                NAMES
容器 ID 使用的镜像 启动容器时运行的命令 容器的创建时间 容器状态 容器的端口信息和使用的连接类型(tcp\udp) 自动分配的容器名称
# 其中,状态有7种:
# created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡

查看容器日志

在宿主主机内使用 docker logs 命令,查看容器内的标准输出

docker logs 1a409b9bd251   # 使用 docker logs id 或这 docker logs name 都可以

1a409b9bd251容器的输出n多个的“hello world”。

停止容器

我们使用 docker stop 命令来停止容器:

docker stop 1a409b9bd251  # 这里同样也可以用 docker stop awesome_shockley 方式停止容器

通过 docker ps 查看,容器已经停止工作。


# 以下中文部分为谷歌翻译后替换,可能存在误翻情况,仅做参考。
Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options:
--config string Location of client config files (default "/home/stu/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker
context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/home/stu/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/home/stu/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/home/stu/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit Management Commands:
builder Manage builds 管理构建
config Manage Docker configs 管理Docker配置
container Manage containers 管理容器
context Manage contexts 管理上下文
engine Manage the docker engine 管理Docker引擎
image Manage images 管理图片
network Manage networks 管理网络
node Manage Swarm nodes 管理Swarm节点
plugin Manage plugins 管理插件
secret Manage Docker secrets 管理Docker机密
service Manage services 管理服务
stack Manage Docker stacks 管理Docker堆栈
swarm Manage Swarm 管理群
system Manage Docker 管理Docker
trust Manage trust on Docker images 管理对Docker映像的信任
volume Manage volumes 管理卷 Commands:
attach 将本地标准输入,输出和错误流附加到正在运行的容器
build 从Dockerfile构建映像。
commit 根据容器的更改创建新图像
cp 在容器和本地文件系统之间复制文件/文件夹。
create 创建一个新的容器
deploy 部署新堆栈或更新现有堆栈
diff 检查容器文件系统上文件或目录的更改
events 从服务器获取实时事件
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档
history 显示图像的历史记录。
images 列出图片
import 从压缩包中导入内容以创建文件系统映像。
info 显示系统范围的信息
inspect 返回有关Docker对象的低级信息
kill 杀死一个或多个正在运行的容器
load 从tar存档或STDIN加载图像
login 登录Docker注册表
logout 从Docker注册表注销
logs 提取容器的日志
pause 暂停一个或多个容器中的所有过程
port 列出容器的端口映射或特定映射
ps 列出容器
pull 从注册表中提取图像或存储库
push 将映像或存储库推送到注册表
rename 重命名容器
restart 重新启动一个或多个容器
rm 删除一个或多个容器
rmi 删除一个或多个镜像
run 在新容器中运行命令
save 将一个或多个图像保存到tar存档(默认情况下流式传输到STDOUT)
search 在Docker Hub中搜索图像
start 启动一个或多个已停止的容器
stats 显示容器资源使用状态的活动流
stop 停止一个或多个运行中的容器
tag 创建一个标记TARGET IMAGE,它引用了SOURCE IMAGE
top 显示容器的运行过程
unpause 在一个或多个容器中取消进程的暂停
update 更新一个或多个容器的配置
version 显示Docker版本信息
wait 阻塞直到一个或多个容器停止,然后打印其退出代码 Run 'docker COMMAND --help' for more information on a command.

设置镜像加速器

以阿里云为例,在阿里云的控制台首页输入 镜像容器服务



按照阿里云给出的教程操作即可。


docker 容器简单使用的更多相关文章

  1. Docker 容器化部署1小时简单入门

    Docker简介 Docker是DotCloud开源的.可以将任何应用包装在Linux container中运行的工具.2013年3月发布首个版本,当前最新版本为1.3.Docker基于Go语言开发, ...

  2. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  3. 理解Docker(4):Docker 容器使用 cgroups 限制资源使用

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  4. 自定义Docker容器的 hostname

    自定义Docker容器的 hostname   作者: John Deng 原创内容,欢迎传播,请注明出处:http://www.cnblogs.com/johnd/p/set-docker-host ...

  5. 使用 Device Mapper来改变Docker容器的大小

    作者:Jérôme Petazzoni ( Docker 布道师) 译者:Mark Shao ( EMC 中国高级工程师) 如果在 CentOS . REHL . Fedor 或者其他默认没有 AUF ...

  6. 理解Docker容器的进程管理

    摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...

  7. Docker容器概念讲解

    Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源. Docker是通过内核虚 ...

  8. Docker 容器测试全探索

    导读 当我们构建好Docker镜像并利用多套容器共同组合成应用程序,建立起持续交付通道,了解了如何将新创建的镜像纳入到生产或者测试环境当中之后,新的问题来了——我们该如何测试自己的Docker容器?测 ...

  9. 给一个正在运行的Docker容器动态添加Volume

    给一个正在运行的Docker容器动态添加Volume本文转自:http://dockone.io/article/149 [编者的话]之前有人问我Docker容器启动之后还能否再挂载卷,考虑到mnt命 ...

随机推荐

  1. 白话OAuth2.0

     一.OAuth是什么 OAuth简写:Open Authorization(开放授权).百度百科上是这么说的:为用户资源提供了一个安全,开放而又简易的标准.解决了密码的反模式问题(第三方应用不需要知 ...

  2. git问题:gpg failed to sign the data fatal: failed to write commit object问题

    今天用版本控制工具git提交时一直出现的问题:gpg  failed to sign the data fatal: failed to write commit object, gpg是一个加密软件 ...

  3. linux centos7下 c++编程

    在Linux下与在windos下编程没啥区别,可以在windos上实现后,然后更改一些,移植到linux中 yum install gcc yum install gcc-c++ vi main.cp ...

  4. linux多进/线程编程(4)——进程间通信之pipe和fifo

    前言: Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块 ...

  5. 五、Java控制流程

    Java流程控制* 用户交互Scanner.Scanner进阶使用 用户交互Scanner ​ 之前我们学习的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获 ...

  6. PhpStrom 好用的代码小地图插件

    类似SublimeText的Mini Map插件 ,废话不多直接上 安装 打开File -> Settings -> Plugins -> 搜索CodeGlance -> in ...

  7. linux下编译安装php5.6出现 configure: error: Cannot find MySQL header files under /usr/local/mysql.

    #yum install gcc gcc-c++ libxml2 libxml2-devel libjpeg-devel libpng-devel freetype-devel openssl-dev ...

  8. LGP4287题解

    小清新 manacher 题.题意清楚. 首先看到回文,自然而然地就去想 manacher 了.先想想,manacher 到底在干嘛? manacher 做的其实是一个暴力,枚举每一个位置最远能够伸到 ...

  9. LGP7915题解

    奇怪的乱搞做法(? 首先我们枚举序列的每一个位置,从这个位置劈开,假设这个位置是 \(i\),那么按照题意模拟,我们能够构造一个最终序列有 \(i\) 个 L 和 \(n-i\) 个 R 的符合题意的 ...

  10. linux下oracle数据库的启动

    linux下oracle数据库的启动 一.切换oracle用户 命令:su - oracle 二.运行sqlplus命令,进入sqlplus环境 命令:sqlplus /nolog (nolog参数表 ...