- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
帮助命令
docker --version # 显示 Docker 版本信息
docker version # 显示 Docker 版本信息
docker info # 显示 Docker 系统信息,包括镜像数量和容器数量
docker --help # 帮助文档
从镜像仓库中下载镜像到本地,一般是保存在/var/lib/docker目录(分层下载)
# 拉取最新版本的镜像
docker pull ubuntu
# 拉取指定版本镜像
docker pull ubuntu:14.04
同一个仓库源可以有多个 TAG,代表这个仓库源的不同版本,使用REPOSITORY:TAG 定义不同的镜像,默认使用 latest 镜像
# 语法:docker images [选项] [仓库[:标签]]
-a # 列出本地所有镜像
-f # 显示过滤的镜像
-q # 只显示镜像id
--digests # 显示镜像的摘要信息
--no-trunc # 不截断输出(显示完整的镜像id)
# 列出本地主机上的镜像
[root@wzg ~]# docker images
# 显示所有镜像id(可实现镜像的批量操作)
[root@wzg ~]# docker images -aq
[root@wzg ~]# docker rmi $(docker images centos -aq)
# 显示ubuntu镜像的摘要信息
[root@wzg ~]# docker images ubuntu --digests
# 显示ubuntu完整的镜像id
[root@wzg ~]# docker images ubuntu --no-trunc
# -f选项
# 通过dangling的布尔值列出无标签的镜像
[root@wzg ~]# docker images -f dangling=true
# -f before=(<镜像名>[:标签]|<镜像ID>|<镜像digest>) 过滤出指定镜像之前创建的
# -f since=(<镜像名>[:标签]|<镜像ID>|<镜像digest>) 过滤出指定镜像之后创建的
# 使用镜像名加标签标识
[root@wzg ~]# docker images -f before=centos:latest
# 使用镜像ID标识
[root@wzg ~]# docker images -f before=5d0da3dc9764
# 使用digest值标识(格式为:仓库名称@摘要)
[root@wzg ~]# docker images -f since=ubuntu@sha256:0f71fa8d4d2d4292c3c617fda2b36f6dabe5c8b6e34c3dc5b0d17d4e704bd39c
标签就是描述镜像的版本信息,可以使用docker tag为镜像添加标签,即为镜像命名。
镜像仓库可以有多个标签。一个镜像也可以有多个标签。
如果一个镜像有多个标签,只有当最后一个标签被删除时,才真正删除镜像。
# 语法:docker tag 源镜像[:标签] 目标镜像[:标签]
# 创建标签让目标镜像关联到源镜像
# 为由镜像ID标识的镜像加上标签
[root@wzg ~]# docker tag 5d0da3dc9764 centos:version1.0
# 为由仓库名称标识的镜像加上标签
[root@wzg ~]# docker tag centos centos:version2.0
# 为由仓库名称和镜像ID组合标识的镜像加上标签
[root@wzg ~]# docker tag centos:latest centos:version3.0
# 指定一个注册服务器的主机名(可能包含端口)
[root@wzg ~]# docker tag 5d0da3dc9764 aliyun:5000/centos:version4.0
[root@wzg ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
aliyun:5000/centos version4.0 5d0da3dc9764 6 months ago 231MB
centos latest 5d0da3dc9764 6 months ago 231MB
centos version1.0 5d0da3dc9764 6 months ago 231MB
centos version2.0 5d0da3dc9764 6 months ago 231MB
centos version3.0 5d0da3dc9764 6 months ago 231MB
docker inspect
命令查看Docker对象(镜像、容器、任务)的详细信息。默认以JSON数组格式输出结果。
# 语法:docker inspect [选项] 名称|ID
-f (--format) # 指定特定内容输出
-s # 容器类型显示全部文件大小
--type # 返回json格式信息
# 查看centos/httpd镜像详细信息
[root@wzg ~]# docker inspect centos/httpd
# 获取镜像的体系结构
[root@wzg ~]# docker inspect --format='{{.Architecture}}' centos/httpd
amd64
# 获取镜像的根文件系统信息
[root@wzg ~]# docker inspect --format='{{.RootFS}}' centos/httpd
{layers [sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956 sha256:d15c61d3ecdaa582e75e2966792238c0325578ec9e0d2a1ed3183995345323d6 sha256:7c937d8a9f4f7a9761c292a6c7bcff1cc10384985282fa4fa5a04bfdb155bc90 sha256:920640105caf8a18f7db0df2638b863cbc73c2e0668d0559c5f9c93c474e8879] }
# 用JSON格式获取镜像的根文件系统信息
[root@wzg ~]# docker inspect --format='{{json .RootFS}}' centos/httpd
{"Type":"layers","Layers":["sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956","sha256:d15c61d3ecdaa582e75e2966792238c0325578ec9e0d2a1ed3183995345323d6","sha256:7c937d8a9f4f7a9761c292a6c7bcff1cc10384985282fa4fa5a04bfdb155bc90","sha256:920640105caf8a18f7db0df2638b863cbc73c2e0668d0559c5f9c93c474e8879"]}
查看镜像的构建历史,即 DockerFile的执行过程,每一层镜像都相当于一个子镜像。
# 语法:docker history [选项] 镜像名
[root@wzg ~]# docker history ubuntu:16.04
IMAGE CREATED CREATED BY SIZE COMMENT
b6f507652425 6 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 6 months ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
<missing> 6 months ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0B
<missing> 6 months ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 745B
<missing> 6 months ago /bin/sh -c #(nop) ADD file:11b425d4c08e81a3e… 135MB
# <missing>行表明相应的层在其他系统上构建,并且已经不可用了,可以忽略这些层。
# CREATED BY 表示每一层的构建操作命令
# 显示完整的操作命令
[root@wzg ~]# docker history ubuntu:16.04 --no-trunc
docker search
命令搜索docker hub仓库中的镜像
# 语法:docker search 镜像
# 可选项
--filter=stars=50 # 列出收藏数不小于指定值的镜像
[root@wzg ~]# docker search mysql
可以使用镜像的ID、标签、镜像摘要标识符来指定删除本地镜像。
如果一个镜像有多个标签,则当最后一个标签被删除时,镜像才真正删除。
# 语法:docker rmi [选项] 镜像名
# 语法:docker image rm [选项] 镜像名
# 选项:
-f # 强制删除
--no-prune # 不删除没有标签的父镜像
# 删除单个
docker rmi 镜像ID
docker rmi 镜像名:tag
docker rmi 镜像摘要
# 删除全部
docker rmi -f $(docker images -qa)
# 镜像摘要标识,先删了摘要再删了镜像
[root@wzg ~]# docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
centos/httpd latest sha256:26c667……369 2cc07fbb5000 3 years ago 258MB
[root@wzg ~]# docker image rm centos/httpd@sha256:26c6674463ff3b8529874b17f8bb55d21a0dcf86e025eafb3c9eeee15ee4f369
Untagged: centos/httpd@sha256:26c6674463ff3b8529874b17f8bb55d21a0dcf86e025eafb3c9eeee15ee4f369
[root@wzg ~]# docker images --digests -a
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
centos/httpd latest <none> 2cc07fbb5000 3 years ago 258MB
[root@wzg ~]# docker rmi centos/httpd:latest
……
# 语法:docker ps [OPTIONS]
# 不带选项列出正在运行的容器
-a # 列出所有的容器
-q # 只显示容器编号
-s # 显示容器所用的空间
-l # 显示最近创建的容器
-n=? # 显示最近n个创建的容器
--no-trunc # 显示完整id信息
-f # 过滤容器,可以通过id,name,status
# docker ps -af id= [name=] [status=]
# docker pause $(docker ps -af status=running -q)
使用 docker run
创建一个新的容器并启动,docker在后台运行的操作如下:
1.检查本地是否存在指定的镜像,如没有就从仓库自动下载
2.基于镜像创建容器并启动
3.为容器分配文件系统,并在镜像层顶部增加一个可读写的容器层
4.从主机配置的网桥接口将一个虚拟接口桥接到容器
5.从网桥的地址池给容器分配一个IP地址
6.运行用户指定的应用程序
7.根据设置决定是否终止容器运行
# 语法
docker run [OPTIONS选项] IMAGE镜像 [COMMAND命令] [ARG参数...]
-d # 后台运行容器,并返回容器ID。(不加-d,退出容器将自动终止容器)
-i # 容器的标准输入保持打开,以交互模式运行容器
-t # 为容器重新分配一个伪输入终端
-p # 设置端口映射,格式:'主机端口:容器端口'
--rm # 容器退出时自动删除
--name # 为容器指定名称
-v # 将主机本地的目录和容器目录绑定,实现数据的持久化,将数据存储在本地文件系统中
--restart #设置重启策略,如设置always,表示容器即使异常退出也会自动重启
--dns #指定容器使用的dns服务器(默认是和主机的dns设置一致)
# 启动容器执行命令后自动终止容器
docker run ubuntu:16.04 /bin/echo '这是一个自动终止的容器'
# 启动容器执行命令后退出自动删除
docker run --rm ubuntu:16.04 /bin/echo '这是一个自动删除的容器'
# 用交互模式启动容器,在容器内执行/bin/bash命令
docker run -ti ubuntu:16.04 /bin/bash #只要退出容器,容器就自动终止
# 启动容器并让其以守护进程的形式在后台运行
docker run -d ubuntu:16.04 #容器立即退出,bash没有连接到终端且无法运行
docker run -td ubuntu:16.04 /bin/bash
# 指定端口和名称
docker run -p 80:80 --name test ubuntu:16.04
Ctrl+D # 容器停止退出
exit # 容器停止退出
ctrl+P+Q # 容器不停止退出
# 删除容器
docker rm CONTAINER容器… # 删除指定容器(-f强制删除运行中的容器)
docker rm -f $(docker ps -aq) # 删除所有容器
# 删除所有未运行的容器(created和exited状态)
docker container prune
# inspect命令查看容器详细信息
# 语法:docker container inspect [OPTIONS选项] CONTAINER容器
-s # 显示所有文件大小
-f (--format) #筛选输出内容
# 获取容器的名称
docker container inspect -f='{{.Name}}'
# 通过JSON格式的State子节获取容器的状态元数据
docker container inspect --format='{{.State}}' CONTAINER容器
docker container inspect --format='{{json .State}}' CONTAINER容器
# 多层次筛选信息
docker container inspect --format='{{.NetworkSettings.Networks.bridge.Gateway}}'
实质是将 Docker 主机本地的标准输入、标准输出和错误流连接到了一个正在运行的容器上。
# 语法:docker attach [OPTIONS选项] CONTAINER容器
--detach-keys string # 覆盖分离容器的键顺序
--no-stdin # 不连接标准输入(问题:ctrl+C依然将容器停掉?)
--sig-proxy # 将所有接收的信号代理给进程(=false,表示不将信息代理给进程,ctrl+C退出但不停止容器)
# 示例:连接到一个运行中的容器并从中退出
[root@wzg ~]# docker run -d --name topdemo ubuntu /usr/bin/top -b
[root@wzg ~]# docker attach topdemo
[root@wzg ~]# docker attach --sig-proxy=false topdemo
docker exec [OPTIONS选项] CONTAINER容器 COMMAND命令 [ARG参数...]
-d, --detach # 后台运行(分离模式)
--detach-keys string # 覆盖分离容器的键顺序
-e, --env list # 设置环境变量
-i, --interactive # 保持标准输入开启
--privileged # 给予扩展权限
-t, --tty # 分配一个伪输入终端
-u, --user string # 用户名或ID
-w, --workdir string # 容器内工作目录
# 案例:进入容器,交互执行命令
[root@wzg ~]# docker exec -ti topdemo /bin/bash
# 案例:不进入容器执行命令
[root@wzg ~]# docker exec -i topdemo echo '11111'
11111
# 区别
# exec 是在容器中打开新的终端,并且可以启动新的进程
# attach 直接进入容器启动命令的终端,不会启动新的进程
# 创建容器
docker create [OPTIONS选项] IMAGE镜像 [COMMAND命令] [ARG参数...]
# 其他命令
docker start CONTAINER容器… # 启动容器
docker restart CONTAINER容器… # 重启容器
docker stop CONTAINER容器… # 停止容器
docker kill CONTAINER容器… # 强制停止容器
docker pause CONTAINER容器… # 挂起容器(暂停容器中所有的进程)
docker unpause CONTAINER容器… # 恢复容器中被暂停的所有进程
docker rename CONTAINER容器 NEW_NAME # 重命名容器
docker top CONTAINER容器… # 查看容器中运行的进程信息(UID是用户ID,PID是进程ID,PPID是父进程ID)
docker logs CONTAINER容器… # 查看容器的输出信息
# -t 显示时间戳
# -f 打印最新的日志
# --tail number 显示多少条
docker cp 容器id:容器内路径 目的主机路径 #从容器内拷贝文件到主机上
# 全部容器命令
Usage: docker container COMMAND
attach # 连接正在运行的容器
commit # 从当前容器创建新镜像
cp # 在容器和文件系统间复制文件和目录
create # 创建新容器
diff # 检查容器创建以来文件系统上文件或目录的更改
exec # 从正在运行的容器中执行命令
export # 将容器文件系统导出为归档文件
inspect # 显示容器详细信息
kill # 杀死一个正在运行的容器(强关)
logs # 获取容器的日志信息
ls # 输出容器列表(docker ps)
pause # 暂停一个或多个容器的所有进程
port # 列出容器的端口映射或特定的映射
prune # 删除所有停止的容器
rename # 对容器改名
restart # 重启容器
rm # 删除容器
run # 创建新容器并执行命令
start # 启动容器
stats # 显示容器资源使用统计信息
stop # 停止容器
top # 显示容器正在运行的进程
unpause # 恢复容器中被暂停的所有进程
update # 更新容器配置
wait # 阻塞容器运行,直到容器停止运行,输出退出码
本文主要给大家介绍Mysql数据库分库和分表方式(常用),涉及到mysql数据库相关知识,对mysql数据库分库分表相关知识感兴趣的朋友一起学习吧 1 分库 1.1 按照功能分库 按照功能进行
在当前对象由其他包含对象操作的系统中,当传递对当前对象的引用时,链接似乎一直在继续......没有任何结束(对于下面的代码,Car ->myCurrentComponent->myCar_Brake-
我有一个密码 UIAlertView,我们要求用户提供。我需要根据情况在不同的 View 上询问它,从 downloadViewController (用户下载数据后),当他们切换到他们的数据时(如果
我正在尝试编写一个函数,使得对于任何整数 x 的 P(x) 都有一个包含三个元素的列表,即平方、立方和 n 的四次方,但我仍然不知道如何组合然后制作一个函数,例如我有平方、立方体和 4 次幂函数下面是
关闭。这个问题需要更多 focused .它目前不接受答案。 关闭4年前。 锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。 我能否列出一份常见的
Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格。 括号中使用垂直隐式缩进或使用悬挂缩进。 EXAMPLE: ?
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
在经典 ui 中,您可以使用 xtype:cqinclude 包含来自不同路径的 rtePlugins,基本上为标准 RTE 插件创建一个位置,我如何在 Touch UI 中执行相同操作? 我尝试使用
在经典 ui 中,您可以使用 xtype:cqinclude 包含来自不同路径的 rtePlugins,基本上为标准 RTE 插件创建一个位置,我如何在 Touch UI 中执行相同操作? 我尝试使用
*strong text*我有多个网络应用程序使用了一些常见的依赖项,比如蒙戈连接器谷歌 Guava 乔达时间 我想到将它们从 webapp/WEB-INF/lib 中取出并放入一些 common-l
我正在编写一个 Web 服务器,我想知道哪些 HTTP 请求 header (由客户端发送)是最常见的,因此我应该重点实现。 目前,我只支持Accept 和Host。 最佳答案 不确定您的范围,但由于
我是一名优秀的程序员,十分优秀!