目录
一、dockerfile
示例一:
## 基础镜像java
FROM openjdk:8
## 作者是lanjie
MAINTAINER lanjie
## 就是你上传的jar包的名称。给jar包起个别名
ADD jeecg-system-start-3.6.2.jar case.jar
## 就是在容器中以多少端口号运行
EXPOSE 8080
## 容器启动之后执行的命令,java -jar spring_boot.jar 即启动jar
ENTRYPOINT ["java","-jar","case.jar"]
示例二:
## 基础镜像java
FROM openjdk:8
## 作者是lanjie
MAINTAINER xxx
#将文件和jar包放进容器
ADD service.jar service.jar
COPY config2 /
## 就是在容器中以多少端口号运行
EXPOSE 8503
RUN bash -c 'touch /service.jar'
## 容器启动之后执行的命令,java -jar config.jar 即启动jar
ENTRYPOINT ["java", "-jar", "/service.jar", "--spring.profiles.active=test"]
示例三:
FROM nginx
ENV LANG en_US.UTF-8
RUN echo "server { \
listen 80; \
#location ^~ /jeecg-boot { \
#proxy_pass http://jeecg-boot-system:8080/jeecg-boot/; \
#proxy_set_header Host jeecg-boot-system; \
#proxy_set_header X-Real-IP \$remote_addr; \
#proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \
#} \
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
location / { \
root /var/www/html/; \
index index.html index.htm; \
if (!-e \$request_filename) { \
rewrite ^(.*)\$ /index.html?s=\$1 last; \
break; \
} \
} \
access_log /var/log/nginx/access.log ; \
} " > /etc/nginx/conf.d/default.conf \
&& mkdir -p /var/www \
&& mkdir -p /var/www/html
copy ./dist /var/www/html/
EXPOSE 80
示例四:
# 基于镜像基础
FROM python:3.9
# 设置代码文件夹工作目录 /test
WORKDIR /test
# 复制当前代码文件到容器中 /test
ADD . /test
# 安装所需的包
RUN pip install --upgrade pip
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
EXPOSE 5000
# Run app.py when the container launches
CMD ["python", "hello_store.py"]
二、docker-compose
示例一:
version: "3"
services:
nginx:
image: nginx
container_name: nginx_case
restart: always
ports:
- 80:80
depends_on:
- case-scale
volumes:
- ./nginx/nginx.d/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/logs:/var/log/nginx
- ./nginx/html:/usr/share/nginx/html
case-scale:
build: ./dockerfile
image: case_end
container_name: case_end
restart: always
command: /bin/bash -c "java -jar /opt/jar/TEST-alarm-center.jar"
ports:
- "8080:8080"
volumes:
- ./data/test:/data/test
- ./jar/:/opt/jar/
depends_on:
- my_redis
- my_mysql
my_redis:
container_name: case-redis
image: redis:latest
ports:
- "6379:6379"
restart: always
my_mysql:
container_name: case-db
image: mysql:8.0
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1234
lower_case_table_names: "1"
TZ: Asia/Shanghai
volumes:
- "./mysql/data:/var/lib/mysql"
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/logs:/logs"
示例二
version: "3.8"
services:
my_redis:
container_name: redis-build
image: redis:latest
ports:
- "6367:6369"
my_mysql:
container_name: mysql_build
image: mysql:8.0
ports:
- "3307:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1234
lower_case_table_names: 1
TZ: Asia/Shanghai
volumes:
- "./mysql/data:/var/lib/mysql"
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/logs:/logs"
my_mongo:
image: mongo
container_name: mongo-build
restart: always
ports:
- "27017:27017"
volumes:
- ./mongodb/data/db:/data/db
- ./mongodb/data/log:/var/log/mongodb
- ./mongodb/data/config:/etc/mongo
my_minio:
image: minio/minio
container_name: minio-build
ports:
- "9000:9000"
- "9090:9090"
environment:
- "MINIO_ACCESS_KEY=minioadmin"
- "MINIO_SECRET_KEY=minioadmin"
volumes:
- "./minio/data:/data"
- "./minio/config:/root/.minio"
command: server /data --console-address ":9090"
restart: always
config:
build:
context: ./config
dockerfile: dockerfileConfig
container_name: config
restart: always
ports:
- "8840:8840"
service:
build:
context: ./service
dockerfile: dockerfileService
container_name: service
restart: always
ports:
- "8503:8503"
platform:
build:
context: ./platform
dockerfile: dockerfilePlatform
container_name: platform
restart: always
ports:
- "8587:8587"
depends_on:
- service
- config
gateway:
build:
context: ./gateway
dockerfile: dockerfileGateway
container_name: gateway
restart: always
ports:
- "8110:8110"
nginx:
image: nginx
container_name: nginx_build
restart: always
ports:
- "81:81"
depends_on:
- gateway
volumes:
- ./nginx/nginx.d/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/logs:/var/log/nginx
- ./nginx/html:/usr/share/nginx/html
depends_on:
- service
- config
- platform
- gateway
三、docker常用容器部署
mysql
docker run -id \
-p 3307:3306 \
--name=mysql-3307 \
-v ./conf:/etc/mysql/conf.d \
-v ./logs:/logs \
-v ./data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:8.0 --lower_case_table_names=1
redis:
docker run -id \
--name redis_6380 \
-p 6380:6379 \
-v ./conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v ./data/:/data \
-v ./log/redis.log:/var/log/redis.log \
redis
nginx:
docker run -id --name=nginx \
-p 3100:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name 120.26.171.81;
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
# nginx 报404需要加下面这行
try_files $uri $uri/ /index.html last;
#nginx 报405加下面这行
error_page 405 =200 http://$host$request_uri;
}
location /platform {
proxy_pass http://120.26.171.81:8587;
}
location /inteservice {
proxy_pass http://120.26.171.81:8840;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
mongo:
docker run -it --name mongodb -v /root/docker_volume/mongodb/data:/data/db -p 27017:27017 mongo --auth
minio
docker run -p 9000:9000 -p 9090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /home/minio/data:/data \
-v /home/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":9000"
四、docker常用命令
docker相关:
systemctl enable docker
systemctl start docker
systemctl restart docker
systemctl stop docker
查看docker状态:
systemctl status docker
镜像相关:
registry代表镜像仓库
查看镜像
docker images
搜索镜像:
docker search registry
拉取
docker pull registry
删除:
docker rmi registry/registry-id
查看所有镜像的id
docker images -q
容器相关
1、创建容器:
docker run -id --name container -p 80:80 images:(version)
2、查看容器
docker ps (-a)
3、进入容器:(c2是运行着的)
docker exec -it c2 /bin/bash
4、进入(查看)容器
docker inspect registry_name
5、启动
docker start name
6、停止容器
docker stop name
7、删除容器
docker rm name
8、暂停所有容器
docker pause $(docker ps -q)
9、删除所有容器
docker rm -f $(docker ps -aq)
dockerfile
1、容器转成镜像(传统)
docker commit 容器id 镜像名称 :版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load -i 压缩文件名称
2、运行
docker build -f ./centos_dockerfile -t itheima_centos:1.0 -t .
别漏点
docker-compose
docker-compose -f docker-compose-name up -d
docker-compose -f docker-compose-name down
五、将镜像上传私有仓库及拉取
登录:
docker login -u 你的Docker仓库用户名
创建私有仓库:
标志镜像(指定私有仓库)
docker tag hello-world:v1.0 shlycsd/hub_docker:v1.0
ps: 其中hello-world:v1.0 是镜像名和版本
shlycsd/hub_docker:v1.0 中shlycsd是用户名 hub_docker是仓库名 v1.0 是镜像tag显示在仓库
推送
docker push shlycsd/hub_docker:v1.0
六、将镜像下到本地
docker pull myregistry.example.com/myimage:latest
其中myregistry.example.com是镜像仓库名称
myimage:latest是镜像名称和版本号