查看命令
查看 Docker 帮助
命令:docker 或docker --help
[jirenyoudeMacBook-Pro:~ jirry]$ docker --help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/Users/jirry/.docker")
-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 "/Users/jirry/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/Users/jirry/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/Users/jirry/.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
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
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
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
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
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
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
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Run 'docker COMMAND --help' for more information on a command.
查看 Docker 版本
命令:docker --version 或 docker version
[jirenyoudeMacBook-Pro:~ jirry]$ docker --version
Docker version 18.09.2, build 6247962
[jirenyoudeMacBook-Pro:~ jirry]$ docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:39 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false
查看 Docker 命令帮助
可以使用
docker [commond] --help查看命令更多使用方法
命令:docker [COMMOND] --help
- COMMOND:命令
如:查看 stats 命令详细使用(docker stats 命令用来显示容器使用的系统资源)
[jirenyoudeMacBook-Pro:~ jirry]$ docker stats --help
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
查看容器底层信息
查看容器系统相关底层信息
命令:docker inspect [NAME|ID]
- NAME:容器名称
- ID:容器ID
查看 MyCentOS 容器底层系统信息
[jirenyoudeMacBook-Pro:local jirry]$ docker inspect MyCentOS
[
{
"Id": "e03121d8af5966a1918202ffdfa92d4e285d6ba76bed5a2e16f421493fe27919",
"Created": "2019-12-29T13:40:17.5184458Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 3552,
"ExitCode": 0,
"Error": "",
"StartedAt": "2019-12-29T14:29:48.4907232Z",
"FinishedAt": "2019-12-29T14:29:47.0012324Z"
},
"Image": "sha256:0f3e07c0138fbe05abcb7a9cc7d63d9bd4c980c3f61fea5efa32e7c4217ef4da",
...
}
...
]
镜像命令
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载
查看镜像
使用
docker images查看本地镜像列表
命令:docker images [OPTIONS]
- OPTIONS:参数选项
[jirenyoudeMacBook-Pro:~ jirry]$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
jirry/openresty 1.13 24f48f1e3683 5 months ago 74.7MB
参数说明
| 参数 | 描述 |
|---|---|
-a, --all |
查看所有镜像 |
输出内容
| 字段 | 描述 |
|---|---|
| REPOSITORY | 镜像仓库源 |
| TAG | 镜像标签版本 |
| IMAGE ID | 镜像ID |
| CREATED | 创建时间 |
| SIZE | 镜像大小 |
同一仓库源可以有多个 TAG,代表这个仓库源的多个不同版本
搜索镜像
命令:docker search [NAME]
- NAME:镜像名称
如:搜索 openresty 镜像
[jirenyoudeMacBook-Pro:~ jirry]$ docker search openresty
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
openresty/openresty OpenResty Official Docker Images - a dynamic… 264 [OK]
ficusio/openresty Minimalist OpenResty image 23 [OK]
3scale/openresty Latest Openresty with redis and some handy p… 16 [OK]
domecloud/openresty OpenResty By DomeCloud - a dynamic web platf… 3 [OK]
oondeo/openresty Ngnix + openresty + naxsi 2 [OK]
pahud/openresty openresty with docker 2 [OK]
quiq/openresty Enhanced openresty image with pre-installed … 1
travix/openresty Openresty-based sidecar to terminate ssl, au… 1 [OK]
flixtech/openresty-oidc-proxy An openresty based OpenID Connect Single Sig… 1 [OK]
songshenzong/openresty Docker Image packaging for OpenResty 1 [OK]
thesoul/openresty OpenResty® is a full-fledged web platform. 1
myobplatform/openresty-oidc Openresty 1 [OK]
vikings/openresty Openresty image base on centos 7 1 [OK]
saksmlz/openresty-docker Tiny image with nginx and openresty based on… 1 [OK]
hasura/openresty Openresty 1.9 debian image built nginx strea… 0
estafette/openresty-sidecar 0
rmoriz/openresty_autossl see https://github.com/rmoriz/docker_openres… 0 [OK]
qzkc/openresty_base 0
gotamedia/openresty-php OpenResty and PHP-FPM with supervisord 0
spaziodati/openresty Openresty docker image 0 [OK]
pcel/openresty 0
swaglive/openresty Openresty 0 [OK]
tansoft/openresty-php php with openresty, yaf, swoole 0
selim13/openresty-prometheus An extended OpenResty image with the Prometh… 0 [OK]
saagie/openresty-luarocks OpenResty with some Lua modules installed 0 [OK]
输出内容
| 字段 | 描述 |
|---|---|
| NAME | 镜像仓库源的名称 |
| DESCRIPTION | 镜像描述 |
| STARS | 类似 Github 里面的 stars,表示点赞、喜欢的意思 |
| OFFICIAL | 是否 Docker 官方发布 |
| AUTOMATED | 是否自动构建 |
获取镜像
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用
docker pull命令来下载它。
命令:docker pull [NAME:TAG]
- NAME:镜像名称
- TAG:镜像标签 (默认:lastest)
[jirenyoudeMacBook-Pro:~ jirry]$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
729ec3a6ada3: Pull complete
Digest: sha256:f94c1d992c193b3dc09e297ffd54d8a4f1dc946c37cbeceb26d35ce1647f88d9
Status: Downloaded newer image for centos:latest
删除镜像
删除一个或多个镜像
命令:docker images rm [NAME|ID] 或 docker rmi [NAME|ID]
- NAME: 镜像名称
- ID:镜像ID
容器命令
查看容器
使用
docker container ps或docker ps来查看正在运行或未运行的容器
命令:docker container ps [OPTIONS]或docker ps [OPTIONS]
- OPTIONS:参数选项
[jirenyoudeMacBook-Pro:~ jirry]$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
参数说明
| 参数 | 描述 |
|---|---|
-a,--all |
查看所有容器(包括:运行或停止的容器) |
输出内容
| 字段 | 描述 |
|---|---|
| CONTAINER ID | 容器ID |
| IMAGE | 容器运行镜像 |
| COMMAND | 容器运行命令 |
| PORTS | 容器端口监听及宿主机端口映射 |
创建并运行容器
命令:docker run [OPTIONS] [NAME:TAG] [CMD]
- OPTIONS: 参数选项
- NAME:TAG:镜像名称:镜像标签
- CMD:运行命令
创建并运行 myCentOS 容器
docker run -it --name myCentOS centos /bin/bash
进入容器后;可以输入 exit 退出容器
参数说明
| 参数 | 描述 |
|---|---|
-i,--interactive |
交互式操作 |
-t,--terminal |
终端 |
-d,--daemon |
后台运行模式 |
-p,--port |
主机端口与容器端口映射 |
-P |
使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口 |
--name |
容器名称 |
-v,--volumes |
主机目录挂载容器目录 (容器目录不可以为相对路径) |
--rm |
退出或停止容器,自动销毁容器 |
启动容器
启动一个已存在停止的容器
命令:docker start [NAME|ID] 或 docker kill [NAME|ID]
- NAME:容器名称
- ID:容器ID
[jirenyoudeMacBook-Pro:~ jirry]$ docker start myCentOS
myCentOS
容器自启动
在运行容器时,指定
--restart参数自启动策略,Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。
容器重启策略
- no:默认策略,在容器退出时不重启容器
- on-failure:在容器非正常退出时(退出状态非0),才会重启容器
- on-failure:3:在容器非正常退出时重启容器,最多重启3次
- always:在容器退出时总是重启容器
- unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器unless
- stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
容器退出状态码
- 0:表示正常退出
- 非0:表示异常退出(退出状态码采用chroot标准)
- 125:Docker守护进程本身的错误
- 126:容器启动后,要执行的默认命令无法调用
- 127:容器启动后,要执行的默认命令不存在
运行并自启动 MyCentOS 容器,运行容器时增加 --restart=always
[jirenyoudeMacBook-Pro:~ jirry]$ docker run -itd --restart=always --name MyCentOS centos /bin/bash
如果在运行容器时,未指定重启策略,可以使用
docker container update修改容器重启策略
命令:docker container update --restart=always [NAME|ID]
- NAME:容器名称
- ID:容器ID
停止容器
停止正在运行的容器,有两种方式停止容器
- 优雅停止容器
docker stop等待容器结束任务后停止容器- 强制停止容器
docker kill直接退出杀掉容器进程,不等待容器结束任务
命令:docker stop [NAME|ID]
- NAME:容器名称
- ID:容器ID
[jirenyoudeMacBook-Pro:~ jirry]$ docker stop myCentOS
myCentOS
停止所有容器
停止所有容器docker没有提供直接的命令,需要查出所有容器ID,然后批量停止容器
命令:docker stop $(docker ps -a -q)
$(docker ps -a -q):查出所有容器ID,-q:打印容器ID
[jirenyoudeMacBook-Pro:~ jirry]$ docker stop $(docker ps -a -q)
重启容器
命令:docker restart [NAME|ID]
- NAME:容器名称
- ID:容器ID
[jirenyoudeMacBook-Pro:~ jirry]$ docker restart MyCentOS
MyCentOS
删除容器
删除已创建的容器
命令:docker rm [OPTIONS] [NAME|ID]
- OPTIONS:参数选项
- NAME:容器名称
- ID:容器ID
[jirenyoudeMacBook-Pro:~ jirry]$ docker rm -f myCentOS
myCentOS
参数说明
| 参数 | 描述 |
|---|---|
-f,--force |
通过信号强制移除运行中的容器 |
-l,--link |
移除容器之间的链接 |
-v,--volumes |
删除与关联的挂载目录 |
清理已停止容器
清理掉所有处于终止状态的容器
命令:docker container prune
[jirenyoudeMacBook-Pro:~ jirry]$ docker container prune
# 警告!这将删除所有停止的容器。
WARNING! This will remove all stopped containers.
# 确定要继续吗?[是/否]
Are you sure you want to continue? [y/N]
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下两种命令进入一个正在运行的后台容器
[方式一]命令:docker attach [NAME|ID]
- NAME:容器名称
- ID:容器ID
[jirenyoudeMacBook-Pro:~ jirry]$ docker attach MyCentOS
注:这种方式进入容器,使用
exit退出后,容器运行状态也会随着停止,推荐使用第二种方式进入容器
[方式二]命令:docker exec [OPTIONS] [NAME|ID] [CMD]
- OPTIONS:参数选项
- NAME:容器名称
- ID:容器ID
- CMD:运行命令
[jirenyoudeMacBook-Pro:~ jirry]$ docker exec -it MyCentOS /bin/bash
这种方式进入容器,退出容器后,不会停止容器运行状态
参数说明
| 参数 | 说明 |
|---|---|
-i,—interactive |
交互式操作 |
-t,--terminal |
终端 |
退出容器
命令:exit
进入 MyCentOS 容器,退出容器
[jirenyoudeMacBook-Pro:~ jirry]$ docker exec -it MyCentOS /bin/bash
[root@e03121d8af59 /]# pwd
/
[root@e03121d8af59 /]# exit
exit
查看容器日志
查看容器内部标准输出
命令:docker logs [OPTIONS] [NAME|ID]
- OPTIONS:参数选项
- NAME:容器名称
- ID:容器ID
查看 MyCentOS 容器日志
[jirenyoudeMacBook-Pro:~ jirry]$ docker logs -f MyCentOS
参数说明
| 参数 | 描述 |
|---|---|
-f |
同 tail -f 命令,实时监听日志 |
查看容器进程
可以使用 docker top 来查看容器内部运行的进程
命令:docker top [NAME|ID]
- NAME:容器名称
- ID:容器ID
查看 MyCentOS 容器进程
[jirenyoudeMacBook-Pro:~ jirry]$ docker top MyCentOS
PID USER TIME COMMAND
3552 root 0:00 /bin/bash
导出容器
命令:docker export [NAME|ID] > [PATH]
- NAME:容器名称
- ID:容器ID
- PATH:导出容器快照文件
将 MyCentOS 容器导出快照到本地 /data/MyCentOS.tar.gz
[jirenyoudeMacBook-Pro:~ jirry]$ docker export MyCentOS > /data/MyCentOS.tar.gz
导入容器
命令:docker import [PATH] [NAME:TAG]
- PATH:导入容器快照文件
- NAME:镜像名
- TAG:镜像标签
将本地容器快照 /data/MyCentOS.tar.gz 导入镜像名为 jirry/mycentos:v1.0
[jirenyoudeMacBook-Pro:~ jirry]$ docker import /data/MyCentOS.tar.gz jirry/mycentos:v1.0
注:镜像名必须全部小写
网络命令
通常网络一般用于容器之间通讯连接, Docker 提供了 5 种网络驱动模式,要构建具有安全的一致行为的 Web 应用程序,可以使用 Docker 网络特性。根据定义网络,为容器实现完全隔离。
所有 Docker 安装后都存在的 docker0 网络,除非使用 docker run --network= 选项另行指定,否则 Docker 守护进程默认情况下会将容器连接到 docker0 这个网络
默认网络
安装 Docker 时,默认会自动创建 3 个网络,分别为:bridge、host、none,可以通过命令
docker network ls查看所有网络运行一个容器时,可以使用
--network参数指定在哪种网络模式下运行该容器
[jirenyoudeMacBook-Pro:config jirry]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
aa65a578400f bridge bridge local
32f4054e8429 host host local
503c3adf1517 none null local
网络模式
| 模式 | 描述 |
|---|---|
| bridge | 默认的网络驱动模式。如果不指定驱动程序,bridge 便会作为默认的网络驱动模式。当应用程序运行在需要通信的独立容器 (standalone containers) 中时,通常会选择 bridge 模式 |
| host | 移除容器和 Docker 宿主机之间的网络隔离,并直接使用主机的网络。host 模式仅适用于 Docker 17.06+ |
| overlay | overlay 网络将多个 Docker 守护进程连接在一起,并使集群服务能够相互通信。您还可以使用 overlay 网络来实现 swarm 集群和独立容器之间的通信,或者不同 Docker 守护进程上的两个独立容器之间的通信。该策略实现了在这些容器之间进行操作系统级别路由的需求 |
| macvlan | macvlan 网络允许为容器分配 MAC 地址,使其显示为网络上的物理设备。 Docker 守护进程通过其 MAC 地址将流量路由到容器。对于希望直连到物理网络的传统应用程序而言,使用 macvlan 模式一般是最佳选择,而不应该通过 Docker 宿主机的网络进行路由 |
| none | 对于此容器,禁用所有联网。通常与自定义网络驱动程序一起使用。none 模式不适用于集群服务 |
查看网络
命令:docker network ls
创建网络
命令:docker network create [OPTIONS] [MODEL] [NETWORK_NAME]
- OPTIONS:参数选项
- MODEL:网络模式
- NETWORK_NAME:网络名称
[jirenyoudeMacBook-Pro:config jirry]$ docker network create -d bridge network-1
4d7cb1b46f2f94577dfa8529c36d680bc3ae3a38e19fd4c40a48da14a893302f
参数说明
| 参数 | 描述 |
|---|---|
-d |
指定 Docker 网络模式,bridge、overlay 等 |
删除网络
命令:docker network rm [NETWORK_NAME]
- NETWORK_NAME:网络名称
系统命令
查看容器资源
docker stats 命令用来显示容器使用的系统资源,默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:
命令:docker stats [OPTIONS] [NAME|ID,...]
- OPTIONS:参数选项
- IMAGE:镜像名称
- ID:镜像ID
命令参数
| 参数 | 作用 | 描述 |
|---|---|---|
--no-stream |
返回当前容器状态 | 如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态 |
[NAME] 或 [ID] |
输出指定的容器状态 | name 容器名称 或 id 容器ID (注意:多个容器的名称或者是 ID 之间需要用空格进行分割) |
输出内容
| 字段 | 描述 |
|---|---|
| CONTAINER ID | 容器的 ID (以短格式显示) |
| NAME | 容器名称 |
| CPU % | CPU 的使用情况 |
| MEM USAGE / LIMIT | 当前使用的内存和最大可以使用的内存 |
| MEM % | 以百分比的形式显示内存使用情况 |
| NET I/O | 网络 I/O 数据 |
| BLOCK I/O | 磁盘 I/O 数据 |
| PIDS | PID 号 |
数据卷挂载
Docker Volume能让容器从宿主主机中读取文件或持久化数据到宿主主机内,让容器与容器产生的数据分离开来。你可以简单地把它理解为linux服务器上的挂载点。一个容器可以挂载多个不同的目录。Volume的生命周期是独立于容器的生命周期之外的,即使容器删除了,volume也会被保留下来,Docker也不会因为这个volume没有被容器使用而回收。在容器中,添加或修改这个文件夹里的文件也不会影响容器的联合文件系统。
背景
数据卷不使用分层文件系统,这对经常读取和写入的数据很有利。在开发过程中,你可以把代码目录挂载到容器中,这样,如果你更改代码,容器会实时地得到文件修改的反馈。容器中的挂载点必须是绝对路径,不支持相对路径。宿主机上的地址可以是一个绝对路径,也可以是一个数据卷名(如果数据卷不存在,docker会自动创建数据卷)。
注意:不要在Dockerfile中指定挂载一个host主机的目录。不够灵活,因为在别的主机上不一定有这样一个目录。
参考资料:Docker Volume入门用法详解
帮助命令:docker volume --help
| 命令 | 说明 |
|---|---|
create |
Create a volume 创建一个数据卷 |
inspect |
Display detailed information on one or more volumes 打印一个或多个数据卷的详细信息 |
ls |
List volumes 列出所有数据卷 |
prune |
Remove all unused local volumes 删除所有未使用的数据卷 |
rm |
Remove one or more volumes 删除一个或多个数据卷 |
查看所有数据卷
命令:docker volume ls
查看所有未使用的数据卷
命令:docker volume ls -f dangling=true
查看数据卷详细信息
命令:docker inspect [VOLUME_NAME]
- VOLUME_NAME:数据卷名称
创建数据卷
命令:docker volume create [VOLUME_NAME]
- VOLUME_NAME:数据卷名称
删除数据卷
命令:docker volume rm [VOLUME_NAME]
- VOLUME_NAME:数据卷名称
删除所有未使用数据卷
命令:docker volume prune
文件拷贝
从容器里面拷文件或文件夹到宿主机,或者从宿主机拷贝文件或文件夹到容器中,在宿主机里面执行以下命令
从容器拷贝到宿主机
命令:docker cp [CONTAINER:/CONTAINER_PATH] HOST_PATH
-
CONTAINER:容器名称或ID
-
CONTAINER_PATH:容器文件或文件夹路径
-
HOST_PATH:宿主机文件或文件夹路径
示例: 从容器 MyCentOS 中拷贝 /home/test.txt 到宿主机 /home/test.txt
docker cp MyCentOS:/home/test.txt /home/test.txt
从宿主机拷贝到容器
命令:docker cp HOST_PATH [CONTAINER:/CONTAINER_PATH]
- CONTAINER:容器名称或ID
- HOST_PATH:宿主机文件或文件夹路径
- CONTAINER_PATH:容器文件或文件夹路径
示例: 从宿主机拷贝 /home/test.txt 到容器 MyCentOS 中
docker cp /home/test.txt MyCentOS:/home/test.txt
评论区