1、docker依赖于Linux内核环境。
2、服务器
vm虚拟机 + centOS7镜像
3、docker一键安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或
curl -sSL https://get.daocloud.io/docker | sh
4、镜像加速
/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
5、docker命令
docker version
systemctl enable docker #服务器开机自启
systemctl status docker #查看状态
systemctl start docker #启动
systemctl stop docker #停止
systemctl restart docker #重启
6、Dockerfile
vi Dockerfile #创建文件(dockerfile与jar、lib文件都再同一目录下)
#拉取镜像
FROM java:8
#作者
MAINTAINER abaaba
#运行时
RUN echo "Asia/Shanghai" > /etc/timezone
#本地资源,ADD可以用远程资源
COPY server-1.0.0-SNAPSHOT.jar test-server.jar
COPY lib lib
#端口
EXPOSE 65534
#启动命令
ENTRYPOINT ["java","-jar”,"test-server.jar"]
7、镜像/容器
docker pull java:8 #拉取镜像
docker build -t test . #制作镜像(英文点.不能忘)
docker images #所有镜像
docker rmi 镜像ID #删除镜像(先删除容器)
docker ps -a #查看所有容器
docker start容器ID #启动容器
docker stop 容器ID #停止容器
docker restart 容器ID #重启容器
docker rm 容器ID #删除容器
8、启动镜像/挂载文件
docker run -d -p 本地端口:容器端口 -v 本地文件/容器文件 镜像名称 #启动镜像
#挂载时区,容器内的时间与宿主机相同;dockerfile中的时区是保证日志时间与宿主机相同
docker run -d -p 65534:65534 -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime test
9、提取日志
docker logs -f 容器ID #实时跟踪
docker logs -t –since=‘’ –until=‘’ 容器ID >路径 #提取某段时间的日志保存在文件
docker logs -t --since 30m 8b80dda0d724 #查看容器30分钟的日志
docker logs -t --since='2021-11-23T09:00:00' --until='2021-11-23T09:30:00' 8b80dda0d724 >/server/test/log.logs
10、时间日期问题
date #查看系统时间
timedatectl set-timezone Asia/Shanghai #设置系统时区
docker exec -it 实例ID /bin/bash #进入容器
date #查看容器时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #未挂载时区文件时(在容器内执行)
结论:
docker logs -t --since的时区是固定UTC时区 ,导致两种查看方式的时间不对
docker logs -f 的时区可以通过上述方法修改掉