三、Docker 常用命令

打印 上一主题 下一主题

主题 531|帖子 531|积分 1593

1.帮助命令


  • docker --version
  • docker info
  • docker --help
防火墙相关帮助
  1. 启动: systemctl start firewalld.service
  2. 关闭: systemctl stop firewalld.service
  3. 查看状态: firewall-cmd --state
  4. 开机禁用  : systemctl disable firewalld.service
  5. 开机启用  : systemctl enable firewalld
  6. 添加受信任的端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
  7. 删除端口:firewall-cmd --zone=public --remove-port=6379/tcp --permanent
  8. 查看所有打开的端口: firewall-cmd --zone=public --list-ports
  9. 重新载入:firewall-cmd --reload
复制代码
 
 
常用的一些工具

安装wget
  1. yum install wget -y
复制代码
 
Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。
以下的例子是从网络下载一个文件并保存在当前目录
  1. wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
  2. 在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
复制代码
 
安装vim
vim 是一个全屏幕纯文本编辑器,是 vi 编辑器的增强版。
  1. yum install vim -y
复制代码
 
安装net-tools
  1. yum install net-tools -y
复制代码
 
net-tools 安装完毕之后可以使用的命令有:

  • netstat : 查看应用程序的端口状况
  • ifconfig :查看网卡相关信息
  • hostname: 查看主机相关信息
  • route : 打印linux 路由相关信息
 
建议将IP设置为静态


  • 在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式:记下自己的子网掩码与网关IP,后面要用到

    • 记下自己的子网掩码与网关IP,后面要用到

     
     
 
 

  • 以root权限登陆centos7并编辑ifcfg-ens33这个文件,效果如下(有些版本值是有双引号的):
    1. vim /etc/sysconfig/network-scripts/ifcfg-ens33
    复制代码
     
    TYPE=Ethernet
    BOOTPROTO=static #设置静态Ip 
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    NAME=eno16777736
    UUID=4f40dedc-031b-4b72-ad4d-ef4721947439
    DEVICE=eno16777736
    ONBOOT=yes #这里如果为no的话就改为yes,表示网卡设备自动启动 
    PEERDNS=yes
    PEERROUTES=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_PRIVACY=no
    GATEWAY=192.168.253.2 #这里的网关地址就是第二步获取到的那个网关地址
    IPADDR=192.168.253.137  #配置ip,在第二步已经设置ip处于192.168.253.xxx这个范围,我就随便设为137了,只要不和网关相同均可 
    NETMASK=255.255.255.0 #子网掩码 
    DNS1=8.8.8.8 #dns服务器1,填写你所在的网络可用的dns服务器地址即可 
    DNS2=4.4.4.4 #dns服器2
  • 重启网卡服务
    1. service network restart
    复制代码
     
     
2. 镜像命令

2.1 列出本地

语法:docker images [options]
options说明:

  • -a 列出本地所有的镜像(包含中间映像层)
  • -q 只显示镜像ID
  • --digests 显示镜像摘要信息
  • -- no-trunc 显示完整的镜像信息
如:docker images
2.2 镜像搜索

语法: docker search 某个镜像名字或者ID [options]
网站:https://hub.docker.com
options 说明:

  • --no-trunc:显示完整的镜像描述
  • -- limit int: 表示只列前xx项
例如:docker search centos:7
2.3 下载镜像

语法:docker pull 镜像名字:[TAG]. 若未写版本号,则默认为最新版(lasted)
如:docker pull redis:3.2
2.4 删除镜像

语法:docker rmi 某个镜像名称或者ID

  • 删除单个:docker rmi 镜像ID:Tag
  • 强制删除:docker rmi -f 镜像ID
  • 删除多个:docker rmi -f 镜像名1:Tag 镜像名2:tag
  • 全部删除: docker rmi -f $(docker images -qa)
3. 容器命令

3.1 启动容器

