Docker篇章4:Docker常用命令
-
如果说蓝色大海相当于宿主机系统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 要创建的目标镜像名:[标签名]