一、帮助命令
version
查看Docker版本信息
docker version
info
查看Docker系统信息,包括镜像和容器数
docker info
--help
查看命令的帮助信息,和Linux的命令的帮助信息一样。
docker --help
二、镜像命令
images
列出本地镜像
docker iamges
docker后面还可以跟选项参数
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
# 输出选项说明
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
# 输出结果
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest dcf9ec9265e0 8 days ago 98.2MB
mysql 5.7 1e4405fe1ea9 8 days ago 437MB
centos 7 5e35e350aded 2 weeks ago 203MB
hello-world latest fce289e99eb9 11 months ago 1.84kB
delron/elasticsearch-ik 2.4.6-1.0 095b6487fb77 19 months ago 689MB
search
从Docker Hub查找所有对应镜像的信息, 并且还可以加入限制条件
docker search 某个镜像的名字
参数:
--automated: 只列出 automated build类型的镜像;
--no-trunc: 显示完整的镜像描述;
-s: 列出stars数不小于指定值的镜像。
pull
从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG]
tag不写默认拉取最新的镜像, 效果同python的pip不指定版本默认最新。
rmi
删除本地一个或多少镜像。使用可以指定镜像名字或者id
docker rmi [OPTIONS] IMAGE [IMAGE...]
参数:
-f 强制删除
删除单个
docker rmi -f 镜像id
删除多个
docker rmi -f 镜像id1:tag id2:tag ...
删除全部
docker rmi -f $(docker images -aq)
build
命令用于使用 Dockerfile 创建镜像。
docker build [OPTIONS] PATH | URL | -
常用参数选项
-f :指定要使用的Dockerfile路径;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
三、容器命令
run
创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--name="容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
以交互式的方式启动容器
# 先拉取centos:7的镜像, 然后以交互式启动
[root@localhost ~]# docker run -it centos:7
[root@3a3545a4f704 /]# pwd
/
以守护式方式启动容器
#使用镜像centos:7以后台模式启动一个容器
docker run -d centos:7
问题:然后docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
ps
列出容器
docker ps [OPTIONS]
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
使用方式与docker images类似。
start/restart/stop
启动/重启/停止 一个或多个已经被停止的容器
三者的使用方式一样, 最后跟容器的id或名称
docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]
rm
删除一个或多个容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-v :删除与容器关联的卷。
一次性删除多个容器:
docker rm -f $(docker ps -aq)
或者
docker ps -aq | xargs docker rm
# 上面的可以跟多个容器的使用方式都可以类似操作
logs
获取容器的日志
docker logs [OPTIONS] CONTAINER
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
top
查看容器中运行的进程信息。
docker top [OPTIONS] CONTAINER
inspect
获取容器/镜像的元数据(内部细节), 默认返回的是格式化后的json格式的串。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
[root@localhost ~]# docker inspect ef9d
[
{
"Id": "ef9d8ce5c46984839ed26639f4cd96feba07ebb3aab609e5b47333ced626ed54",
"Created": "2019-12-01T09:36:07.557435626Z",
"Path": "docker-entrypoint.sh",
"Args": [
"/usr/local/etc/redis/redis.conf",
"--appendonly",
"yes"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
...
commit
从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
logs
获取容器的日志
docker logs [OPTIONS] CONTAINER
exec/attach
进入正在运行的容器并以命令行交互
docker exec -it 容器id bashShell
docker attach 容器id
上述两者的区别
attach: 直接进入容器启动命令的终端,不会启动新的进程
exec: 是在容器中打开新的终端,并且可以启动新的进程
cp
用于容器与主机之间的数据拷贝。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
push
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push NAME[:TAG]
# 以阿里云作为远程仓库为例
$ sudo docker login --username=自己的账号名 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/名称空间/仓库名称:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/名称空间/仓库名称:[镜像版本号]