安装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 使用的镜像 启动容器时运行的命令 容器的创建时间 容器状态 容器的端口信息和使用的连接类型(tcpudp) 自动分配的容器名称
# 其中,状态有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.
设置镜像加速器
以阿里云为例,在阿里云的控制台首页输入 镜像容器服务。
按照阿里云给出的教程操作即可。