当前位置:   article > 正文

十四、Docker的基本操作_docker日志的操作

docker日志的操作

目录

(一)镜像命令

一、拉取Nginx

二、查看镜像

三、导出文件

四、删除镜像

五、加载镜像

(二)容器命令

一、例子:运行一个nginx容器

1、输入运行命令

2、使用命令查看宿主机ip

3、在外部浏览器访问

4、查看日志

二、例子:修改nginx的index.html文件

1、进入容器

2、进入HTML所在目录

3、修改内容

4、在网页查看

5、停止容器

6、重启容器

7、删除容器

8、展示容器

三、例子:创建并运行一个redis容器,并实现数据持久化

1、使用命令运行redis容器

2、进入容器,并执行redis-cli客户端命令,存入num=666

3、查看是否成功

注:也可以直接进入redis

四、数据卷

1、传统数据和容器耦合

2、使用数据卷解决问题

3、基本操作

4、数据卷的作用

五、例子:创建一个数据卷,并查看数据卷在宿主机的目录位置

1、使用命令创建数据卷

2、查看是否创建成功

3、查看详细信息

4、删除未使用的卷

六、例子:挂载数据卷

1、创建nginx容器并挂载

2、查看数据卷详细信息

3、复制文件位置,在Moba中找到文件

4、右键选择使用VSCode打开,并修改

5、在网页中查看

七、例子:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

1、下载或导入mysql镜像

2、创建目录

3、在conf中创建配置文件并编写

4、创建容器并挂载

5、在navicat创建连接

6、总结

八、自定义镜像

九、例子:基于Ubuntu镜像构建一个新的镜像,运行一个java项目

1、创建docker-demo目录和Dockerfile文件,并在其中编写如下

2、向docker-demo中导入文件

3、输入命令,创建镜像

4、创建容器

5、在页面访问

十、例子:使用alpine创建镜像

1、修改dockerfile

2、构建镜像

十一、DockerCompose

1、作用:

十二、部署微服务集群

1、编写docker-compose.yml文件

2、将java代码中的数据库和nacos地址都改为yml文件中的服务地址

3、在每个微服务的pom文件中都加上打包依赖

4、清理缓存

5、打包

6、在target目录中找到jar包,并拷贝到对应目录

7、进入虚拟机,将cloud-demo文件夹导入tmp

8、进入cloud-demo文件并运行


(一)镜像命令

一、拉取Nginx

docker pull nginx

二、查看镜像

docker images

三、导出文件

docker save -o nginx.tar nginx:latest

四、删除镜像

docker rmi 名字:版本 或 ID

五、加载镜像

docker load -i nginx.tar

(二)容器命令

注:

暂停时,操作系统会将容器挂起;(可以恢复)

停止时,操作系统会将容器删除;(无法恢复)

所以不使用unstop;

一、例子:运行一个nginx容器

1、输入运行命令

docker run --name containerName -p 80:80 -d nginx
  • docker run :创建并运行一个容器
  • --name:给容器起一个名字,比如叫做mn
  • -p︰将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

注意:

此命令会创建一个宿主机80端口和容器80端口的映射,当访问宿主机80端口时,请求会映射到容器的80端口,从而实现容器的访问。

2、使用命令查看宿主机ip

ifconfig

3、在外部浏览器访问

4、查看日志

  1. docker logs -f 容器名 //跟踪日志输出
  2. docker logs 容器名 //日志

二、例子:修改nginx的index.html文件

1、进入容器

docker exec -it mn bash 
  • docker exec :进入容器内部,执行一个命令
  • -it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

2、进入HTML所在目录

cd /usr/share/nginx/html

3、修改内容

  1. sed -i 's#Welcome to nginx#修改了这里#g' index.html
  2. sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

4、在网页查看

5、停止容器

docker stop mynginx

6、重启容器

  1. docker restart mynginx
  2. docker start mynginx

7、删除容器

  1. docker rm mynginx //删除
  2. docker rm -f mynginx //强制删除

8、展示容器

  1. docker ps //展示运行中容器
  2. docker ps -a //展示所有容器

三、例子:创建并运行一个redis容器,并实现数据持久化

1、使用命令运行redis容器

docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes

2、进入容器,并执行redis-cli客户端命令,存入num=666

docker exec -it redis bash
redis-cli
set num 666

3、查看是否成功

get num

注:也可以直接进入redis

docker exec -it redis redis-cli

四、数据卷

1、传统数据和容器耦合

2、使用数据卷解决问题

  1. 在上图中,数据存储在宿主机的文件系统中,不会因为容器的删除而删除;
  2. 而且同一份数据可以被多个容器所使用,实现数据共享;
  3. 在宿主机中更容易修改配置,且容易升级和维护;

3、基本操作

4、数据卷的作用

将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

五、例子:创建一个数据卷,并查看数据卷在宿主机的目录位置

1、使用命令创建数据卷

docker volume create html

2、查看是否创建成功

