王海鱼 发表于 2024-1-16 21:46:54

三、Docker 常用命令

1.帮助命令


[*]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模式:https://img2023.cnblogs.com/blog/568354/202311/568354-20231128150936123-527341343.png记下自己的子网掩码与网关IP,后面要用到
[*]
[*]记下自己的子网掩码与网关IP,后面要用到
https://img2023.cnblogs.com/blog/568354/202311/568354-20231128150953279-1466100040.png
 
 
 
 

[*]以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说明:

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

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

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

语法:docker pull 镜像名字:. 若未写版本号,则默认为最新版(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说明(常用):有些是一个减号,有些是两个减号
--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说明(常用):
-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命令直接退出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 强制删除
删除所有容器
docker rm -f $(docker ps -qa) 
3.9 重要

3.9.1 查看日志:

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

[*]-t 是加入时间戳
[*]-f 跟随最新的日志打印
[*]--tail 数字 显示最后多少条
$ docker logs 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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 三、Docker 常用命令