如果说蓝色大海相当于宿主机系统Linux,那么鲸鱼就是docker,集装箱就是容器的实例,而容器来自于我们的镜像。废话不多说,常用命令汇总
帮助命令
# 查看docker描述,版本..
docker version
# 更详细信息描述
docker info
# 查看执行命令帮助
docker --help
镜像命令
# 列出当前镜像模板
docker images
# REPOSITORY镜像的仓库源
# TAG镜像的标签
# IMAGE ID镜像ID
# CREATED镜像创建时间
# SIZE镜像大小
# 同一个仓库源可以有多个TAG,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像,如果你不指定一个进项的版本标签例如你使用hello-world ,docker将默认使用hello-world:latest镜像
docker images -a#列出本地所有的镜像(含中间映像层
-q#只显示镜像ID
--digests #显示镜像的摘要信息
--no-trunc #显示完整的镜像信息
docker search xxx#去docker去找xxx的镜像,例如:docker search redis 去dockerHub找redis镜像。
docker search -s 30 redis #去dockerHub去找点赞数超过30的redis镜像
docker search -s 100 --no-trunc redis #添加--no-trunc显示完整的镜像信息
docker pull redis #去dockerHub拉取redis镜像,等价于docker pull redis:latest,如果拉取redis:3.2 则docker pull redis:3.2
docker rmi 镜像名 # 删除镜像,例如:docker rmi hello-world 不指定版本号相当于删除镜像hello-world:latest 如果当前容器使用此镜像,无法删除
docker rmi -f hello-world #强制删除hello-world镜像
docker rmi -f 镜像名1:TAG 镜像名2:TAG #删除多个镜像
docker rmi -f $(docker images -qa)#删除全部镜像
容器命令1
#新建并启动容器
docker run [OPTIONS] IMAGE[COMMAND][ARG...]
OPTIONS:
--name="容器新名字" 为容器指定一个名称
-d 后台运行容器,并返回容器ID,也即启动守护式容器
-i 以交互模式运行容器,通常与-t同事使用
-t 为容器重新分配一个伪输入终端,通常与-i同事使用
-P 随机端口映射
-p 指定端口映射,有以下四种格式:
ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort
# 命令 demo:
docker run -it [IMAGE ID]# 以交互模式运行容器,并为容器重新分配一个伪输入终端,比如IMAGE ID为centos的,则进入到docker内的centos
docker run -it --name centosdemo centos# 指定name启动centos,这样
#查看当前运行容器
docker ps [OPTIONS]
OPTIONS:
-a : 列出当前所有正在运行的容器加历史上运行过的容器
-l : 显示最近创建的容器
-n : 显示最近n个创建的容器 docker ps -n 3 #显示最近3个创建的容器
-q : 静默模式,只显示容器编号
--no-trunc: 不截断输出,显示完整。
#退出容器
exit #退出容器,并停止容器
ctrl + p + q #退出容器,但容器不停止
# 启动容器
docker start 容器ID
# 可以通过docker ps -a 查看STATUS为Exited(0)的容器ID,复制容器ID,然后通过docker start 容器ID 来启动容器。
# 重启容器
docker restart 容器ID
# 停止容器(温柔关闭)
docker stop 容器ID或者容器名
# 强制停止
docker kill 容器ID或者容器名
# 删除已经停止的容器
docker rm 容器ID
# docker fm -f 容器ID 关闭容器再删除容器
# 一次性删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
容器命令2:
# 启动守护式容器
docker run -d centos
# 问题:docker ps -a 进行查看,会发现容器已经退出,docker容器后台运行,就必须有一个前台进程,容器运行命令如果不是那些一直挂起命令(比如:top,tail),就会自动退出。
#这个式docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的服务即可,但是这样做nginx为后台进程模式运行,就会导致docker前台没有运行应用,这样容器后台启动后,会立即自杀因为它感觉没事可做。所以最佳解决方案式,将你要运行的程序以前台进程的形式运行。
# 一直保持交互启动容器
docker run -d centos /bin/sh -c "while true;do echo hell xjk; sleep 2;done"
# 查看容器日志
docker logs -f -t --tail 容器ID
docker logs -t 容器ID # 查看docker日志
docker logs -t -f # 查看docker日志不停追加
docker logs -t -f --tail -3 容器ID # 查看docker日志 倒数3行
# 查看容器内运行进程
docker top 容器ID
# 查看容器内部细节
docker inspect 容器ID # 以json形式显示当前容器内全部结构
# 进入正在运行容器并以命令行交互
docker attach 容器ID # 例如:docker attach d93111c22a4c 真正进去,并可进行做一些操作
docker exec -it 容器ID # 例如:docker exec -t d93111c22a4c ls -l /tmp 没有真正进去 而是通过exec进入容器执行 ls -l /tmp 然后拿到结果。
docker exec -it d93111c22a4c /bin/bash #也可以向docker attach一样直接进入容器
# 从容器内拷贝文件到主机上
docker cp 容器ID
docker cp d93111c22a4c:/tmp/demo /root #将容器id为d93111c22a4c下的/tmp/demo 拷贝到主机的/root下
# 提交容器副本使它成为一个新的镜像
docker commit
docker commit -m=‘提交的描述信息‘ -a=‘作者‘ 当前运行容器ID 要创建的目标镜像名:[标签名]
原文:https://www.cnblogs.com/xujunkai/p/13031328.html