find . -type f -size +1G -name "*.log" -delete
这个命令使用 find
命令来查找当前目录及其子目录下的所有符合条件的文件。解释一下各个选项的含义:
-
.: 表示当前目录,您可以将其替换为实际的目录路径。
-
-type f: 限定查找的对象为文件。
-
-size +1G: 指定查找文件的大小大于 1GB。
-
-name "*.log": 指定查找文件名以 ".log" 结尾的文件,您可以根据实际情况修改文件名的模式。
-
-delete: 删除符合条件的文件。
2、删除两周以前构建的 docker 镜像
docker images --format '{{.ID}}\t{{.CreatedAt}}' | awk '{if ($2 <= "'$(date -d '2 weeks ago' +%Y-%m-%d)'" ) print $1}' | xargs -I {} docker rmi {}
这两个命令结合使用了 docker images、awk 和 xargs 命令。下面是命令的详细解释:
-
第一个命令使用 docker images列出当前所有的镜像,并使用 --format 选项来指定输出格式。'{{.ID}}\t{{.CreatedAt}}'表示输出每个镜像的 ID 和创建时间。
-
通过管道将第一个命令的输出传递给 awk 命令。awk 命令用于筛选出创建时间早于两周前的镜像的 ID。
-
3、创建10个新用户,并指定8个字符长度的随机密码
for i in {1..10};do useradd user$i ; passwd=`tr -dc [:alnum:] < /dev/urandom | head -c8`; echo user$i:$passwd | tee -a /test/passwd.txt | passwd --stdin user$i ;done 答案二: [root@rocky86 ~]# for i in {1..10};do useradd user$i;pwd=`openssl rand -base64 9|head -c8`;echo user$i:$pwd >> list.txt;echo $pwd| passwd --stdin user$i;done
4、查找./本目录下十天前修改过的目录(层级为1,即当前目录下),并删除
find ./ -mtime +10 -type d -maxdepth 1 |xargs rm -rf
5、查看多线程信息
cat /proc/[进程号]/status pstree ps aux ssl--> l代表多线程
6、导出所有镜像到一个打包文件
#方法1: 使用image ID导出镜像,在导入后的镜像没有REPOSITORY和TAG,显示为<none> [root@ubuntu1804 ~]#docker save `docker images -qa` -o all.tar #方法2:将所有镜像导入到一个文件中,此方法导入后可以看REPOSITORY和TAG [root@ubuntu1804 ~]#docker save `docker images | awk 'NR!=1{print $1":"$2}'` -o all.tar #方法3:将所有镜像导入到一个文件中,此方法导入后可以看REPOSITORY和TAG [root@centos8 ~]#docker image save `docker image ls --format "{{.Repository}}:{{.Tag}}"` -o all.tar
7、导出所有镜像至不同的文件中
[root@centos8 ~]#docker images | awk 'NR!=1{print $1,$2}' | while read repo tag ;do docker save $repo:$tag -o /opt/$repo-$tag.tar ;done [root@centos8 ~]#ls /opt/*.tar /opt/alpine-3.13.5.tar /opt/busybox-latest.tar /opt/centos-centos8.3.2011.tar /opt/centos-latest.tar /opt/ubuntu-latest.tar
8、Docker指定端口映射
docker run -p 可以将容器的预定义的指定端口映射到宿主机的相应端口
注意: 多个容器映射到宿主机的端口不能冲突,但容器内使用的端口可以相同
方式1: 容器80端口映射宿主机本地随机端口 docker run -p 80 --name nginx-test-port1 nginx 方式2: 容器80端口映射到宿主机本地端口81 docker run -p 81:80 --name nginx-test-port2 nginx 方式3: 宿主机本地IP:宿主机本地端口:容器端口 docker run -p 10.0.0.100:82:80 --name nginx-test-port3 docker.io/nginx 方式4: 宿主机本地IP:宿主机本地随机端口:容器端口,默认从32768开始 docker run -p 10.0.0.100::80 --name nginx-test-port4 docker.io/nginx 方式5: 宿主机本机ip:宿主机本地端口:容器端口/协议,默认为tcp协议 docker run -p 10.0.0.100:83:80/udp --name nginx-test-port5 docker.io/nginx 方式6: 一次性映射多个端口+协议 docker run -p 8080:80/tcp -p 8443:443/tcp -p 53:53/udp --name nginx-test-port6 nginx
9、Docker修改已经创建的容器的端口映射关系
[root@ubuntu1804 ~]#docker run -d -p 80:80 --name nginx01 nginx dc5d7c1029e582a3e05890fd18565367482232c151bba09ca27e195d39dbcc24 [root@ubuntu1804 ~]#docker port nginx01 80/tcp -> 0.0.0.0:80 [root@ubuntu1804 ~]#lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME docker-pr 2364 root 4u IPv6 35929 0t0 TCP *:http (LISTEN) [root@ubuntu1804 ~]#ls /var/lib/docker/containers/dc5d7c1029e582a3e05890fd18565367482232c151bba09ca27e195d39dbcc24/ checkpoints hostconfig.json mounts config.v2.json hostname resolv.conf dc5d7c1029e582a3e05890fd18565367482232c151bba09ca27e195d39dbcc24-json.log hosts resolv.conf.hash [root@ubuntu1804 ~]#systemctl stop docker [root@ubuntu1804 ~]#vim /var/lib/docker/containers/dc5d7c1029e582a3e05890fd18565367482232c151bba09ca27e195d39dbcc24/hostconfig.json "PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"80"}]} #PortBindings后80/tcp对应的是容器内部的80端口,HostPort对应的是映射到宿主机的端口80 修改此处为8000 "PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8000"}]} [root@ubuntu1804 ~]#systemctl start docker [root@ubuntu1804 ~]#docker start nginx01 [root@ubuntu1804 ~]#docker port nginx01
10、删除所有容器
[root@ubuntu1804 ~]#docker rm -f `docker ps -a -q` [root@ubuntu1804 ~]#docker ps -a -q | xargs docker rm -f
11、删除指定状态的容器
[root@ubuntu2204 ~]#docker rm -f `docker ps -q -f status=running` [root@ubuntu1804 ~]#docker rm `docker ps -qf status=exited` #等价 [root@ubuntu1804 ~]#docker rm `docker ps -qf status=exited` [root@ubuntu1804 ~]#docker container prune -f
12、查看容器的详细信息
docker inspect 可以查看docker各种对象的详细信息,包括:镜像,容器,网络等 #选择性查看 [root@ubuntu1804 ~]#docker inspect -f "{{.Metadata}}" test:v1.0 {2020-07-24 21:56:42.247448035 +0800 CST} [root@ubuntu2204 ~]#docker inspect --format "{{.State.Status}}" elasticsearch running [root@ubuntu1804 ~]#docker inspect -f "{{.Created}}" c1 2020-07-24T13:37:11.006574248Z [root@ubuntu1804 ~]#docker inspect --format "{{.Created}}" c1 2020-07-24T13:37:11.006574248Z [root@ubuntu1804 ~]#docker inspect --format="{{.Created}}" c1 2020-07-24T13:37:11.006574248Z
13、容器内和宿主机之间复制文件
复制容器的文件至宿主机 [root@ubuntu2004 ~]#docker run -it --name b1 busybox sh [root@ubuntu2004 ~]#docker cp b1:/bin/busybox /usr/local/bin/ #将容器内文件复制到宿主机 [root@ubuntu1804 ~]#docker cp -a 1311:/etc/centos-release . [root@ubuntu1804 ~]#cat centos-release CentOS Linux release 8.1.1911 (Core) #将宿主机文件复制到容器内 [root@ubuntu1804 ~]#docker cp /etc/issue 1311:/root/ [root@ubuntu1804 ~]#docker exec 1311 cat /root/issue Ubuntu 18.04.1 LTS \n \l
文章评论