Docker 经常使用命令

2021年09月15日 阅读数:1
这篇文章主要向大家介绍Docker 经常使用命令,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1、Docker镜像操做基础命令

[root@localhost ~]# docker search    镜像名称      //搜索镜像(在docker hub官网上进行查找)
[root@localhost ~]# docker pull 镜像名称           //下载镜像(若是不指定镜像标签默认下载最新版的镜像)
[root@localhost ~]# docker push 仓库名称/仓库帐号/镜像名称         //上传镜像
[root@localhost ~]# docker images                 //查询本地下载的全部镜像
[root@localhost ~]# docker images 镜像名称         //查询指定的镜像
[root@localhost ~]# docker tag 本来的镜像名称及标签       生成之后的镜像名称及标签       //为本地镜像起一个新的名称、标签(源镜像还存在)
[root@localhost ~]# docker rmi  镜像名或镜像ID         //删除本地镜像
[root@localhost ~]# docker rmi  镜像名或镜像ID -f     //强制删除本地镜像
//注意:强制的这种方式适用于有容器正在使用这个镜像
//这种方式容器若是在运行时也是没法删除的,容器中止后删除的话,容器依然能够使用
[root@localhost ~]# docker save >     经过镜像生成的文件    镜像名称  
[root@localhost ~]# docker save -o   经过镜像生成的文件    镜像名称      //经过镜像生成新的镜像文件
[root@localhost ~]# docker load < 镜像文件
[root@localhost ~]# docker load --i 镜像文件        //将本地的镜像文件生成为镜像
//建议:“>”和“<”号成对使用、“i”和“o”成对使用
[root@localhost ~]# docker history 镜像名称
//查看生成镜像执行的历史命令

2、Docker容器操做基础命令

[root@localhost ~]# docker create -it --name 容器名称 使用的镜像 /bin/bash
//使用指定的镜像生成一个容器,并指定一个shell

经常使用选项解释以下:node

  • -i:采用交互式的方式;nginx

  • -t:分配一个伪终端;web

  • -d:后台运行;docker

  • --name:指定容器名称;shell

  • --restart=always:始终保持容器运行(随着docker的启动而启动);
[root@localhost ~]# docker ps            //查询本机正在运行的容器
[root@localhost ~]# docker ps    -a       //查询本机全部的容器,无论容器是否在运行
​[root@localhost ~]# docker ps    -qa    //列出全部的容器ID
[root@localhost ~]# docker inspect    容器名称或容器ID       //查询容器的详细信息
[root@localhost ~]# docker start 容器名称或容器ID          //启动容器
[root@localhost ~]# docker stop 容器名称或容器ID          //中止容器
[root@localhost ~]# docker restart 容器名称或容器ID          //从新启动容器
[root@localhost ~]# docker exec -it 容器名称或容器ID /bin/bash      //进入容器并分配一个可用的shell
[root@localhost ~]# docker attach 容器名称或容器ID               //也是进入容器
//若是是attach进入容器,使用exit退出的话这个容器也会关闭。
//使用ctrl+p  ctrl+q退出容器,并不会关闭这个容器,会保持容器的运行状态。
[root@localhost ~]# docker cp docker宿主机文件       docker容器的目录           //从本地上传文件到容器中
[root@localhost ~]# docker cp    docker容器名称:文件  docker宿主机文件       //将容器中的文件下载到本地
[root@localhost ~]# docker commit 容器名称  镜像名称及标签        
//经过容器生成镜像 
[root@localhost ~]# docker run -itd --name registry --restart=always  -p 5000:5000 -v /registry:/var/lib/registry registry:2
//-p:端口映射(前面是宿主机端口:后面是容器暴露的端口)
//-v:挂载目录(前面是宿主机的目录:后面的是容器的目录)自动建立宿主机的目录
[root@localhost ~]# docker run -itd --name nginx 192.168.1.1:5000/centos:nginx nginx -g "daemon off;"
//建立容器,不进入容器即开启容器中的服务
[root@localhost ~]# docker logs  容器名称或容器ID            
//查看容器的日志,能够在后面加“-f”选项,动态输出
//若是没有内容输出则表示容器正常没有错误
[root@localhost ~]# docker inspect 容器名称或容器ID      
//查看容器的详细信息
[root@localhost ~]# docker rm 容器名称或容器ID             //删除容器(容器是中止的状态)
[root@localhost ~]# docker rm 容器名称或容器ID  -f         //强制删除容器(容器是运行的状态)

exec和attach二者的区别:centos

使用exec的方式进入容器,使用“exit”的方式退出容器后容器并不会中止;bash

