文章目录
一、docker安装
- CentOS 7服务器
1、更新系统软件包安装依赖
yum update
yum install yum-utils device-mapper-persistent-data lvm2
2、将Docker稳定存储库添加到至系统
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安装最新版本的Docker CE(社区版)
yum install docker-ce
4、启动Docker守护程序并设置自启动
systemctl start docker
systemctl enable docker
5、验证Docker服务
systemctl status docker
6、验证版本
docker -v
二、万能Dockerfile
1、java8
FROM williamyeh/java8
ENV LANG C.UTF-8
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
RUN mkdir -p /data/gps/app
RUN mkdir -p /data/logs
ADD xxxxxxxx.jar /data/gps/app/xxxxxxxx.jar
ENV JAVA_OPTS=""
ENV RUN_PARAM=""
WORKDIR /data/gps/app
ENTRYPOINT java ${JAVA_OPTS} -jar /data/gps/app/xxxxxxxx.jar ${RUN_PARAM}
2、java11
FROM lpicanco/java11-alpine:latest
ENV LANG C.UTF-8
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
RUN mkdir -p /data/gps/app
RUN mkdir -p /data/logs
ADD xxxxxxxx.jar /data/gps/app/xxxxxxxx.jar
ENV JAVA_OPTS=""
ENV RUN_PARAM=""
WORKDIR /data/gps/app
ENTRYPOINT java ${JAVA_OPTS} -jar /data/gps/app/xxxxxxxx.jar ${RUN_PARAM}
或通过以下命令,选择自己喜欢的镜像:
docker search java8
docker search java11
- 通过Dockerfile创建镜像
docker build -t="image_name:1.0.0" .
三、启动容器
1、启动命令 docker run
docker run -d --restart=always --name gps -e JAVA_OPTS='-Xms2048m -Xmx2048m' -p 10067:10067 -e RUN_PARAM='--spring.profiles.active=prod' --network roadweanet --network-alias servernet -v /data/logs/:/data/logs gps:1.0.0
2、命令详解:
-
-v /data/logs/:/data/logs 挂载卷
将docker容器内的日志输出至宿主机目录, 宿主机:容器。 -
-p 10097:8080 端口映射
hostPort:containerPort,外部请求访问的端口:容器内服务端口 -
--name gps 指定容器名字
-
--network roadweanet
指定使用的网络,通常用来解决多容器间的服务相关访问 -
--network-alias servernet 为设置网络别名
、 -
-d 指定后台挂起运行
-
-i -t
-
/bin/bash 开启bash客户端
四、docker常用命令
1、镜像篇
- 从 docker Hub 检索镜像
docker search image_name
- 发布镜像
docker pull 镜像名:标签 docker pull centos:latest
- 列出本地已下载镜像
docker image ls
- 删除镜像
docker image rm <镜像1> [<镜像2> ...]
- 显示镜像历史
docker history image_name
2、容器篇
- 列出所有的容器(未运行、运行ing)
docker ps -a
docker container ls -a
- 列出当前所有正在运行的容器
docker ps
docker container ls
- 列出最近一次启动的容器
docker ps -l
- 删除容器(先停容器,再删容器,再删镜像)
docker rm container_id (或容器名:版本)
- 停止\启动容器
docker stop container_id
docker start container_id
- 查看容器日志
docker logs <id/container_name>
docker container logs --tail="10" container_id
- 进入docker终端里
docker exec -it container_id /bin/bash
- 把宿主机中的文件拷贝到容器内部
docker cp /宿主机目录/文件 container_id:/目录
把容器内部的文件拷贝到宿主机中,反之亦然
- 调起后台运行的容器
docker attach container_id
- 解决容器内时间和宿主机时间不一致
Dockerfile中添加:
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
3、网络
- 两个容器建立桥接网络
(1)运行如下命令创建bridge网络
docker network create testnet
(2)运行容器连接到testnet网络
docker run -it --name <容器名> ---network <bridge> --network-alias <网络别名> <镜像名>
docker run -it --name name-1 --network testnet --network-alias centos-1 docker.io/centos:latest
docker run -it --name name-2 --network testnet --network-alias centos-2 docker.io/centos:latest
(3)从一个容器ping另外一个容器
(4)若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号>