docker volume ls

3、查看详细信息

docker inspect html

4、删除未使用的卷

docker volume prune

六、例子:挂载数据卷

1、创建nginx容器并挂载

docker run --name mynginx -p 80:80 -v html:/usr/share/nginx/html -d nginx

2、查看数据卷详细信息

docker inspect html

3、复制文件位置,在Moba中找到文件

4、右键选择使用VSCode打开,并修改

5、在网页中查看

注意:

若挂载时,数据卷不存在,docker会自动帮你生成;

七、例子:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

1、下载或导入mysql镜像

  1. docker pull mysql //下载
  2. docker load -i mysql.tar //导入

2、创建目录

  1. mkdir -p mysql/data
  2. mkdir -p mysql/conf

3、在conf中创建配置文件并编写

vi ms.cnf
  1. [mysqld]
  2. skip-name-resolve
  3. character_set_server=utf8
  4. datadir=/var/lib/mysql
  5. server-id=1000

4、创建容器并挂载

  1. docker run \
  2. --name mysql \
  3. -e MYSQL_ROOT_PASSWORD=123 \
  4. -p 3306:3306 \
  5. -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
  6. -v /tmp/mysql/data:/var/lib/mysql \
  7. -d \
  8. mysql:5.7.25

第一个-v,前面是宿主机配置文件位置,后面是容器配置文件位置;

第二个-v,前面是宿主机数据文件位置,后面是容器数据文件位置;

5、在navicat创建连接

6、总结

八、自定义镜像

镜像是分层结构,每一层称为一个Layer:

  1. Baselmage层:包含基本的系统函数库、环境变量、文件系统
  2. Entrypoint: 入口,是镜像中应用启动的命令
  3. 其它:在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置
     

详情查看官网

九、例子:基于Ubuntu镜像构建一个新的镜像,运行一个java项目

1、创建docker-demo目录和Dockerfile文件,并在其中编写如下

  1. # 指定基础镜像
  2. FROM ubuntu:16.04
  3. # 配置环境变量,JDK的安装目录
  4. ENV JAVA_DIR=/usr/local
  5. # 拷贝jdk和java项目的包
  6. COPY ./jdk8.tar.gz $JAVA_DIR/
  7. COPY ./docker-demo.jar /tmp/app.jar
  8. # 安装JDK
  9. RUN cd $JAVA_DIR \
  10. && tar -xf ./jdk8.tar.gz \
  11. && mv ./jdk1.8.0_144 ./java8
  12. # 配置环境变量
  13. ENV JAVA_HOME=$JAVA_DIR/java8
  14. ENV PATH=$PATH:$JAVA_HOME/bin
  15. # 暴露端口
  16. EXPOSE 8090
  17. # 入口,java项目的启动命令
  18. ENTRYPOINT java -jar /tmp/app.jar

2、向docker-demo中导入文件

3、输入命令,创建镜像

  1. docker build -t javaweb:1.0 .
  2. // 镜像名 版本 所在目录

4、创建容器

docker run --name web -p 8090:8090 -d javaweb:1.0

5、在页面访问

十、例子:使用alpine创建镜像

1、修改dockerfile

  1. # 指定基础镜像
  2. FROM openjdk:8-alpine
  3. # 配置环境变量,JDK的安装目录
  4. COPY ./docker-demo.jar /tmp/app.jar
  5. # 暴露端口
  6. EXPOSE 8090
  7. # 入口,java项目的启动命令
  8. ENTRYPOINT java -jar /tmp/app.jar

2、构建镜像

docker build -t javaweb:2.0 .

这个可以少几个步骤

十一、DockerCompose

1、作用:

  1. Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
  2. Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
     

十二、部署微服务集群

1、编写docker-compose.yml文件

  1. version: "3.2"
  2. services:
  3. nacos:
  4. image: nacos/nacos-server
  5. environment:
  6. MODE: standalone
  7. ports:
  8. - "8848:8848"
  9. mysql:
  10. image: mysql:5.7.25
  11. environment:
  12. MYSQL_ROOT_PASSWORD: 123
  13. volumes:
  14. - "$PWD/mysql/data:/var/lib/mysql"
  15. - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  16. userservice:
  17. build: ./user-service
  18. orderservice:
  19. build: ./order-service
  20. gateway:
  21. build: ./gateway
  22. ports:
  23. - "10010:10010"

2、将java代码中的数据库和nacos地址都改为yml文件中的服务地址

3、在每个微服务的pom文件中都加上打包依赖

  1. <build>
  2. <finalName>app</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-maven-plugin</artifactId>
  7. </plugin>
  8. </plugins>
  9. </build>

4、清理缓存

5、打包

6、在target目录中找到jar包,并拷贝到对应目录

7、进入虚拟机,将cloud-demo文件夹导入tmp

8、进入cloud-demo文件并运行

docker-compose up -d

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/664177
推荐阅读
相关标签
  

闽ICP备14008679号