Docker
docker 起源
实现下面6个隔离才是独立的
基于容器的轻量级虚拟化解决方案
容器
Docker部署微服务相关的问题
- 时间不统一的问题
FROM java:8
EXPOSE 8791
VOLUME /tmp
ADD build/libs/*.jar /app.jar
# 时间不一致的问题解决
ENV TZ=Asia/Shanghai
RUN bash -c 'touch /app.jar'
# -D可以在启动的时候传参进来替换
ENTRYPOINT ["java","-jar","-Xms128m","-Xmx300m","/app.jar","-Dspring.profiles.active=local"]
Docker安装
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
yum list docker --show-duplicates
yum install -y yum-util
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Docker命令
docker info #查看docker信息
docker run hello-word #hello-word程序启动
docker search alpine
docker pull [imageName]:[version]
docker images # 查看本地镜像
docker image ls # 查看本地镜像
docker tag [imageId] [registerName]/[respoName]/[imageName]:[version]
docker push image # 推送镜像
docker rmi images # 删除镜像
docker ps -a
docker exec -it [imageId] /bin/bash
docker stop [imageName|imageId]
docker restart [imageName|imageId]
docker start [imageName|imageId]
## 删除所有已经停止的容器
for i in `docker ps -a|grep -i exit|awk '{print $1}'`;do docker rm -f $i;done
#固化镜像
docker commit -p [imageId] [imageName]:[version]
导入导出镜像
docker save [imageId] > [imageName]
docker load < [file]
查看容器日志
docker logs -f [imageId]
高级操作
映射端口
docker run -p
挂载数据卷
docker run -v 容器外目录:容器内目录
传递环境变量
docker run -e
安装软件
yum /apt-get
Docker Dockerfile
FROM openjdk:8-jdk-alpine
EXPOSE 8791
VOLUME /tmp
ADD build/libs/*.jar /app.jar
ENV TZ=Asia/Shanghai
ENTRYPOINT ["java","-jar","-Xms128m","-Xmx300m","/app.jar","-Dspring.profiles.active=local"]
USER/WORKDIR
user指定运行的用户
workdir工作目录,相当于cd
ADD/COPY
将文件加入到镜像中
EXPOSE
暴漏端口
RUN/ENV指令
构建容器的时候运行
FROM centos:7
ENV VER 9.11.4
RUN yum install bind-$VER -y
CMD/ENTRYPOINT
启动容器的时候执行
FROM centos:7
RUN yum install httpd -y
CMD ["httpd","-D","FOREGROUND"]