三、Docker 常用命令
-
docker --version
-
docker info
-
docker --help
防火墙相关帮助
启动: systemctl start firewalld.service 关闭: systemctl stop firewalld.service 查看状态: firewall-cmd --state 开机禁用 : systemctl disable firewalld.service 开机启用 : systemctl enable firewalld 添加受信任的端口:firewall-cmd --zone=public --add-port=80/tcp --permanent 删除端口:firewall-cmd --zone=public --remove-port=6379/tcp --permanent 查看所有打开的端口: firewall-cmd --zone=public --list-ports 重新载入:firewall-cmd --reload
常用的一些工具
安装wget
yum install wget -y
Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。
以下的例子是从网络下载一个文件并保存在当前目录
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
安装vim
vim 是一个全屏幕纯文本编辑器,是 vi 编辑器的增强版。
yum install vim -y
安装net-tools
yum install net-tools -y
net-tools 安装完毕之后可以使用的命令有:
-
netstat : 查看应用程序的端口状况
-
ifconfig :查看网卡相关信息
-
hostname: 查看主机相关信息
-
route : 打印linux 路由相关信息
建议将IP设置为静态
-
在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式:
-
记下自己的子网掩码与网关IP,后面要用到
-
-
以root权限登陆centos7并编辑ifcfg-ens33这个文件,效果如下(有些版本值是有双引号的):
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
-
重启网卡服务
service network restart
2. 镜像命令
2.1 列出本地
语法:docker images [options]
options说明:
-
-a 列出本地所有的镜像(包含中间映像层)
-
-q 只显示镜像ID
-
--digests 显示镜像摘要信息
-
-- no-trunc 显示完整的镜像信息
如:docker images
2.2 镜像搜索
语法: docker search 某个镜像名字或者ID [options]
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
如:
测试:
$ docker run -it --name=c_redis -p 6379:6379 redis:3.2 /bin/bash
$ 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种:
created(已创建)
restarting(重启中)
running|UP(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
3.3 进入与退出容器
docker exec -it 容器名或者容器id /bin/bash
docker exec -it c_redis /bin/bash
docker attach -it 容器名或者容器
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命令直接退出
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 强制删除
删除所有容器
docker rm -f $(docker ps -qa)
3.9 重要
3.9.1 查看日志:
docker logs -f -t --tail 容器ID
-
-t 是加入时间戳
-
-f 跟随最新的日志打印
-
--tail 数字 显示最后多少条
$ docker logs [OPTIONS] CONTAINER Options: --details 显示更多的信息 -f, --follow 跟踪实时日志 --since string 显示最后某个timestamp之内的日志,或相对时间,如42m(即42分钟以内) --tail string 从日志末尾显示多少行日志, 默认是all -t, --timestamps 显示时间戳 --until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看某时间段日志:
$ 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 需要拷贝的文件或目录 容器名称:容器目录
docker cp 1.txt c2:/root
docker cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp c2:/root/2.txt /root
3.10 批量操作容器
-
批量启动所有容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
-
批量设置所有容器开机启动
docker update --restart=always $(docker ps -a | awk '{ print $1}' | tail -n +2)
配套视频链接:全网首发java/.net双案例Docker精品课程,Docker 进阶教程(双语言双案例助力教学)-已完结_哔哩哔哩_bilibili
热门相关:全天下都知道太子爱她 神的礼物 性瘾:偷窥狂 俄罗斯妈妈 我真的很想做的女演员