java命令
2020-11-06 09:23:11 11 举报
AI智能生成
微服务命令总结
作者其他创作
大纲/内容
命令
fastdfs
docker搭建fastdfs
yum -y install docker
下载docker
systemctl start docker
启动docler
systemctl enable docker
开机自启
docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=服务器ip -e WEB_PORT=8888 -v ${HOME}/fastdfs:/var/local/fdfs registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs
挂载在容器上
docker exec -it fastdfs /bin/bash
进入容器
echo \"Hello FastDFS!\">index.html
创建文件
fdfs_test /etc/fdfs/client.conf upload index.html
测试文件上传
端口开放8888 22122-24000
springboot文件上传
配置application.yml
fdfs: so-timeout: 2500 # 读取时间 connect-timeout: 600 # 连接超时时间 thumb-image: # 缩略图 width: 100 height: 100 tracker-list: # tracker服务配置地址列表 - 服务器ip:22122
upload: base-url: http://服务器ip:8888/ allow-types: - image/jpeg - image/png - image/bmp - image/gif
pring: servlet: multipart: max-file-size: 2MB
redis
redis的安装
yum install gcc-c++
安装gcc 目地是编译软件
tar -zxvf redis-5.0.7.tar.gz
解压
cp -r /root/software/redis-5.0.7 /usr/local/src/redis
把解压的文件copy到/usr/local/src里面
make hiredis lua jemalloc linenoise
进行编译依赖项
cd /usr/local/src/redis
make
进行编译
mkdir /usr/local/redismake install PREFIX=/usr/local/redis
在上面的Redis目录安装把它安装到/usr/local/redis里面
cd /usr/local/redis/bin
ls
启动文件即安装成功
which redis-server
查看系统里面是否有redis的服务
mkdir /usr/local/redis/conf
创建一个配置文件的目录
cp /usr/local/src/redis/redis.conf /usr/local/redis/conf
复制一个原始的配置文件
./redis-server /usr/local/redis/conf/redis.conf
启动redis服务端
\tvim /usr/local/redis/conf/redis.conf
修改原始配置文件进行后台启动
./redis-cli 默认是-h 127.0.0.1 -p 6379
启动客户端
ping
pong
正常连接
./redis-cli shutdown
停止redis
vim /etc/rc.local
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
设置开机自启
bin目录
redis-benchmark
redis性能测试工具
redis-check-aof
检查aof日志的工具
redis-check-rdb
检查rdb日志的工具
redis-cli
连接用的客户端
redis-server
:redis服务进程
子主题
redis配置
daemonize:
如需要在后台运行,把该项的值改为yes
pdifile:
把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:
指定redis只接收来自该IP的请求,如果不设置0.0.0.0,那么将处理所有请求,在生产环节中最好设置该项
port
监听端口,默认为6379
timeout:
设置客户端连接时的超时时间,单位为秒
loglevel:
等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:
配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:
设置数据库的个数,默认使用的数据库是0
save:
设置redis进行数据库镜像的频率
rdbcompression:
在进行镜像备份时,是否进行压缩
dbfilename:
镜像备份文件的文件名
dir:
数据库镜像备份的文件放置的路径
slaveof:
设置该数据库为其他数据库的从数据库
masterauth:
当主数据库连接需要密码验证时,在这里设定
requirepass:
设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:
限制同时连接的客户端数量
maxmemory:
设置redis能够使用的最大内存
appendonly:
开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:
设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持vm_swap_file:设置虚拟内存的交换文件的路径vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0vm_page_size:设置虚拟内存页的大小vm_pages:设置交换文件的总的page数量vm_max_thrrads:设置vm IO同时使用的线程数量
redis命令
select index
命令切换数据库
dbsize
查看当前数据库的key的数量
flushdb:
清空当前库
Flushall;
通杀全部库
string类型相关命令
set key value 存放key-vulue set name cxx 存放key=name value=cxx get name 获取key=name的值 getrange name 0 -1 字符串分段 0 -1是全部 0 -2 ==n-1 getset name new_cxx 设置值,返回旧值 mset key1 key2 批量设置 mget key1 key2 批量获取 setnx key value 不存在就插入(not exists)setrange key index value 从index开始替换valueincr age 递增incrby age 10 递增decr age 递减decrby age 10 递减incrbyfloat 增减浮点数append 追加strlen 长度object encoding key 得到key 的类型 string里面有三种编码int 用于能够作用64位有符号整数表示的字符串embstr 用于长度小于或等于44字节 Redis3.x中是39字节,这种类型的编码在内存使用时性能更好raw 用于长度大于44字节的
list【集合数组】
lpush key values l=left r =rigth lpush mylist a b c 左插入 rpush mylist x y z 右插入 lrange mylist 0 -1 取出数据集合 0 -1是取出所有 0 1取第第一个和第二个 lpop mylist 弹出集合最后一个元素 弹出之后就没有了哦 rpop mylist 弹出第一个元素 弹出之后就没有了哦 llen mylist 长度 lrem mylist count value 删除 |-COUNT 的值可以是以下几种: |--count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。 |--count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。 |--count = 0 : 移除表中所有与 VALUE 相等的值。 lindex mylist 2 指定索引的值 lset mylist 2 n 索引设值 ltrim mylist 0 4 |--对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。\t\t\t\t下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 \t\t\t\t你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 linsert mylist before a 插入 linsert mylist after a 插入 |--命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 \t\t\t\t当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。 rpoplpush list list2 转移列表的数据 |--命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
hset myhash name cxx |--命令用于为哈希表中的字段赋值 。 |--如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。 |--如果字段已经存在于哈希表中,旧值将被覆盖。 hget myhash name hmset myhash name cxx age 25 note \"i am notes\" hmget myhash name age note hgetall myhash 获取所有的 hexists myhash name 是否存在 hsetnx myhash score 100 设置不存在的 如果存在,不做处理 hincrby myhash id 1 递增 hdel myhash name 删除 hkeys myhash 只取key hvals myhash 只取value hlen myhash 长度
set
sadd myset redis smembers myset 数据集合 srem myset set1 删除 sismember myset set1 判断元素是否在集合中 scard key_name 个数 sdiff key1 key2 …… | sinter | sunion 操作:集合间运算:差集 | 交集 | 并集 srandmember key count 随机获取集合中的元素 spop 从集合中弹出一个元素
zset
zadd zset 1 one zadd zset 2 two zadd zset 3 three zincrby zset 1 one 增长分数 zscore zset two 获取分数 zrange zset 0 -1 withscores 范围值 zrangebyscore zset 10 25 withscores 指定范围的元素 zrangebyscore zset 10 25 withscores limit 1 2 分页 Zrevrangebyscore zset 10 25 withscores 指定范围的值 zcard zset 元素数量 zcount zset 获得指定分数范围内的元素个数
redis相关类型
zset(sortset)数据类型
redis.conf
Units单位
对大小写不敏感
INCLUDES包含
NETWORK网络
bind
span style=\
Tcp-backlog
GRNERAL通用
daemonize no
是否以守护模式启动,默认为no,配置为yes时以守护模式启动,这时redis instance
supervised no
可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。
pidfile /var/run/redis_6379.pid 配置pid文件路径。
当redis以守护模式启动时,如果没有配置pidfile,pidfile默认值是/var/run/redis.pid
loglevel notice
日志级别。可选项有:debug(记录大量日志信息,适用于开发、测试阶段); verbose(较多日志信息); notice(适量日志信息,使用于生产环境);warning(仅有部分重要、关键信息才
日志级别
debug(记录大量日志信息,适用于开发、测试阶段);
verbose(较多日志信息);
notice(适量日志信息,使用于生产环境);
warning(仅有部分重要、关键信息才
syslog-enabled no
是否把日志记录到系统日志。
syslog-ident
设置系统日志的id 如 syslog-ident redis
databases 16
设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select <dbid> 命令选择一个不同的数据库,dbid是一个介于0到databases - 1 之间的数值。
always-show-logo yes
是否一直显示日志
SNAPSHOTTING快照
save
保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次。
save 900 1 900秒有一条数据改变就保存
save 300 10 300秒有10条数据改变就保
save 60 10000 600秒有10000条数据改变就保存
stop-writes-on-bgsave-error yes
默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。
rdbcompression yes
是否在dump .rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大。
rdbchecksum yes
是否CRC64校验rdb文件,会有一定的性能损失(大概10%)
dbfilename dump.rdb
rdb文件的名字。
dir ./
数据文件保存路径指redis.conf配置文件所在的路径
SECURITY安全
cofig get requirpass
获取密码
cofig set requirpass = ”123456“
auth:123456
LIMITS限制
maxmemory-policy
allkeys-lru
加入键的时候,如果过限,首先通过LRU算法驱逐最久没有使用的键
volatile-lru
加入键的时候如果过限,首先从设置了过期时间的键集合中驱逐最久没有使用的键
volatile-lfu:
从所有配置了过期时间的键中驱逐使用频率最少的键
allkeys-lfu:
从所有键中驱逐使用频率最少的键
redis持久化
RDB
dump.rdb
优点
适合恢复大量的数据
缺点
但有可能会丢失数据
AOF
appendonly.aof 在配置文件中要开启
数据持久化比较文档 只可能会丢失一秒钟的数据
没执行一次命令都会写入文件上 文件会过大 恢复时间长
redis的复制
主从复制
①拷贝多个redis.conf文件 ②开启daemonize yes③Pid文件名字 ④指定端口⑤Log文件名字【可以不配置】⑥Dump.rdb名字
主机down了 必须手动指定主机
角色
master
一个
可读可写
slave
多个
可读
哨兵模式
主机挂了 投票新选 会有从机自动顶上
集群
cd /sur/local/redis_cluster
准备一个redis-server
创建多个redis 修改端口 配置文件 cluster-enabled yes 开启集群 appendonly yes 打开aop持久化
同时启动所有redis
docker pull inem0o/redis-trib
下载镜像
docker run -it --net host inem0o/redis-trib create --replicas 1 47.105.128.151:7000 47.105.128.151:7001 47.105.128.151:7002 47.105.128.151:7003 47.105.128.151:7004 47.105.128.151:7005
info replication
查看角色
docker部署redis
docker run -d --name redis -p 6390:6379 redis --requirepass \"123456\"
springboot集成redis+注解
application.yml
redis: host: 47.105.128.151 port: 6390 password: 123456 jedis: pool: max-active: 20 max-idle: 8 min-idle: 0 max-wait: 5000
注解
CacheEvict
删除
Cacheput
修改 和 添加
Cacheable
查看
EnableCaching
开启缓存
zookeeper
安装
yum -y install openjdk-1.8.0
配置java环境变量
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local
#解压到/usr/local下面
cd /usr/local/
#进入目录
mv zookeeper-3.4.14/ zookeeper
#修改名字
cd /usr/local/zookeeper/conf
#打开zk的配置文件目录
mv zoo_sample.cfg zoo.cfg
#修改zoo_sample.cfg 为zoo.cfg [一定要改]
vim zoo.cfg
#编辑zoo.cfg
./zkServer.sh start
#启动
./zkServer.sh stop
#停止
./zkServer.sh status
查看zk的运行状态
znode
PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
EPHEMERAL-临时目录节点 客户端与zookeeper断开连接后,该节点被删除
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
节点操作
创建节点
create [-s] [-e] path data acl
查看节点内容
get /sanguo
更新节点内容
set path data
删除节点
delete /
zookeeper集群搭建
cd /usr/local/makdir zk-clustercd zk-cluster
.新建一个集群的文件夹及数据目录
cp
准备三个zookeeper
touch myid
vim zk1/conf/zoo.cfg
Linux
常用基本命令
ls -a 查看当前目录文件
--help 帮助命令
tab 自动补全
Linux命令-文件管理
ls 查看文件信息
cd 切换工作目录
clear 清屏
pwd 显示当前路径
mkdir 创建目录
touch 创建文件
cp 拷贝文件
-R 复制目录
cp -R [源文件或目录] [目的目录]
mv 移动[重命名]文件
rm 删除文件
-f 强制删除
-r 删除文件夹
cat 查看或合并文件
>
先清空再追加
>>
直接追加
ln 建立链接文件
硬链接
ln 源文件 链接文件
软链接
ln -s 源文件 链接文件
find 文件搜索命令
find [搜索路径] [搜寻关键字]
grep 文件搜索命令
-v 显示不包含匹配文本的所有行(相当于求反)
-n 显示匹配行及行号
-i 忽略大小写
grep [-选项] ‘搜索内容串’文件名
tar 解压
-z 打包同时压缩
-x 解开档案文件
-v 显示详细信息
-f 指定压缩后的文件名
tar -zxvf xxx.tar.gz -C ./dir1 #解压到指定目录
unzip 归档管理
unzip xxxx.zip
yum 安装
-y 自动确认
search 搜索
install 下载
yum -y install xxxx 下载
用户、权限管理
whoami 查看当前用户
who 查看登录用户
exit 退出登录账户
useradd 添加用户账号
passwd 设置用户密码
password + 用户
userdel 删除用户
userdel -r (用户名)
su 切换用户
加 \"-\" 的就是同时切换到用户目录
用户权限管理
cat /etc/group 查看有哪些用户组
groupadd、groupdel 添加、删除组账号
groups +用户 查看用户在那个组
usermod -g 用户组 用户名 修改用户所在组
chmod 修改文件权限
字母法
数字法 chmod +(1-6的三位数字)
4 -------------r
2 -------------w
1 ---------------x
字·母含义
r 可读
w 可写
x 可执行
chown 修改文件所有者
chown + 用户 +文件
chgrp 修改文件所属组
chgrp + 用户 +文件
系统管理
cal 查看当前日历
date 显示或设置时间
date [MMDDhhmm[[CC]YY][.ss]] +format 需要管理员权限
ps 查看进程信息
-a 显示终端上的所有进程,包括其他用户的进程
-u 显示进程的详细状态
-x 显示没有控制终端的进程
-r 只显示正在运行的进程
ps -ef | grep java 查看当前正在运行的进程。
ps -aux | grep java 显示所有状态
top 查看cpu使用率 是否被攻击
kill 杀进程
kill -9 加id
ifconfig 查看或配置网卡信息
ping 测试远程主机连通性
防火墙管理
firewall-cmd --state
查看防火墙状态 iptable未运行防火墙。
service iptables start
开启防火墙
systemctl stop firewalld.service
关闭防火墙
systemctl disable firewalld.service
禁止firewall开机启动
vim/vi
i
插入文本
set:nu
设置行号
:n
到第n行
:%s/被替换的值/新值/g
替换所有的值
:wq
保存退出
:q!
不保存退出
安装JDK
yum search jdk
yum -y instll java-1.8.0-openjdk
mkdir /usr/local/java 创建一个存放jdk的文件
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/java 解压jdk到指定目录
cd /usr/local/java/jdk 进入jdk目录
vim /etc/profile 配置环境变量
JAVA_HOME=/usr/local/java/jdk1.8.0_181PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH
source /etc/profile 刷新环境变量
Java -version 查看jdk版本
安装tomcat
mkdir /usr/local/tomca 创建存放文件
tar -zxvf apache-tomcat-8.5.43.tar.gz -C /usr/local/tomcat/ 解压
cd /usr/local/tomcat 进入tomcat文件
mv apache-tomcat-8.5.43/ tomcat1 改名
./tomcat1/bin/startup.sh 启动tomcat
./tomcat1/bin/shutdown.sh 停止tomcat
安装mysql
tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
#解压
mv mysql-5.7.27-linux-glibc2.12-x86_64 mysql
#重命名
cp -r mysql /usr/local
#复制解压后的mysql目录
cd /usr/local/mysql/
进入安装mysql软件目录
mkdir -p /data/mysql
创建数据仓库目录
groupadd mysql
新建一个msyql组
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql
新建msyql用户禁止登录shell
cd /usr/local/mysql
pwd
chown -R mysql .
chgrp -R mysql .
chown -R mysql /data/mysql
改变目录属有者
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
配置参数
bin/mysql_ssl_rsa_setup --datadir=/data/mysql
cd /usr/local/mysql/support-files
cp my-default.cnf /etc/my.cnf 这里没有话就跳过 去查看这个地址有没有my.cnf文件。如果就把权限改了 chmod 777 my.cnf
cp mysql.server /etc/init.d/mysql3
vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/data/mysql
/etc/init.d/mysql start
启动mysql
chmod 777 /etc/my.cnf
如果无法启动执行下面命令
mysql -u root -p
登陆
如果出现:-bash: mysql: command not found --就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行
修改密码
set password=password(\"123456\")
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
设置root账户的host地址(修改了才可以远程连接)
vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile
添加系统路径【为设置开机启动提供】
chmod 755 /etc/init.d/mysql
chkconfig --add mysql
chkconfig --level 345 mysql on
配置mysql自启
nacat出现 1130 就是没有设置远程连接
发布项目到tomcat
war包
排除tomcatjar包
修改war包为ROOT.war
jar包
nohup java -jar bills.jar >/root/bills/logs/bills8080.log &
后台启动 输出日志
Nginx
安装nginx
yum install gcc-c++
yum install -y pcre pcre-devel
PCRE安装
yum install -y zlib zlib-devel
zlib安装
yum install -y openssl openssl-devel
openssl安装
tar -zxvf nginx-1.16.1.tar.gz
#把解压nginx-1.16.1.tar.gz包
mv nginx-1.16.1 nginx
#修改文件夹的名字
cp -r nginx /usr/local/src
#把nginx拷贝到/usr/local/src里面
cd /usr/local/src
进入目录
mkdir /usr/nginx
创建安装地址
cd /usr/local/src/nginx
指定安装路径
./configure --prefix=/usr/nginx
编译
make install
cd /usr/nginx
进入nginx
./sbin/nginx
启动
./sbin/nginx -s stop
停止
./sbin/nginx/ -s reload
配置文件改变时 刷新配置
Nginx基础配置
cd /usr/nginx/conf
vim nginx.conf
添加
server { listen 80; server_name localhost; location / { #资源地址 root html; index index.html index.htm; #首页地址 } }
动静分离
删除 webapps/ROOT/WEB-INF/classes/static的静态资源
cd /usr/nginx/ 在nginx的安装目录下创建resources
再把项目里面的static里面的内容放到nginx/resources里面
配置nginx/conf/nginx.conf
#动态分离的配置 location ~* \\.(css|js|html)$ { root resources;#可以使用相对路径和绝对路径 /usr/resources就是绝对路径 expires 7d;#有效天数 } location ~* \\.(avi|txt|png|gif|jpg|mp3|mp4|rmvb)$ { root resources; expires 20d; }
Docker
docker安装
yum remove docker \\ docker-client \\ docker-client-latest \\ docker-common \\ docker-latest \\ docker-latest-logrotate \\ docker-logrotate \\ docker-engine
yum -y install gcc
yum -y install gcc-c++
yum install docker
systemctl start docker
开机自启
docker version
查看版本
docker run hello-world
测试运行 hello-world
docker run -p 8080:80 -d docker.io/nginx
运行nginx
systemctl stop docker
yum -y remover docker
rm -rf /var/lib/docker
卸载docker
配值镜像加速
vim /etc/docker/daemon.json
{ \"registry-mirrors\": [\"https://32xw0apq.mirror.aliyuncs.com\"]}
systemctl daemon-reload
刷新配置
systemctl restart docker
重启docker
docker命令
docker images
列出所有镜像
docker rmi -f 镜像id
根据镜像id删除镜像
docker 镜像命令
列表本机上的镜像
docker seach
镜像搜索命令
docker pull
镜像下载命令
docker rmi 镜像删除命令
docker rmi -f $(docker images -aq)
删除所有镜像命令
docker 容器命令
docker run -it -d -p 80:8080 --name=\"\" 镜像名:tag/镜像id [命令or 参数]
启动容器
docker ps
-a
查看正在运行的
-q
查看已经死亡的
docker rm -f $(docker ps -aq)
删除所有运行和未运行的容器
exit:
停止容器并退出
ctrl+P+Q
容器不停止退出
docker exec -it 容器ID bash
重新开启一个终端进入容器
docker attach 容器ID
直接使用原来的终端进入容器
docker start|stop|restart 容器ID或容器名
启动停止重启容器
docker kill 容器ID或容器名称
强制停止容器
docker logs 容器ID|名称
查看容器日志
docker top 容器ID
查看容器运行进程
docker inspect 容器ID|名称
查询容器内部细节
docker cp 容器ID(容器名称):容器内文件或文件夹路径 宿主机的路径
从容器中拷贝文件到主机
docker cp 宿主机的路径 容器ID(容器名称):容器内文件或文件夹路径
从主机拷贝文件到容器中
docker commit -m='新的镜像的描述信息' -a='作者' 容器ID 要创建的目标
自定义一个镜像
添加数据卷
docker run -it -v /宿主机目录:/容器内目录 centos /bin/bash
docker inspect 容器ID
查看容器卷是否挂载成功
查看Mounts的内容
Dockerfile
关键字
FROM
当前新镜像是基于哪个镜像的
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建时需要运行的命令
EXPOSE
当前容器对外暴露的端口[只是提示作用,
WORKDIR
指定在创建容器后,终端默认登陆进来的工作目录
ENV
用来在构建镜像过程中设置环境变量
ADD
将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar包
COPY
类似ADD,拷贝文件和目录到镜像中
VOLUME
容器数据卷,用于数据保存和持久化工作
CMD
指定一个容器启动时要运行的命令格式
添加的命令会被替换
ENTEYPONT
指定一个容器启动时要运行的命令
在原基础上在加上命令
构建一个tomcat镜像
mkdir -p /mydocker/mytomcat
#创建目录
cd /mydocker/ mytomcat
touch Dockerfile
vim Dockerfile
FROM centos#作者MAINTAINER zyj<361072775@qq.com>#拷贝tomcat jdk 到镜像并解压ADD apache-tomcat-8.5.30.tar.gz /usr/local/tomcatADD jdk-8u202-linux-x64.tar.gz /usr/local/jdk#定义交互时登录路径ENV MYPATH /usr/localWORKDIR $MYPATH#配置jdk 和tomcat环境变量ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_202ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-8.5.30ENV CATALINA_BASE /usr/local/tomcat/apache-tomcat-8.5.30ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#设置暴露的端口EXPOSE 8080#运行tomcatCMD [\"catalina.sh\
docker build -t mytomcat:1.0
构建镜像
部署项目
docker cp application.yml bills:/root/bills/application.yml
编写Dockerfile
FROM openjdk:8u181-jdk-alpine#作者MAINTAINER zyj<361072775@qq.com>#创建工作目录RUN mkdir -p /root/myproject/#把jar包添加到容器里去ADD bills.jar /root/myproject/#声明工作路径ENV ROOT_DIR /root/myproject/#指定工作目录WORKDIR $ROOT_DIR#查看当前路径RUN pwd#查看当前路径文件RUN ls -lh#设置暴露的端口EXPOSE 8080#运行tomcatCMD [\"java\
修改好的application.yml放到容器里面和jar包的同级目录
重启docker 容器
0 条评论
回复 删除
下一页