赞
踩
目录
2、进入容器,并执行redis-cli客户端命令,存入num=666
七、例子:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器
九、例子:基于Ubuntu镜像构建一个新的镜像,运行一个java项目
1、创建docker-demo目录和Dockerfile文件,并在其中编写如下
2、将java代码中的数据库和nacos地址都改为yml文件中的服务地址
docker pull nginx
docker images
docker save -o nginx.tar nginx:latest
docker rmi 名字:版本 或 ID
docker load -i nginx.tar
注:
暂停时,操作系统会将容器挂起;(可以恢复)
停止时,操作系统会将容器删除;(无法恢复)
所以不使用unstop;
docker run --name containerName -p 80:80 -d nginx
- docker run :创建并运行一个容器
- --name:给容器起一个名字,比如叫做mn
- -p︰将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
- -d:后台运行容器
- nginx:镜像名称,例如nginx
注意:
此命令会创建一个宿主机80端口和容器80端口的映射,当访问宿主机80端口时,请求会映射到容器的80端口,从而实现容器的访问。
ifconfig
- docker logs -f 容器名 //跟踪日志输出
-
- docker logs 容器名 //日志
docker exec -it mn bash
cd /usr/share/nginx/html
- sed -i 's#Welcome to nginx#修改了这里#g' index.html
- sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
docker stop mynginx
- docker restart mynginx
-
- docker start mynginx
- docker rm mynginx //删除
-
- docker rm -f mynginx //强制删除
- docker ps //展示运行中容器
-
- docker ps -a //展示所有容器
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
docker exec -it redis bash
redis-cli
set num 666
get num
docker exec -it redis redis-cli
将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
docker volume create html
docker volume ls
docker inspect html
docker volume prune
docker run --name mynginx -p 80:80 -v html:/usr/share/nginx/html -d nginx
docker inspect html
注意:
若挂载时,数据卷不存在,docker会自动帮你生成;
- docker pull mysql //下载
-
- docker load -i mysql.tar //导入
- mkdir -p mysql/data
-
- mkdir -p mysql/conf
vi ms.cnf
- [mysqld]
- skip-name-resolve
- character_set_server=utf8
- datadir=/var/lib/mysql
- server-id=1000
- docker run \
- --name mysql \
- -e MYSQL_ROOT_PASSWORD=123 \
- -p 3306:3306 \
- -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
- -v /tmp/mysql/data:/var/lib/mysql \
- -d \
- mysql:5.7.25
第一个-v,前面是宿主机配置文件位置,后面是容器配置文件位置;
第二个-v,前面是宿主机数据文件位置,后面是容器数据文件位置;
镜像是分层结构,每一层称为一个Layer:
- # 指定基础镜像
- FROM ubuntu:16.04
- # 配置环境变量,JDK的安装目录
- ENV JAVA_DIR=/usr/local
-
- # 拷贝jdk和java项目的包
- COPY ./jdk8.tar.gz $JAVA_DIR/
- COPY ./docker-demo.jar /tmp/app.jar
-
- # 安装JDK
- RUN cd $JAVA_DIR \
- && tar -xf ./jdk8.tar.gz \
- && mv ./jdk1.8.0_144 ./java8
-
- # 配置环境变量
- ENV JAVA_HOME=$JAVA_DIR/java8
- ENV PATH=$PATH:$JAVA_HOME/bin
-
- # 暴露端口
- EXPOSE 8090
- # 入口,java项目的启动命令
- ENTRYPOINT java -jar /tmp/app.jar
- docker build -t javaweb:1.0 .
- // 镜像名 版本 所在目录
docker run --name web -p 8090:8090 -d javaweb:1.0
- # 指定基础镜像
- FROM openjdk:8-alpine
-
- # 配置环境变量,JDK的安装目录
- COPY ./docker-demo.jar /tmp/app.jar
-
- # 暴露端口
- EXPOSE 8090
-
- # 入口,java项目的启动命令
- ENTRYPOINT java -jar /tmp/app.jar
docker build -t javaweb:2.0 .
这个可以少几个步骤
- version: "3.2"
-
- services:
- nacos:
- image: nacos/nacos-server
- environment:
- MODE: standalone
- ports:
- - "8848:8848"
- mysql:
- image: mysql:5.7.25
- environment:
- MYSQL_ROOT_PASSWORD: 123
- volumes:
- - "$PWD/mysql/data:/var/lib/mysql"
- - "$PWD/mysql/conf:/etc/mysql/conf.d/"
- userservice:
- build: ./user-service
- orderservice:
- build: ./order-service
- gateway:
- build: ./gateway
- ports:
- - "10010:10010"
- <build>
- <finalName>app</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
docker-compose up -d
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。