docker 容器简单使用
安装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 容器简单使用的更多相关文章
- Docker 容器化部署1小时简单入门
Docker简介 Docker是DotCloud开源的.可以将任何应用包装在Linux container中运行的工具.2013年3月发布首个版本,当前最新版本为1.3.Docker基于Go语言开发, ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- 理解Docker(4):Docker 容器使用 cgroups 限制资源使用
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- 自定义Docker容器的 hostname
自定义Docker容器的 hostname 作者: John Deng 原创内容,欢迎传播,请注明出处:http://www.cnblogs.com/johnd/p/set-docker-host ...
- 使用 Device Mapper来改变Docker容器的大小
作者:Jérôme Petazzoni ( Docker 布道师) 译者:Mark Shao ( EMC 中国高级工程师) 如果在 CentOS . REHL . Fedor 或者其他默认没有 AUF ...
- 理解Docker容器的进程管理
摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...
- Docker容器概念讲解
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源. Docker是通过内核虚 ...
- Docker 容器测试全探索
导读 当我们构建好Docker镜像并利用多套容器共同组合成应用程序,建立起持续交付通道,了解了如何将新创建的镜像纳入到生产或者测试环境当中之后,新的问题来了——我们该如何测试自己的Docker容器?测 ...
- 给一个正在运行的Docker容器动态添加Volume
给一个正在运行的Docker容器动态添加Volume本文转自:http://dockone.io/article/149 [编者的话]之前有人问我Docker容器启动之后还能否再挂载卷,考虑到mnt命 ...
随机推荐
- bool? int?等可为空的数值类型的运算 三值逻辑
算术运算:(+,-,*,/)时,只要一个为null,则结果为null. 比较运算符: <.>.<= 和 >=,也是如此.如果一个或全部两个操作数都为 null,则结果为 fal ...
- starter
传统的 Spring 项目想要运行,不仅需要导入各种依赖,还要对各种 XML 配置文件进行配置,十分繁琐,但 Spring Boot 项目在创建完成后,即使不编写任何代码,不进行任何配置也能够直接运行 ...
- 错误try……except……else……finally 记录错误logging 抛出错误raise
1.错误处理机制 try--except--finally 格式: try: 可能出错的代码 except xxx1Error as e: 处理1 except xxx2Error as e: 处理2 ...
- c++刷leetcode记录
#include<iostream> #include<sstream> #include<vector> std::vector<int> split ...
- Vue 源码解读(12)—— patch
前言 前面我们说到,当组件更新时,实例化渲染 watcher 时传递的 updateComponent 方法会被执行: const updateComponent = () => { // 执行 ...
- mplus数据分析:增长模型潜增长模型与增长混合模型再解释
混合模型,增长混合模型这些问题咨询的同学还是比较多的,今天再次尝试写写它们的区别,希望对大家进一步理解两种做轨迹的方法有帮助. 首先,无论是LCGA还是GMM,它们都是潜增长模型的框框里面的东西: L ...
- 从ELF文件谈起
本文信息来源: 又是一期硬核内容:ELF文件格式 What's the difference of section and segment in ELF file format ELF Section ...
- 微信小程序token失效 自动请求后端,适用于自动登录
app.js // app.js App({ onLaunch() { let token = wx.getStorageSync('token') if (!token) { wx.login({ ...
- Django-模板布局
- 理解 MVCC
MongoDB.MySQL.Oracle.PostgreSQL 等事务型数据库都有 mvcc 的概念. MVCC: 即多版本并发控制,主要是为了提高数据库的读写性能,让数据库在读写的时候不用去加锁.m ...