首页 > 其他分享 >t04_入门使用

t04_入门使用

时间:2024-03-11 20:01:30浏览次数:15  
标签:iZp5qw8rqo26yzZ 容器 入门 tomcat local t04 使用 docker root

commit

#配置属于自己的镜像
[root@iZp5qw8rqo26yzZ ~]# docker run -it -p 39100:8080 tomcat
#交互式运行tomcat,配置外网端口为39100
#进入tomcat的docker容器
[root@iZp5qw8rqo26yzZ ~]# docker exec -it 527350722fee /bin/bash 
#进入到容器后复制,(开始情况下webapps中是没有任何文件的)
root@527350722fee:/usr/local/tomcat# cp -r webapps.dist/* webapps
#退出到本机服务器控制台下
#使用commit创建镜像
[root@iZp5qw8rqo26yzZ ~]# docker commit -a="xccvt" -m="add webapps app" 527350722fee xccvttomcat:1.0
sha256:6d5783d2279e4f9e1609cafdcd43585dfe069c024e6041791e419f0010f21b97
[root@iZp5qw8rqo26yzZ ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
xccvttomcat           1.0       6d5783d2279e   24 seconds ago   684MB可以发现我们创建的镜像出现了
hello-world           latest    9c7a54a9a43c   2 months ago     13.3kB
nginx                 latest    605c77e624dd   18 months ago    141MB
tomcat                latest    fb5657adc892   19 months ago    680MB
redis                 latest    7614ae9453d1   19 months ago    113MB
mysql                 5.7       c20987f18b13   19 months ago    448MB
mysql                 latest    3218b38490ce   19 months ago    516MB
centos                latest    5d0da3dc9764   22 months ago    231MB
portainer/portainer   latest    580c0e4e98b0   2 years ago      79.1MB
elasticsearch         7.6.2     f29a1ee41030   3 years ago      791MB

容器数据卷

容器之间可以有一个数据共享的技术,将Docker容器中产生的数据,同步到本地!

相当于数据双向绑定,在容器中的共享文件夹,在主机中可以直接看到

1使用命令来挂载 -v
[root@iZp5qw8rqo26yzZ ~]# docker run -it -v /home/ceshi:/home centos /bin/bash
运行一个centos主机,并且将容器的/home目录挂载到本主机的home/ceshi目录上,两边同步显示
两边有一边添加则同时添加,一边修改或删除则同时修改或者删除
安装MySQL
思考:MySQL的数据持久化问题
官网MySQL容器
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
安装MySQL挂载MySQL到我们的Linux服务器中
[root@iZp5qw8rqo26yzZ ~]# docker run -d -p 39101:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql:5.7
-d:表示后台运行 
-p:端口映射
-v:卷挂载
-e:环境配置
--name:容器名字
本地使用navicat连结测试
在本地创建数据库,查看服务器是否有文件
删除容器后查看数据是否还在,
[root@iZp5qw8rqo26yzZ test]# docker rm -f 5400cdf83a45
5400cdf83a45
[root@iZp5qw8rqo26yzZ test]# ls
a.frm  a.ibd  db.opt
[root@iZp5qw8rqo26yzZ test]# cd ..
[root@iZp5qw8rqo26yzZ data]# ls
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  mysql               private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       performance_schema  public_key.pem   server-key.pem   test
[root@iZp5qw8rqo26yzZ data]# docker ps
CONTAINER ID   IMAGE                 COMMAND             CREATED       STATUS       PORTS                     NAMES
527350722fee   tomcat                "catalina.sh run"   5 hours ago   Up 5 hours   0.0.0.0:39100->8080/tcp   loving_elgamal
c1956c2f8ed3   portainer/portainer   "/portainer"        6 hours ago   Up 6 hours   0.0.0.0:8088->9000/tcp    funny_goldberg
[root@iZp5qw8rqo26yzZ data]# 

具名挂载和匿名挂载

#匿名挂载
不指定主机名,只指定容器内的,没有指定容器外的
[root@iZp5qw8rqo26yzZ ceshi]# docker run -d --name nginx01 -v /etc/nginx nginx
查看所有volume卷的情况
[root@iZp5qw8rqo26yzZ ceshi]# docker volume ls

[root@iZp5qw8rqo26yzZ etc]# docker run -d -P --name nginx02 -v junming-nginx:/etc/nginx nginx
#具名挂载
[root@iZp5qw8rqo26yzZ etc]# docker run -d -P --name nginx02 -v junming-nginx:/etc/nginx nginx
51b4c090201faf181f1aa5ac9313e2a1ddf81a4eabcf83a8271bed3381c7a544
[root@iZp5qw8rqo26yzZ etc]# docker volume

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.
[root@iZp5qw8rqo26yzZ etc]# docker volume ls
DRIVER    VOLUME NAME
local     9434ab72a78d2aa1e6c24cb516c52932fe4b28411a72ce2a8bbb19d6ad7c42c4
local     e656a4bad784903648fee55e6f37b5c3d3a3660727d11c96e9280f64d6a2e939
local     f8381450d5c5401e191536d82f6196628f648c78c8e366ee436bc80f02f2e55c
local     junming-nginx
[root@iZp5qw8rqo26yzZ etc]# 

#通过-v 卷名:容器内路径
#查看一下这个卷
[root@iZp5qw8rqo26yzZ etc]# docker volume inspect junming-nginx
[
    {
        "CreatedAt": "2023-07-19T17:45:51+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/junming-nginx/_data",
        "Name": "junming-nginx",
        "Options": null,
        "Scope": "local"
    }
]
所有docker 容器内的卷,没有指定的情况下都是在:/var/lib/docker/volumes/*/_data
通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的是:具名挂载
-v 容器内路径		#匿名挂载
-v 卷名:容器内路径		#具名挂载
-v /宿主机路径::容器内路径	#指定路径挂载!


拓展
通过-v容器内路径,ro  rw改变读写权限
ro readonly		#只读
rw readwrite	#可读可写
[root@iZp5qw8rqo26yzZ _data]# docker run -d -P --name nginx02 -v junming-nginx:/etc/nginx:ro nginx
[root@iZp5qw8rqo26yzZ _data]# docker run -d -P --name nginx02 -v junming-nginx:/etc/nginx:rw nginx
#ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

初始DockerFile

DockerFile就是用来构建dockers镜像的构建文件!命令脚本!先体验一下!

#创建一个dockerfile文件,名字可以随机,建议 Dockerfile
#文件中的内容 指令(大写) 参数
  1 FROM centos
  2 
  3 VOLUME ["volume01","volueme02"]
  4 
  5 CMD echo ".......end........"
  6 CMD /bin/bash
这里的每个命令就是镜像的一层
[root@iZp5qw8rqo26yzZ docker-test-volume]# docker build -f /home/docker-test-volume/dockerfile1 -t xccvt/centos .

数据卷容器

多个mysql同步数据

容器之间同步数据
使用三个容器测试
创建容器docker01
[root@iZp5qw8rqo26yzZ ~]# docker run -it --name docker01 xccvt/centos:1.0
创建容器docker02	挂载docker01
[root@iZp5qw8rqo26yzZ ~]# docker run -it --name docker02 --volumes-from docker01 xccvt/centos
创建容器docker02	挂载docker02
[root@iZp5qw8rqo26yzZ /]# docker run -it --name docker03 --volumes-from docker02 xccvt/centos

当容器与另一个容器挂载后就会同步所有挂载过的容器,卷重

DockerFile

DockerFile用来构建docker镜像的文件!命令参数脚本!

构建步骤:

1.编写一个dockerfile文件

2.docker bulid构建成为一个镜像

3.docker run 运行镜像

4.docker push 运行镜像(DockerHub、阿里云镜像仓库!)

DockerFile构建过程

基础知识了解:

1.每个保留关键字(指令)都必须是大写字母

2.执行从上到下顺序执行

3.#表示注释

4.每一个指令都会创建提交一个新的镜像层,并且提交!

image-20230720142626508

步骤:

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品!

Docker容器:容器就是镜像运行起来提供服务器

DockerFile的指令

FROM			#基础镜像,一切从这里开始的
MAINTAINER		#指定维护者的信息,也就是告诉别人这个镜像是谁写的
RUN				#镜像构建的时候需要运行的命令
ADD				#COPY文件,会自动解压
WORKDIR			#镜像的工作目录(设置当前工作目录)
VOLUME			#这只卷	,挂载主机的目录
EXPOSE			#指定对外的端口
RUN				#进程要一直运行下去
CMD				#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT		#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			#当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令
COPY			#类似与ADD,将我们文件拷贝到镜像中
ENV				#构建的时候设置环境变量!

image-20230720175813356

构建自己的centos

[root@iZp5qw8rqo26yzZ dockerfile]# vim mydockerfile-centos 
[root@iZp5qw8rqo26yzZ dockerfile]# cat mydockerfile-centos 
FROM centos:7                                                                                                                                                                                                    
MAINTAINER XCCVT<[email protected]>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo @MYPATH
CMD echo "-------end-------"
CMD /bin/bash
创建镜像
[root@iZp5qw8rqo26yzZ dockerfile]# docker build -f mydockerfile-centos -t mycentos:0.1 .

DockerFile制作Tomcat镜像那个

1准备好Tomcat和jdk的安装包


[root@iZp5qw8rqo26yzZ tomcat]# ls
apache-tomcat-9.0.78-deployer.tar.gz  jdk-8u341-linux-x64.tar.gz

image-20230721093754533

2.编写dockerfile文件,官方命名DockerFile,build会自动寻找这个文件,就不需要-f指定了

dockerfile文件
[root@iZp5qw8rqo26yzZ tomcat]# cat DockerFile 
FROM centos:7
MAINTAINER xccvt<[email protected]>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u341-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.78.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_341
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.78
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.78
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.78/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.78/bin/logs/catalina.out




生成镜像
[root@iZp5qw8rqo26yzZ tomcat]# docker build -f DockerFile -t diytomcat .
创建容器
[root@iZp5qw8rqo26yzZ tomcat]# docker run -d -p 39001:8080 --name xccvttomcat -v /home/xccvt/build/tomcat/test:/usr/local/apache-tomcat-9.0.78/webapps/test -v /home/xccvt/build/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.78/logs diytomcat

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
          
</web-app>
[root@iZp5qw8rqo26yzZ test]# cat index.jsp 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
	<h1>123442141412</h1>
	<%out.println("----my test web logs----"); %>
</body>
</html>

Docker 网络

理解docker0

ip addr无效可以在容器中执行以下命令
apt update&& apt install -y iproute2 && apt install -y iputils-ping
[root@iZp5qw8rqo26yzZ test]# docker exec -it 685e859af042 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
141: eth0@if142: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

[root@iZp5qw8rqo26yzZ test]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.104 ms

tomcat03与tomcat02联通
[root@iZp5qw8rqo26yzZ test]# docker run -d -P --name tomcat03 --link tomcat02 tomcat

命令 作用
docker commit -a="xccvt" -m="add webapps app" 527350722fee xccvttomcat:1.0 创建镜像
docker run -it -v /home/ceshi:/home centos /bin/bash 运行一个centos主机,并且将容器的/home目录挂载到本主机的home/ceshi目录上,两边同步显示
docker volume ls 查看所有卷的情况
docker inspect 2f7b91b0697f 查看容器2f7b91b0697f的信息
docker build -f dockerfile 文件路径 -t 镜像名:[tag] dockerfile使用 build创建镜像
ip addr 获取当前ip地址
docker network ls 查看所有网络

企业实战

Docker Compose

Docker Swarm

CI/CD

标签:iZp5qw8rqo26yzZ,容器,入门,tomcat,local,t04,使用,docker,root
From: https://www.cnblogs.com/2580p/p/18066934

相关文章

  • t01_入门了解
    Docker是一个开源的容器化平台,可以简化应用程序的开发、部署和运行过程。它允许开发人员将应用程序及其依赖项打包成一个称为“容器”的独立单元。这些容器包含了应用程序的代码、运行时、系统工具、系统库和配置文件,这使得应用程序能够在任何环境中一致地运行。以下是Docker的一......
  • k01_mq入门
    MQ概念MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker(经纪人)安装RabbitMQ我们在Centos7虚拟机中使用Docker来安装。1.1.下载镜像方式一:在线拉取dockerpullrabbitmq:3-management方式二:从本地加载在课前资料已经提供了镜......
  • t04_mybatisplus
    一、快速入门准备数据DROPTABLEIFEXISTSuser;CREATETABLEuser(idBIGINT(20)NOTNULLCOMMENT'主键ID',nameVARCHAR(30)NULLDEFAULTNULLCOMMENT'姓名',ageINT(11)NULLDEFAULTNULLCOMMENT'年龄',emailVARCHAR(50)......
  • C# WebApi定时任务FluentScheduler的使用
    第一步:通过NuGget包下载安装FluentScheduler包;第二步:在全局配置文件Global.asax中注册定时任务,方法如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Http;usingSystem.Web.Routing;usingFluentScheduler;......
  • 利用JavaRestClient依赖使用java操作索引库
    引入依赖<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1</version></depend......
  • 性能测试入门:做一次简单的性能测试
    当前,性能测试已经是一名软件测试工程师必须要了解,甚至熟练使用的一项技能了,在工作时可能每次发版都要跑一遍性能,跑一遍自动化。性能测试入门容易,深入则需要太多的知识量,今天这篇文章给大家带来:怎么入门性能测试。突然让做性能测试怎么办?日常工作中,项目改造或项目架构升级都需要......
  • 你是怎么理解ES6中 Decorator 的?使用场景?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助一、介绍Decorator,即装饰器,从名字上很容易让我们联想到装饰者模式简单来讲,装饰者模式就是一种在不改变原类和使用继承的情况下,动态地扩展对象功能的设计理论。ES6中Decorator功能亦如此,其本质也不是什么高大上的......
  • 在数据库中使用UUID+自增长ID混合方式,同时满足系统安全性和查询效率
    在数据库中使用UUID+自增长ID混合方式,可以达到较好的安全性和查询效率。具体的实现方式如下:在数据库表中创建两个字段,一个是UUID字段作为全局唯一主键,另一个是自增长的整型字段作为局部有序键。例如:sql:CREATETABLE`table_name`(`uuid`CHAR(36)NOTNULL,--UUID......
  • 小白一眼就能懂的JSON简介与基本使用指南
    前言JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,具有易读易写的特点,广泛应用于Web开发和数据传输领域。本文将介绍JSON的基本概念、语法结构以及常见的使用方法,帮助读者快速上手JSON数据格式。JSON简介JSON起源于JavaScript语言,但已成为一种独立于编程语言的数......
  • ESP32CAM使用Quirc识别二维码并连接WIFI
    ESP32CAM使用Quirc识别二维码并连接WIFI网上有教程,但是是要做出来很难,或者说做出来报错识别不了。前提:搭建好ESP-IDF环境CAMERA能成功初始化此处用的二维码识别库是用的quirc,如下这个和Github下载的差不多,加了个CMakeList,我会把这个传到我的Github上,感兴趣去下载Lesterbor/E......