Docker 安装启动
- 安装Docker:yum install docker
- 启动Docker:systemctl start docker
- 查看Docker状态:systemctl status docker
镜像命令
- 查看镜像:docker images
- 由Dockerfile构建镜像:
- docker build -t 镜像名:版本号 Dockerfile文件所在目录
- docker build -t senyint/sc-rest-gateway:1.0 .
- 删除镜像:
- docker rmi xxx(镜像ID)
- docker rm -f abf19866f812
- 拉取镜像:
- docker pull xxx(镜像名)
- docker pull nacos/nacos-server
- docker pull oraclelinux:7.9
- 查看镜像的启动命令:docker inspect oraclelinux:7.9(镜像名字)
容器命令
- 查看容器:
- 运行中容器:docker ps
- 所有容器:docker ps -a
- 将镜像运行成容器:
- docker run -d(后台运行) --name 容器名字 -e 容器环境变量 -p 物理机端口:容器端口 -m 容器运行内存 镜像名字:镜像版本号
- docker run -d --name sc-rest-gateway -e NACOS_SERVER=‘49.232.199.205’ -p 8888:8888 -p 5055:5055 -m 400m senyint/sc-rest-gateway:1.0
- 启动命令覆盖dockerfile中cmd(java -jar … xxx.jar):docker run -d --name oauth-server -p 6001:6001 -p 5056:5056 senyint/oauth-server:latest java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5056 oauth-server.jar
- 停止运行容器:
- docker stop xxx(容器ID)
- docker stop abf19866f812
- 重启容器:
- docker restart xxx(容器ID)
- docker restart abf19866f812
- 删除容器:
- docker rm -f xxx(容器ID)
- docker rm -f abf19866f812
- 批量删除容器:
- 删除所有停止的: docker ps -a | grep exited -i | awk ‘{print$1}’ | xargs docker rm -f
- 删除搜索的:docker ps -a | grep senyint -i | awk ‘{print$1}’ | xargs docker rm -f
- 进入容器:
- docker exec -it eb104029d8ff /bin/bash
- docker exec -it sc-rest-gateway sh
- 用 exec 如果从这个容器退出,容器不会停止
- 退出容器不关闭:exit
- 查看容器日志:docker logs -f --tail 100 a1b078834bf9(容器ID)
- 登录容器redis:
- docker exec -it redis bash
- redis-cli -h localhost -p 6379 -a admin --no-auth-warning
Dockerfile
FROM jre8:alpine3.9
WORKDIR /root
COPY sc-rest-gateway.jar .
ENV NACOS_SERVER=49.232.199.205 \
NACOS_PORT=8848 \
NACOS_NAMESPACE=e8420441-fdc8-4730-b5fe-e282348d094c \
spring.profiles.active=prod \
server.port=8888
CMD ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5055","sc-rest-gateway.jar"]
- FROM : 基础镜像
- WORKDIR : 指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
- COPY :从物理机目录中复制文件或者目录到容器里指定路径
- ENV :容器环境变量
- CMD :容器启动命令,为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
Docker Compose
- Compose 是用于定义和运行多容器 Docker 应用程序的工具。服务编排工具,一个命令创建启动所有服务,一个命令关闭删除所有服务。
命令
- 批量运行容器 : docker-compose -f yml的路径 up -d
- 批量停止:docker-compose -f yml文件 down
yml文件配置
- docker-compose-web.yml
- 以下文件内容运行命令之后会启动这两个配置好的服务,运行成容器。
version: '1'
services:
sc-rest-gateway:
image: senyint/sc-rest-gateway:latest
ports:
- "8888:8888"
container_name: sc-rest-gateway
environment:
NACOS_SERVER: 49.232.199.205
NACOS_PORT: 8848
NACOS_NAMESPACE: e8420441-fdc8-4730-b5fe-e282348d094c
spring.profiles.active: dev
server.port: 8888
deploy:
resources:
limits:
memory: 300m
oauth-server:
image: senyint/oauth-server:latest
ports:
- "6001:6001"
- "5057:5057"
container_name: oauth-server
environment:
NACOS_SERVER: 49.232.199.205
NACOS_PORT: 8848
NACOS_NAMESPACE: e8420441-fdc8-4730-b5fe-e282348d094c
spring.profiles.active: dev
server.port: 6001
deploy:
resources:
limits:
memory: 400m