Docker的容器概念这里不再详细叙述,可自行百度,通俗可理解为虚拟机,但远优越于虚拟机,这里只介绍,使用命令对 container (容器)进行操作,使用 docker container –help ,可以查看所有container(容器)相关的命令。
Usage: docker container COMMAND
Manage containers
Options:
--help Print usage
Commands:
attach Attach local standard input, output, and error streams to
a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
exec Run a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Run a command in a new container
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
Run 'docker container COMMAND --help' for more information on a command.
# 可以使用 docker container COMMAND --help ,继续查看使用说明。
一、详细介绍
export 等同于 docker export |
将容器导出。 例如:docker export 89bbe6d629e2 -o c.tar 例如:docker export 89bbe6d629e2 | gzip > c1.tar.gz commit、export、import、save、load的区别 |
start 等同于 docker start |
启动已退出的容器 例如:docker start 9961bcc26a46 |
stop 等同于 docker stop |
停止容器 例如:docker stop 89bbe6d629e2 |
restart 等同于 docker restart |
重启容器 例如:docker restart f6ef0e0b3a1c |
kill 等同于 docker kill |
杀掉一个运行中的容器 Tips 2:kill和stop的区别 docker kill会向容器发送一个信号(SIGKILL或者其他信号)。 |
inspect 等同于 docker inspect |
查看容器详细信息 例如:docker inspect 89bbe6d629e2 |
ls 等同于 docker ps |
查看容器列表 例如:docker ps 例如:docker ps -a -q |
attach 等同于 docker attach |
连接到正在运行中的容器 |
exec 等同于docker exec |
在运行的容器中执行命令 参数选项 例如: Tips 1:注进入容器,且exit后不会停止容器的最佳方式。 |
rm 等同于 docker rm |
删除容器 例如:docker rm -f linux |
pause 等同于 docker pause |
暂停容器中所有的进程 例如:docker pause f6ef0e0b3a1c |
unpause 等同于 unpause |
恢复容器中所有的进程 例如:docker unpause f6ef0e0b3a1c |
run 等同于docker 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 :设置容器使用内存最大值;单位:bytes - -net “bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container/自定义,默认bridge,选项的区别参考:–net 选项的区别 –ip 指定IPv4地址 –ip6 指定IPv6地址 – -link []: 添加链接到另一个容器; - -expose []: 开放一个端口或一组端口;例如:使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data 例如:docker run -p 80:80 -v /data:/data -d nginx:latest -p,–publish:端口映射 -P(大写) :随机开发三个映射端口到容器的80 443 22端口 例如:docker create -it –name=linux –net=bridge centos7.3:v1 bash 例如:docker create -it –name=ins01 –net=br10 –ip=192.168.10.100 centos7.3:v1 例如:docker create -i –name=php01 –net=br10 –ip=192.168.10.10 -p=10080:80 centos7.3:v1 bash 例如:docker create -i –name=php03 –net=br10 –ip=192.168.10.10 -p=80:80 –expose={“22″,”443″} centos7.3:v1 例如:docker create -it –name=php01 –net=br10 -v /data/www:/data:ro centos7.3:v1 bash 例如:docker create -it –name=ins01 –net=br10 –ip=192.168.10.10 –expose=9000 -v=php-data:/data/www -v=php-conf:/data/conf -v=php-logs:/data/logs centos:latest |
create 等同于 docker create |
用法同 docker run,创建一个新的容器但不启动它 |
top 等同于 docker ps |
查看容器中运行的进程信息,支持 ps 命令参数 容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。例如:docker top mymysql |
commit 等同于 docker commit |
从容器中创建镜像 语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。 例如:docker commit -m “centos、php7.16、ngix、php-fpm” -p 375c8825bf66 bindocker:latest commit、export、import、save、load的区别 |
cp 等同于 docker cp |
用于容器与主机之间的数据拷贝。 语法 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH OPTIONS说明: -L :保持源目标中的链接 例如:docker cp /www/abc 96f7f14e99ab:/www/ 例如:docker cp /www/abc 96f7f14e99ab:/www |
diff 等同于 docker diff |
检查容器里文件结构的更改。 语法 :docker diff [OPTIONS] CONTAINER 例如:查看容器mymysql的文件结构更改。 docker diff mysql |
logs 等同于 docker logs |
获取容器的日志 语法:docker logs [OPTIONS] CONTAINER OPTIONS说明: -f : 跟踪日志输出 –since :显示某个开始时间的所有日志 -t : 显示时间戳 –tail :仅列出最新N条容器日志 实例:跟踪查看容器mynginx的日志输出。 docker logs -f mynginx |
port 等同于 docker port |
列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。 语法:docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]] 实例:查看容器mynginx的端口映射情况。 docker port 0020ddaca8dc |
prune | 删除已停止的容器,不清空运行、暂停的容器 例如:docker container prune |
rename 等同于 docker rename |
重新命名容器 例如:docker rename happy_beaver linuxBase |
stats 等同于 docker stats |
显示容器的内存、硬盘使用情况等 例如:docker stats |
wait | 阻塞运行直到容器停止,然后打印出它的退出代码。 语法: docker wait [OPTIONS] CONTAINER [CONTAINER…] 实例:docker wait 0020ddaca8dc |
二、Tips
1、–net 选项的区别
- –net=bridge— 默认选项,用网桥的方式来连接docker容器。
- –net=host— 高数docker跳过配置容器的独立网络栈。本质上来说,这个参数告诉docker不去打包容器的网络层。当然,docker 容器的进程仍然被限制在它自己独有的文件系统、进程列表以及其他资源中。一个快速命令 ip addr 将像你展示docker的网络,它是建立在docker 宿主主机上的,有完整的权限去访问宿主主机的网络接口。注意这不意味着docker容器可以去重新配置宿主主机的网络栈,重新配置是需要–privaleged=true 这个选项参数的,但是这个选项参数会让docker容器打开大量的端口以及其他的系统的超级管理权限的进程。这也会允许容器去访问宿主主机的网络服务,比如 D-bus。这会使docker容器里的进程有有权限去做一些意想不到的事,比如重启你的宿主主机。所以要谨慎使用这个选项参数。
- –net=container:NAME_or_ID— 告诉docker让这个新建的容器使用已有容器的网络配置。这个新建的容器将配置新的自己的文件系统和进程列表以及其他资源限制,但是将共享这个指定的容器的网络IP地址以及端口号,使得这两个容器可以通过 loopback接口相互访问。
- –net=none— 告诉docker为新建的容器建立一个网络栈,但不对这个网络栈进行任何配置,在这个文档的最后将介绍如何让你去建立自定义的网络配置
2、commit、export、import、save、load的区别
commit:操作对象是容器 , 将容器导出一个带分层结构的镜像
export:操作对象是容器,将容器导出一个容器快照(.tar.gz的压缩包)
import:操作对象快照,导入一个容器快照到本地镜像库
save:操作对象是镜像,导出一个镜像存储文件(.tar.gz的压缩包)
load:操作对象镜像存储文件,导入镜像存储文件到本地镜像库
使用示例:
docker export 375c8825bf66 | gzip > export.tar.gz //158M
docker save binphp:v1 | gzip > save.tar.gz //163M
docker import export.tar.gz export -m "从export.tar.gz" //镜像大小463MB
docker load -i save.tar.gz //镜像大小 483MB
使用docker image inspect export
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:d51dda8231502b0d9a9d42baf1b3769f0389986c5a0bd58b1df96002bcf28288"
]
}
使用docker image inspect binphp:v1
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:99b28d9413e47df267df84318788754dd39d4c8e0dc2c72c9e8922b3a91f21fa",
"sha256:13b364098285bdb1f76ab2d15e097b24791442553982d25c3d4eea8d71a83881"
]
}
可以看到区别 save的镜像文件保存了修改层结构,带分层结构。可以使用docker tags 回滚,
而export的快照文件,不带分层结构,未保存修改结构,无法回滚。
如果使用import导入save保存的镜像文件,则也无法保留层结构。
docker import save.tar.gz export -m "从export.tar.gz" //镜像大小494MB
从以上得出 export => import、save => load
推荐相关文档:
- Docker的安装
- Docker的配置文件 daemon.json 详细解
- Docker的启动参数
- Docker的命令之概述
- Docker的命令之容器管理 Container
- Docker的命令之镜像管理 Image
- Docker的命令之网络管理 network
- Docker的命令之集群节点管理 Swarm node
- Docker的命令之插件管理 Plugin
- Docker的命令之安全管理 Docker secret
- Docker的命令之集群服务管理 Service
- Docker的命令之 Docker stacks
- Docker的命令之集群管理 swarm
- Docker的命令之系统管理 Docker system
- Docker的命令之数据卷管理 Volume
- Docker的命令之快捷指令
- Docker中的镜像构建-Dockerfile指令详解
- Docker的实践笔记
- Docker create / Docker run 的选项详解
Pingback引用通告: Docker的命令之概述 | 精彩每一天
Pingback引用通告: Docker的命令之镜像管理 Image | 精彩每一天
Pingback引用通告: Docker create / Docker run 的选项详解 | 精彩每一天