使用attach的方式进入容器,使用“exit”的方式退出容器后容器便会中止;能够使用Ctrl + p 或者 Ctrl + q 组合键的方式退出容器后,并不会关闭这个容器;markdown

exec方式:进入容器是会产生新的进程;ide

attach方式:进入容器不会产生新的进程;ui

如下方式生产环境不建议使用:

[root@localhost ~]# docker ps -a -q | xargs docker start       //启动本机全部容器
[root@localhost ~]# docker ps -a -q | xargs docker stop        //中止本机全部容器
[root@localhost ~]# docker ps -a -q | xargs docker restart     //从新启动本机全部容器

[root@localhost ~]# docker pa -a -q | xargs docker rm -f         //删除全部容器,至关于“rm -rf /*”

3、docker compose经常使用命令

如下命令须在YAML文件所在的目录中执行!

[root@localhost ~]# docker-compose --help
//查看docker compose的帮助信息
[root@localhost ~]# docker-compose build
//用于建立服务或从新建立镜像
好比:docker-compose build web
//建立一个镜像名称为web
[root@localhost ~]# docker-compose kill
//强制中止容器中的服务
[root@localhost ~]# docker-compose logs
//显示服务的日志信息
[root@localhost ~]#docker-compose pause
//暂停服务
[root@localhost ~]# docker-compose unpause 
//恢复服务
[root@localhost ~]# docker-compose port
//查看服务中的服务与docker host的映射关系
好比:docker-compose port nginx_web 80
//查看服务中80端口i映射到docker host主机上的具体端口
[root@localhost ~]# dokcer-compose ps
//显示当前YAML文件产生的容器信息
[root@localhost ~]# docker-compose pull
//用与拉取服务所依赖的镜像
[root@localhost ~]# docker-compose restart
//重启YAML文件定义生成的全部容器
注意:只有运行的服务才可重启,中止的服务是不能够重启的
[root@localhost ~]# docker-compose rm
//删除中止的容器
-f:表示强制删除中止的容器;
-v:表示删除与容器相关的数据卷;
[root@localhost ~]# docker-compose run
//新建一个容器,它的配置和srvice的配置相同。
但二者之间仍是有两点不一样之处:
1)run指定的命令会直接覆盖掉service配置中指定的命令;
2)run命令启动的容器不会建立在service配置中指定的端口,若是须要指定使用--service-ports指定;
[root@localhost ~]#docker-compose start
//启动YAML文件定义的全部容器
[root@localhost ~]#docker-compose stop
//中止YAML文件定义的全部容器
[root@localhost ~]# docker-compose scale
//指定某个服务启动的容器个数
--help:显示帮助信息;
-f:用于指定配置文件
-p:用于指定项目名称
//docker-compose 运行时是须要指定service名称,能够同时指定多个,也能够不指定。不指定时默认就是对配置文件中全部的service执行命令。

4、docker Swarm群集经常使用命令

[root@node02 ~]# docker swarm leave 
//那个节点想推出swarm群集,就在那台节点上执行这条命令
//节点自动退出swarm群集(至关于辞职)
[root@node01 ~]# docker node rm 节点名称
//由manager主动删除节点(至关于开除)
[root@node01 ~]# docker node promote 节点名称
//将节点升级
[root@node01 ~]# docker node demote 节点名称
//将节点降级
[root@node01 ~]# docker node ls          
//查看swarm群集的信息(只能够在manager角色的主机上查看)
 [root@node01 ~]# docker node update --availability drain 节点名称
 //调整节点不参加工做
 [root@node01 ~]# docker swarm join-token worker
//查看加入swarm群集的令牌(能够是worker也能够是manager)
[root@node01 ~]# docker service scale web=4
//扩容、收缩swarn群集servie的数量(取决与群集本来的数量)
//比本来群集数量多,就是扩容,反之、收缩
[root@node01 ~]# docker service ls
//查看建立的service
[root@node01 ~]# docker service ps service的名称
//查看建立的service运行在那些容器上
[root@node01 ~]# docker service create --replicas 6  --name web -p 80:80 nginx
//指定运行的service副本数量
[root@node01 ~]# docker service create --replicas 3 --constraint node.hostname==node03 --name test nginx
//指定node节点,建立名为test的容器
[root@node01 ~]# docker node update --label-add mem=max node02
//以键值对的方式给docker02主机打上标签“mem=max”,等号两边的内容是能够自定义的
[root@node01 ~]# docker service create --name test1 --replicas 3 --constraint 'node.labels.mem==max' nginx
//基于nginx镜像在标签为“mem==max”的主机上运行3个名为test1的服务
[root@node01 ~]# docker node inspect node02
//标签相关的信息,在Spec{  }中有显示

——————————未完待续————————————