docker, 固定静态ip,save,load, 服务开机启动: https://abc.htmltoo.com/thread-46536.htm
centos7安装rancher1,搭建统一开发环境: https://abc.htmltoo.com/thread-34914.htm
centos7安装rancher2,搭建统一开发环境: https://abc.htmltoo.com/thread-45073.htm
rancher2使用说明: https://abc.htmltoo.com/thread-46088.htm
RancherD说明指南:https://abc.htmltoo.com/thread-46121.htm
Podman 部署 - 新一代容器工具: https://abc.htmltoo.com/thread-46126.htm
Docker本机镜像仓库搭建,镜像界面管理: https://abc.htmltoo.com/thread-45169.htm
rancher部署分类应用,以及导出配置文件: https://abc.htmltoo.com/thread-44930.htm
rancher安装容器管理: portainer: https://abc.htmltoo.com/thread-312.htm
rancher 1.6版本升级,以及禁用密码操作: https://abc.htmltoo.com/thread-45045.htm
CentOS7,Ubuntu安装Docker-CE: https://abc.htmltoo.com/thread-45069.htm
docker-compose安装: https://abc.htmltoo.com/thread-45046.htm
Ansible-playbook安装docker: https://abc.htmltoo.com/thread-45925.htm
debian,ubuntu安装docker: https://abc.htmltoo.com/thread-46064.htm
docker启用GPU加速计算(显卡,gpu): https://abc.htmltoo.com/thread-46845.htm
# 使用官方安装脚本自动安装 (仅适用于公网环境) curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh # 国内 daocloud 一键安装命令 curl -sSL https://get.daocloud.io/docker | sh
systemctl stop firewalld # 停止firewalld服务
systemctl mask firewalld # 禁用firewalld服务
# 创建docker组
groupadd docker
# 把当前用户加入docker组
usermod -aG docker admin
# 添加用户(可选)
useradd -d /home/admin -m admin
# 为新用户设置密码
passwd admin
# 为新用户添加sudo权限
echo 'admin ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
su admin
# 安装网络yum源
yum -y install epel-release
yum clean all
# 安装依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --enable extras
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 国内docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# centos8 安装依赖: https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/
yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.13-3.1.el8.x86_64.rpm
# 查询可安装的版本
-按版本号(从高到低)对结果进行排序
yum list docker-ce --showduplicates | sort -r
#7
yum makecache fast
#8
yum makecache timer
#安装指定版本
yum install -y docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
# 安装 Docker
yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin
systemctl stop docker
rm -rf /var/lib/docker
systemctl daemon-reload
systemctl start docker
mkdir -p /etc/docker/
# 国外
cat >> /etc/docker/daemon.json<<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"max-concurrent-downloads": 5,
"max-concurrent-uploads": 3,
"insecure-registries": ["hub.htmltoo.com:5000"],
"storage-driver": "overlay2",
"experimental" : true,
"iptables": false,
"log-driver": "json-file",
"log-opts": {
"max-size": "5m",
"max-file": "3"
}
}
EOF
# 国内
cat >> /etc/docker/daemon.json<<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"max-concurrent-downloads": 5,
"max-concurrent-uploads": 3,
"insecure-registries": ["hub.htmltoo.com:5000"],
"storage-driver": "overlay2",
"experimental" : true,
"iptables": false,
"log-driver": "json-file",
"log-opts": {
"max-size": "5m",
"max-file": "3"
}
}
EOF
"exec-opts": ["native.cgroupdriver=systemd"], # K8S,推荐
"registry-mirrors": ["http://hub-mirror.c.163.com"], # 国内服务器启用加速
"registry-mirrors": ["https://66tg5ksn.mirror.aliyuncs.com"], 使用阿里云加速器可以提升获取Docker官方镜像的速度
"max-concurrent-downloads": 5,
"max-concurrent-uploads": 3,
"insecure-registries": ["hub.htmltoo.com:5000"],
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"], # 如果是CentOS7或者RedHat7内核在3.10.0-693以下的
"log-driver": "json-file",
"log-opts": {
"max-size": "5m",
"max-file": "3"
}
# 多个私有镜像仓库
"insecure-registries":["hub.htmltoo.com:5000","hub.htmltoo.com:5200"],
# 通配表示所有http协议仓库
"insecure-registries": ["0.0.0.0/0"]
# 登陆凭证密码
cat /root/.docker/config.json
{
"auths": {
"hub.htmltoo.com:5200": {
"auth": "YWRtaW46V2RxNTQzMjE="
},
"registry.cn-zhangjiakou.aliyuncs.com": {
"auth": "YWRvbmdxdWFubkBhbGl5dW4uY29tOldkcTU0MzIx"
}
}
}
# 阿里云容器管理
https://cr.console.aliyun.com/
例:
cat >> /etc/docker/daemon.json<<EOF
{
"max-concurrent-downloads": 1,
"max-concurrent-uploads": 1,
"insecure-registries": ["hub.htmltoo.com:5000"],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "5m",
"max-file": "3"
}
}
EOF
cat >> /etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["https://66tg5ksn.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "5m",
"max-file": "3"
}
}
EOF
-com
cat >> /etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["https://66tg5ksn.mirror.aliyuncs.com"],
"experimental" : true,
"iptables": false,
"log-driver": "json-file",
"log-opts": {
"max-size": "5m",
"max-file": "3"
}
}
EOF
systemctl daemon-reload
systemctl start docker
systemctl enable docker # 开机自动启动docker
systemctl restart docker # 重启dokce #docker run hello-world #测试运行 hello-world
ps -ef | grep docker # 验证进程
# 验证加速器是否生效
docker info | grep Mirrors -A1docker # 查看到 Docker 客户端的所有命令选项 docker command --help # 更深入的了解指定的 Docker 命令使用方法 如查看docker stats 指令: docker stats --help docker version # 查看版本 数据库: mysql -A -uroot -pwdqdmm; grant all on *.* to 'ihunter'@'%' identified by 'wdqdmm'; flush privileges; 备份: mysqldump -uroot -p* new_ecshop > /data/file/backup/...; mysqldump -uroot -p* --all-databases > /data/file/backup/...; 还原: mysql -A -uroot -p*; use database_name; #database_name 替换成需要还原的数据库 source /data/file/backup/...; #选择备份数据对应路径即可完成
#docker磁盘垃圾清理, docker完全卸载
https://abc.htmltoo.com/thread-46610.htm
#docker与firewalld冲突解决:
https://abc.htmltoo.com/thread-46600.htm
#docker - 根据overlay2文件名查找容器
https://abc.htmltoo.com/thread-46599.htm
#docker的存储文件迁移
https://abc.htmltoo.com/thread-46667.htm
#docker 拉取超时, 配置代理
https://abc.htmltoo.com/thread-46854.htm
#docker: 容器互连时访问宿主机出现"No route to host"
https://abc.htmltoo.com/thread-46855.htm
Docker容器使用
docker pull training/webapp # 载入镜像 docker run -d -P training/webapp python app.py 参数说明: -d:让容器在后台运行。-P:将容器内部使用的网络端口映射到我们使用的主机上
docker ps # 查看我们正在运行的容器
PORTS
0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。通过主机ip:32769访问.
我们也可以指定 -p 标识来绑定指定端口。docker run -d -p 5000:5000 training/webapp python app.py
docker top determined_swanson # 查看WEB应用程序容器的进程
docker stop determined_swanson # 停止WEB应用容器
docker start determined_swanson # 重启WEB应用容器
docker ps # 查看我们正在运行的容器
docker ps -l # 查询最后一次创建的容器
docker restart determined_swanson # 正在运行的容器,我们可以使用重启
docker logs [ID或者名字] # 查看WEB应用程序日志 -f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。
docker ps -as # 查看全部container,包括exited的容器,并列出容器的大小
docker rm determined_swanson # 删除不需要的容器,容器必须是停止状态,否则会报如下错误
docker rmi images # 删除镜像
docker rm -f -v $(docker ps -aq) # 删除所有容器,并删除容器挂载的数据卷
docker volume rm $(docker volume ls) # 删除所有数据卷
/var/lib/docker/containers/{container_id}/{container_id}.log # docker logs 日志存储,占空间大记得清理:
docker inspect determined_swanson # 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
docker inspect 容器ID或容器名 |grep '"IPAddress"' # 查看容器IP的查方法
docker run -d nginx # d => daemon 后台运行
docker run -d -p 8080:80 -v $PWD/html:/usr/share/nginx/html nginx # -v 就是挂载参数 # $PWD shell命令,输出当前目录的绝对地
docker exec -it 0b234366c3d2 /bin/bash # service nginx reload # 进入容器,用:ctrl + p + q来退出容器
docker cp host_path containerID:container_path # 从主机拷贝复制到容器
docker cp containerID:container_path host_path # 从容器拷贝复制到主机
docker container update --restart=always containerName # 设置容器自动启动
# 以特权模式运行容器,解决Failed to get D-Bus connection:
docker run --name centos7 --privileged=true -v /date:/date -d centos:latest /usr/sbin/init
# 提交本地新镜像:
docker commit -m="centos7 update" -a="cndo.org" bfcd8bc28015 docker.io/centos:20180406
# 使用我们的新镜像 docker.io/centos:20180406 来启动一个容器
docker run -t -i docker.io/centos:20180406 /bin/bash
# 定时执行滚动操作:
* 1 * * * docker exec mynginx bash /var/log/nginx/rotatelog.sh
# docker之间导出,导入镜像:
-导出 export - 导入 import
-使用 docker images 查看本机已有的镜像
docker export CONTAINER(容器) > /home/myubuntu-export-1204.tar
docker import /home/myubuntu-export-1204.tar # 使用 import 导入
docker import /home/myubuntu-export-1204.tar duo:app-0.0.2 # 指定镜像的REPOSITORY、TAG
# 保存save - 加载 load
格式:docker save IMAGE(镜像) # 使用 docker images 查看本机已有的镜像
---
docker tag hub.htmltoo.com:5000/tools:ssh app:ssh
docker save -o /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/ssh.tar app:ssh
docker save -o /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/ssh.tar hub.htmltoo.com:5000/tools:ssh
---
docker save 9610cfc68e8d > /home/myubuntu-save-1204.tar
docker load < /opt/ssh.tar
# 镜像save 导出 和load上载
docker save -o 要保存文件名 镜像名
-docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
docker save mysql:5.7.19 -o mysql:5.7.19.tar
docker rmi mysql:5.7.19
docker load -i mysql:5.7.19.tar
# privileged, pid, user
docker run -d --restart=always --privileged=true --pid=host --user 0
docker run -d --restart=always --privileged=true --pid=host --user 0 -p 8080:8080 -p 50000:50000 -v /home/dqx/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime:ro -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/bin/docker -v /home/dqx/jars:/home/dqx/jars jenkins/jenkins:lts
-d --restart=always --privileged=true --pid=host --user 0 or --user root
后台运行, 自动重启, 主机完全访问, PID模式-主机, 用户root
# 查看网络信息
docker network ls
--link指定容器名称进行不同容器间的通信
--link=php:php
#创建一个网络名为net且driver为bridge的网络:(默认创建的就是bridge)
docker network create net
#利用--network启动容器提供服务, --network-alias将取名的net起了一个别名
--name=php --network net --network-alias php
-导入异常,No command specified. 加上/bin/bash
docker run -d --net=host --name tcp --restart=always -v /usr/local/etc/tcp.txt:/etc/nuster/nuster.cfg:ro tcp /bin/bash
touch -d "2000-01-01 00:00" /usr/local/etc/tcp.txt
# docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
查看所有容器ip
# docker stats 实时监控资源数据统计
docker stats # 查看docker状态, 每个容器实时数据流
docker stats --no-stream # 只输出当前的状态
docker stats --all --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" # 格式化输出
docker stats [container]
默认情况下,stats 使用参数-a或者--all,命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:
[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。
# 获取容器的日志
docker logs [OPTIONS] cname
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
---跟踪查看容器mynginx的日志输出。
docker logs -f nginx
---查看容器mynginx从2023年1月1日后的最新10条日志。
docker logs --since="2023-01-01" --tail=10 nginx
---指定结束时间点,使用选项 --until,显示二者之间的日志
docker logs --since 2018-09-25T12:01:48.551341Z --until 2018-09-25T12:01:48.561714Z nginx
---最新nginx的30条日志
docker logs -f --tail="30" nginx
---查找包含 “error” 的log:
docker logs -f --tail="30" nginx | grep error
---error日志都写到指定文件
docker logs -t nginx | grep error >> logs_error.txt
#挂载主机时区
-v /etc/localtime:/etc/localtime
#查看所有容器名称,ip
docker inspect --format='{{.Name}} => {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)---注意,一定要先停止docker服务,否则修改不会生效
#忘记映射端口号
---查看容器ID号
docker ps
---关闭容器
docker stop redis
---进入该容器的挂载位置
cd /var/lib/docker/containers/f43e2f0edd2d5e92714feaf4419172e9d0e2e4db5dcd324b5251bf3eff138783/
---修改配置文件
vi hostconfig.json
原始是这个样子:"PortBindings":{},
修改成"PortBindings":{"6379/tcp":[{"HostIp":"","HostPort":"6379"}]},
前面的6379是容器内部的端口号,后面的是要映射出去的端口号,如果是修改端口号,那就更简单,直接修改数字即可
"NetworkMode":"host","PortBindings":{}
"NetworkMode":"default","PortBindings":{"7777/tcp":[{"HostIp":"","HostPort":"7778"}]}
---重启docker
systemctl restart docker
docker start redis#在运行的容器中执行命令 -交互模式执行容器内 /root/runoob.sh 脚本: docker exec -it php /bin/sh /root/runoob.sh -通过 exec 命令对指定的容器执行 bash: docker exec -it php /bin/bash docker exec -it rname /bin/sh -d:分离模式: 在后台运行 docker exec -d php supervisorctl restart app #--link实现两个容器互连 --link 数据库容器名:数据库容器别名 --link mariadb:mysql -别名命名为mysql,这样在这两个容器里就可以使用“mysql”来作为提供mysql数据库服务的机器名 #指定hostname --hostname db01 #指定ip --ip 172.17.0.10 #指定网络类型 --network #network所有的子命令 docker network ls #列出网络 docker network prune #删除所有未使用的网络 docker network create mynet #创建一个网络 docker network connect net1 ctn1 #将运行中的容器ctn1 连接/断连 到网络net1中 docker network rm mynet #删除一个或多个网络 docker network disconnect net1 ctn1 #将运行中的容器ctn1 连接/断连 到网络net1中 docker network inspect mynet #显示一个或多个网络的详细信息 docker network connect --ip 192.168.10.10 net1 ctn1 # 给容器分配指定ip(192.168.10.10) #使用--link实现两个容器互连,在启动my-ctn2容器时,建立my-ctn1和my-ctn2容器间的连接 docker network connect --link my-ctn1 my-ctn2 #只有使用--subnet创建的网络才能指定静态IP docker network create --driver bridge --subnet 172.19.0.0/24 --gateway 172.19.0.1 mynet #配置容器中的host ---命令行配置 --add-host 使用该参数可以配置多个host.--add-host参数最好在--name后面,避免启动报错 docker run -it --add-host host1:192.168.1.1 --add-host host2:192.168.1.2 ---docker-compose配置 extra_hosts: - host1:192.168.1.1 - host2:192.168.1.2 #sysctl --sysctl="net.ipv4.conf.all.src_valid_mark=1" --sysctl="net.ipv4.ip_forward=1" --sysctl="net.ipv6.conf.all.disable_ipv6=1" --sysctl="net.ipv6.conf.default.disable_ipv6=1"
#自建docker网络冲突配置
-由于docker本身是默认使用B类地址(172.xx.0.0/16),大部分情况下会和公司网络产生冲突。
-为了解决这个问题,需要在/etc/docker/daemon.json中增加 "bip":"172.17.0.1/24" 指定容器使用的网络。
{
"bip": "172.17.0.1/24",
}
#设置 镜像、容器、卷 存放目录和驱动
"graph": "/mnt/docker-data",
"storage-driver": "overlay",#查看容器的挂载目录 docker inspect rid |grep Mounts -A 20 #docker启动命令查看, runlike工具可以用来打印docker容器的启动命 yum -y install python3 yum -y install python3-pip apt-get install -y python3 python3-pip python3-simplejson -升级 pip3 install -U pip -i https://mirrors.aliyun.com/pypi/simple/ --break-system-packages pip3 install -U pip pip3 install -U pip --break-system-packages pip3 -V pip3 install runlike pip3 install runlike --break-system-packages -查看创建命令 runlike -p 容器名
---运行内存 -m 8g ---内存+交换内存 --memory-swap="11g" ---共享内存 --shm-size="10g" ---容器的核心数 --cpus=2 ---使用 0~7 固定的cpu核,共8c --cpuset-cpus="0-7" ---通过cfs公平调度来限制资源的使用 --cpu-period=50000 --cpu-quota=400000 ---容器最多可以使用主机上两个 CPU --cpus=2
Docker镜像使用
1.镜像构建
cd /data/file/dockerfile/app
docker build -t app .
Sending build context to Docker daemon 73.4MB Step 1/3 : FROM java:8 ---> d23bdf5b1b1b Step 2/3 : VOLUME /tmp ---> Using cache ---> 59123410176f Step 3/3 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","> /app.log"] ---> Running in 8d6137e1a3b2 Removing intermediate container 8d6137e1a3b2 ---> 15609fad2374 Successfully built 15609fad2374 Successfully tagged app:latest
docker tag 15609fad2374 34.domsn.com:5000/duo:app-0.0.1
or
docker tag app:latest 34.domsn.com:5000/duo:app-0.0.1
docker push 34.domsn.com:5000/duo:app-0.0.1 # 推送到远程镜像中心
docker ps 3 查看所有镜像
2.Dockerfile基本结构: https://abc.htmltoo.com/thread-45701.htm
docker pull 34.domsn.com:5000/duo:app-0.0.1 # 远程镜像中心拉取
# Version 1.0 # Base images 基础镜像 FROM centos #MAINTAINER 维护者信息 MAINTAINER tianfeiyu #ENV 设置环境变量 ENV PATH /usr/local/nginx/sbin:$PATH #ADD 文件放在当前目录下,拷过去会自动解压 ADD nginx-1.8.0.tar.gz /usr/local/ ADD epel-release-latest-7.noarch.rpm /usr/local/ #RUN 执行以下命令 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all RUN useradd -s /sbin/nologin -M www #WORKDIR 相当于cd WORKDIR /usr/local/nginx-1.8.0 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install RUN echo "daemon off;" >> /etc/nginx.conf #EXPOSE 映射端口 EXPOSE 80 #CMD 运行以下命令 CMD ["nginx"]
FROM:指定基础镜像,必须为第一个命令
RUN:构建镜像时执行的命令
ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget,
COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
CMD:构建容器后调用,也就是在容器启动时才进行调用。
CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。
ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
ENV:设置环境变量
LABEL:用于为镜像添加元数据
EXPOSE:指定于外界交互的端口
WORKDIR:工作目录,类似于cd命令
通过WORKDIR设置工作目录后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在该目录下执行。在使用docker run运行容器时,可以通过-w参数覆盖构建时所设置的工作目录。
USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可通过该命令指定运行用户。且可以在之前创建所需要的用户。
使用USER指定用户后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT都将使用该用户。镜像构建完成后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户。
ARG:用于指定传递给构建运行时的变量
Docker日志使用
# 每个容器的日志默认都会以json-file的格式存储于/var/lib/docker/containers/<容器id>/<容器id>-json.log docker logs <CONTAINER> >> /data/site/duo/error.log docker logs -f <CONTAINER> # 显示实时log, 可以把最新内容刷新显示到屏幕上。 docker logs --tail 20 <CONTAINER> # 显示最后20行的内容。 docker logs <CONTAINER> | grep info # 使用 grep 过滤 log, 查找所有包含 “info” 的log。 docker logs --tail 20 <CONTAINER> | grep info docker logs -t <CONTAINER> | grep error >> error.log # 把 error 日志都写到指定文件。 # Linux查找日志 cat 日志文件名.log | grep -30 ‘关键字’ # 查询关键字前后30行 cat error.log | grep -30 ‘2019-04-08 13:30:04,271’ cat 日志文件名.log | grep ‘关键字1’ | grep ‘关键字2’ # 查询两个关键字同时出现 cat error.log | grep ‘ServiceV5Impl’ | grep ‘客户姓名不能为空’ gzip -dc 文件名 | grep -30 “关键字” # 压缩以后的文件查询 gzip -dc error.log_2019-04-04.gz | grep -30 ‘2019-04-04 17:38:26,036’ cat 文件名 | grep ‘关键字’ | tail -n # 查询中所匹配模式的最后一项 cat error.log_2019-04-09 | grep ‘客户姓名不能为空’ | tail -1 cat error.log_2019-04-09 | grep ‘客户姓名不能为空’ | tail -100 # 查看日志文件大小 du -ha /var/lib/docker/containers/ | grep "json.log" | sort -rh -清理容器日志 cat /dev/null > *-json.log
Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker 的优点
1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
相关链接
Docker 官网:http://www.docker.com
Github Docker 源码:https://github.com/docker/docker