语法 :docker run [options] 镜像名称 [COMMOND] [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字": 为容器指定一个名称(如果不指定,系统会随机给一个名字); -d: 后台运行容器,并返回容器ID,也即启动守护式容器; -i:以交互模式运行容器,通常与 -t 同时使用; -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用; -p: 指定端口映射
-P(大写): 随机分配端口
使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。 交互模式: docker run -it centos /bin/bash
守护模式:docker run -id centos /bin/bash
如:
测试:
  1. $ docker run -it --name=c_redis -p 6379:6379 redis:3.2 /bin/bash
  2. $ docker exec -it c_redis redis-cli -h 127.0.0.1 -p 6379
复制代码
 
3.2 列出容器列表

语法:docker ps [options]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的 -l :显示最近创建的容器。 -n:显示最近n个创建的容器。 -q :静默模式,只显示容器编号。 --no-trunc :不截断输出。
 
STATUS: 容器状态有7种:
  1. created(已创建)
  2. restarting(重启中)
  3. running|UP(运行中)
  4. removing(迁移中)
  5. paused(暂停)
  6. exited(停止)
  7. dead(死亡)
复制代码
 
3.3 进入与退出容器

docker exec -it 容器名或者容器id /bin/bash
  1. docker exec -it c_redis /bin/bash
复制代码
 
docker attach -it 容器名或者容器
  1. docker attach 容器名或者容器
复制代码
 

  • 容器停止退出:exit
  • 容器不停止退出:ctrl+P+Q
 
docker attach
docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。
stdin: 标准的输入输出流
PS:
docker attach 命令输入后会卡顿,需要手动敲入Enter后才能到达container里面。 在我的容器内输入Ctrl+C是不起作用的。 输入exit或者Ctrl+D后容器直接退出会导致container的停止。
docker exec
用docker exec -it命令进入容器如果输入exit命令直接退出container,但是不会使得container停止,平时我用这个命令比较多。
3.4 启动容器

docker start 容器ID或者容器名
如 :docker start c_redis
3.5 重启容器

docker restart 容器ID或者容器名
如 :docker restart c_redis
3.6停止容器

docker stop 容器ID或者容器名
如: docker stop c_redis
3.7 强制停止容器

docker kill 容器ID或者容器名
如:docker kill c_redis
 
kill vs stop

两个命令都是停止docker,不同之处在于:

  • docker stop: 先发SIGTERM信号给docker,允许其在一定时间(默认10s)内进行一些操作(例如资源回收),若这段时间内容器未停止,则发送SIGKILL信号强行杀死容器;
  • docker kill: 直接发送SIGKILL信号杀死容器。
SIGTERM与SIGKILL的区别在于,前者是告知你的租期到了,请你赶紧收拾行李离开;后者是你的租期到了,直接将你扫地出门。
简而言之,相比kill,stop给了容器自行处理结束的时间,更为优雅
3.8 删除容器

docker rm -f 容器ID或者容器名
如:docker rm -f c_redis
PS:无法删除正在运行的容器,加 -f 强制删除
删除所有容器
  1. docker rm -f $(docker ps -qa)
复制代码
 
3.9 重要

3.9.1 查看日志:

docker logs -f -t --tail 容器ID

  • -t 是加入时间戳
  • -f 跟随最新的日志打印
  • --tail 数字 显示最后多少条
    1. $ docker logs [OPTIONS] CONTAINER
    2.   Options:
    3.         --details        显示更多的信息
    4.     -f, --follow         跟踪实时日志
    5.         --since string   显示最后某个timestamp之内的日志,或相对时间,如42m(即42分钟以内)
    6.         --tail string    从日志末尾显示多少行日志, 默认是all
    7.     -t, --timestamps     显示时间戳
    8.         --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
    复制代码
     
    例子:
    查看指定时间后的日志,只显示最后100行:
    1. $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
    复制代码
     
    查看最近30分钟的日志:
    1. $ docker logs --since 30m CONTAINER_ID
    复制代码
     
    查看某时间之后的日志:
    1. $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
    复制代码
     
    查看指定时间后的日志,只显示最后100行:
    1. $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
    复制代码
     
    查看某时间段日志:
    1. $ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
    复制代码
     
     
3.9.2 查看容器内运行的进程

docker top 容器ID
3.9.3 查看容器内部细节

docker inspect 容器ID
3.9.4 进入正在运行的容器并以命令行交互


  • docker exec -it 容器ID /bin/bash
  • 重新进入 : docker attach 容器ID
  • 区别:attach 直接进入容器启动命令的终端,不会启动新的进程,exec是在容器中打开新的终端,并且可以启动新的进程
3.9.5 文件拷贝

docker cp 需要拷贝的文件或目录 容器名称:容器目录
  1. docker cp 1.txt c2:/root
复制代码
 
docker cp 容器名称:容器目录 需要拷贝的文件或目录
  1. docker cp c2:/root/2.txt /root
复制代码
 
3.10 批量操作容器


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表