二进制安装docker-compose
①下载对应版的docker-compose文件
https://github.com/docker/compose/releases/tag/1.29.2
②改名、加权限
mv docker-compose-Linux-x86_64 /usr/local/bin/
cd usr/local/bin/docker-compose
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 /usr/local/bin/docker-compose
③查看docker-compose版本
docker-compose version
④执行docker-compose
可以看到有很命令信息输出,说明安装正常
1、tomcat
docker pull tomcat:9.0
docker run -d -p 8080:8080 --name tomcat-111 tomcat:9.0
docker exec -it tomcat-111 /bin/bash
[说明]
-d:就是以后台运行方式运行 也可以-t:以交互式运行
-p:暴露端口号第一个8080是暴露linux的端口号,
这样外部才能连接linux第二个端口号暴露的是容器的端口号,这样linux才能连接容器这样外部就能通过服务器访问容器了
--name:给容器取名
tomcat:9.0:运行时加上版本,指定是这个服务器
# tomcat的页面
cd webapps.dist/
cp -ar * ../webapps
然后我们就可以看到目录了
#页面默认是放在
/usr/local/tomcat/webapps/ROOT 下的
我们把原有的index.jsp删除掉
rm -rf index.jsp
echo "haha-alibab" >> index.html
页面就会更改了
docker cp ROOT.war d94e62badb20:/usr/local/tomcat
docker exec -it d94e62badb20 /bin/bash
rm -rf webapps/ROOT
mv ROOT.war webapps/
docker restart d94e62badb20
访问我们的ip 加端口 默认是访问 /usr/local/tomcat/webapps
如果我们把ROOT改了名字 同样的访问路径也要更改,比如ROOT改为 HELLO 就也要改为
/usr/local/tomcat/webapps/HELLO/index.html
war包传输到启动的tomcat 里面的时候,tomcat 会自动解压这个war包
产线上也是把war包放在 /usr/local/tomcat/webapps 下
2、Redis
buildkit底层走的containerd 它打的镜像更加轻量
docker pull redis:5.0
# 启动带密码设置
docker run -id --name reids-test -p 6379:6379 reids:5.0 --requirepass "lyc123456"
docker exec -it redis-test /bin/bash
# 一般都会建立工作目录
mkdir -p /data/redis/data
mkdir -p /data/redis/conf
/data/redis/conf/redis.conf挂载给/usr/local/etc/redis/redis.conf
/data/redis/data挂载给/data
docker run -it --name redis --volume=/data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf --volume=/data/redis/data:/data --volume=/data --workrid=/data -p 6379:6379 --restart=no --detach=true rids redis-server /usr/loca/redis/redis.conf --appendonly yes
#【测试】没有信息回退就是通的
ssh -v 6379 root@192.168.80.28
echo >/dev/tcp/192.168.80.28/6379
3、MySQL
①二进制安装
1、去mysql 官网 download二进制包
2、yum -> 下载对应版本 -> 获取ip地址
3、wget ip地址
4、rpm -ivh --- 获取到包和源
5、 yum -y install mysql-server 就可以了
6、rpm -qa | grep mysql
7、vim /etc/my.cnf 更改配置文件
8、启动mysqld service mysqld start
9、查看是否启动成功? ps -ef | grep mysql netstat -nultp | grep 3306
10、 查看密码 cat mysqld.log | grep password
②docker安装5.7版本
docker pull mysql:5.7
mkdir -p /root/mysql/{data,log,conf}
cd /root/mysql/conf
touch my.cnf
vim my.cnf
[mysqld]
#服务端口号 默认3306
port=3306
user=mysql
#mysql数据文件所在位置
datadir=/var/lib/mysql
#pid
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
default-time-zone ='+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#允许访问的IP网段
bind-address=0.0.0.0
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve=1
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED
#最大连接数
max_connections=400
#最大错误连接数
max_connect_errors=1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=1G
【注意】
这块可能启动不了mysql 因为需要转换一下格式
yum -y install dos2unix
dos2unix /root/mysql/conf/my.cnf
启动MySQL5.7容器
创建容器,将数据,日志,配置文件映射到本机
docker run -it -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs \
-v /root/mysq/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
[说明]
-v 将主机目录挂载到容器的目录
-p 将容器的端口映射到本机的端口
-d 后台运行容器
-e 设置参数
【小技巧】
可以在root目录下新建脚本,将容器启动命令封装在脚本中一键启动
【5.7】
docker run -p 3306:3306 --name mysql57 \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/logs:/logs \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
【8.0】
docker run --privileged=true -p 3306:3306 --name mysql80 \
-m 1g \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0
建库
用natvcat连接
③docker安装8.0版本
1、拉镜像
docker pull mysql:8.0.15
2、建目录
mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf
创建配置文件my.cnf
//根目录选择自身实际最大磁盘路径 一般为/home 或者定义/data
touch /data/mysql/conf/my.cnf
vim my.cnf
[mysqld]
#服务端口号 默认3306
port=3306
user=mysql
#mysql数据文件所在位置
datadir=/var/lib/mysql
#pid
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
default-time-zone ='+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#允许访问的IP网段
bind-address=0.0.0.0
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve=1
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED
#最大连接数
max_connections=400
#最大错误连接数
max_connect_errors=1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=1G
3、启动容器
docker run -p 3308:3306 --name mysql8_test \
-v /mnt/mysql/conf:/etc/mysql/conf.d \
-v /mnt/mysql/logs:/logs \
-v /mnt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d 7bb2586065cd
进入容器 docker exec -it mysql8_test /bin/bash
#创建账号并授权
mysql -uroot -p
set password ='root';
grant system_user on *.* to 'root';
flush privileges;
exit
--------------------------------------------------
mysql -uroot -proot
use mysql;
设置root任意地址访问
update user set host = '%' where user = 'root';
刷新
flush privileges;
exit
--------------------------------------------------
mysql -uroot -proot
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
刷新
flush privileges;
exit
使用工具连接
查看mysql8.0配置信息
查看版本
SELECT VERSION();
查看具体配置
SHOW VARIABLES LIKE 'innodb%';
mysql> SHOW VARIABLES LIKE 'innodb%';
+------------------------------------------+------------------------+
| Variable_name | Value |
+------------------------------------------+------------------------+
| innodb_adaptive_flushing | ON |
| innodb_adaptive_flushing_lwm | 10 |
| innodb_adaptive_hash_index | ON |
| innodb_adaptive_hash_index_parts | 8 |
| innodb_adaptive_max_sleep_delay | 150000 |
| innodb_api_bk_commit_interval | 5 |
| innodb_api_disable_rowlock | OFF |
| innodb_api_enable_binlog | OFF |
| innodb_api_enable_mdl | OFF |
| innodb_api_trx_level | 0 |
| innodb_autoextend_increment | 64 |
| innodb_autoinc_lock_mode | 2 |
| innodb_buffer_pool_chunk_size | 134217728 |
| innodb_buffer_pool_dump_at_shutdown | ON |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_dump_pct | 25 |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_in_core_file | ON |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | ON |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 134217728 |
| innodb_change_buffer_max_size | 25 |
| innodb_change_buffering | all |
| innodb_checksum_algorithm | crc32 |
| innodb_cmp_per_index_enabled | OFF |
| innodb_commit_concurrency | 0 |
| innodb_compression_failure_threshold_pct | 5 |
| innodb_compression_level | 6 |
| innodb_compression_pad_pct_max | 50 |
| innodb_concurrency_tickets | 5000 |
| innodb_data_file_path | ibdata1:12M:autoextend |
| innodb_data_home_dir | |
| innodb_deadlock_detect | ON |
| innodb_dedicated_server | OFF |
| innodb_default_row_format | dynamic |
| innodb_directories | |
| innodb_disable_sort_file_cache | OFF |
| innodb_doublewrite | ON |
| innodb_fast_shutdown | 1 |
| innodb_file_per_table | ON |
| innodb_fill_factor | 100 |
| innodb_flush_log_at_timeout | 1 |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_flush_method | fsync |
| innodb_flush_neighbors | 0 |
| innodb_flush_sync | ON |
| innodb_flushing_avg_loops | 30 |
| innodb_force_load_corrupted | OFF |
| innodb_force_recovery | 0 |
| innodb_fsync_threshold | 0 |
| innodb_ft_aux_table | |
| innodb_ft_cache_size | 8000000 |
| innodb_ft_enable_diag_print | OFF |
| innodb_ft_enable_stopword | ON |
| innodb_ft_max_token_size | 84 |
| innodb_ft_min_token_size | 3 |
| innodb_ft_num_word_optimize | 2000 |
| innodb_ft_result_cache_limit | 2000000000 |
| innodb_ft_server_stopword_table | |
| innodb_ft_sort_pll_degree | 2 |
| innodb_ft_total_cache_size | 640000000 |
| innodb_ft_user_stopword_table | |
| innodb_io_capacity | 200 |
| innodb_io_capacity_max | 2000 |
| innodb_lock_wait_timeout | 50 |
| innodb_log_buffer_size | 16777216 |
| innodb_log_checksums | ON |
| innodb_log_compressed_pages | ON |
| innodb_log_file_size | 50331648 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_log_spin_cpu_abs_lwm | 80 |
| innodb_log_spin_cpu_pct_hwm | 50 |
| innodb_log_wait_for_flush_spin_hwm | 400 |
| innodb_log_write_ahead_size | 8192 |
| innodb_lru_scan_depth | 1024 |
| innodb_max_dirty_pages_pct | 90.000000 |
| innodb_max_dirty_pages_pct_lwm | 10.000000 |
| innodb_max_purge_lag | 0 |
| innodb_max_purge_lag_delay | 0 |
| innodb_max_undo_log_size | 1073741824 |
| innodb_monitor_disable | |
| innodb_monitor_enable | |
| innodb_monitor_reset | |
| innodb_monitor_reset_all | |
| innodb_numa_interleave | OFF |
| innodb_old_blocks_pct | 37 |
| innodb_old_blocks_time | 1000 |
| innodb_online_alter_log_max_size | 134217728 |
| innodb_open_files | 4000 |
| innodb_optimize_fulltext_only | OFF |
| innodb_page_cleaners | 1 |
| innodb_page_size | 16384 |
| innodb_parallel_read_threads | 4 |
| innodb_print_all_deadlocks | OFF |
| innodb_print_ddl_logs | OFF |
| innodb_purge_batch_size | 300 |
| innodb_purge_rseg_truncate_frequency | 128 |
| innodb_purge_threads | 4 |
| innodb_random_read_ahead | OFF |
| innodb_read_ahead_threshold | 56 |
| innodb_read_io_threads | 4 |
| innodb_read_only | OFF |
| innodb_redo_log_encrypt | OFF |
| innodb_replication_delay | 0 |
| innodb_rollback_on_timeout | OFF |
| innodb_rollback_segments | 128 |
| innodb_sort_buffer_size | 1048576 |
| innodb_spin_wait_delay | 6 |
| innodb_stats_auto_recalc | ON |
| innodb_stats_include_delete_marked | OFF |
| innodb_stats_method | nulls_equal |
| innodb_stats_on_metadata | OFF |
| innodb_stats_persistent | ON |
| innodb_stats_persistent_sample_pages | 20 |
| innodb_stats_transient_sample_pages | 8 |
| innodb_status_output | OFF |
| innodb_status_output_locks | OFF |
| innodb_strict_mode | ON |
| innodb_sync_array_size | 1 |
| innodb_sync_spin_loops | 30 |
| innodb_table_locks | ON |
| innodb_temp_data_file_path | ibtmp1:12M:autoextend |
| innodb_temp_tablespaces_dir | ./#innodb_temp/ |
| innodb_thread_concurrency | 0 |
| innodb_thread_sleep_delay | 10000 |
| innodb_tmpdir | |
| innodb_undo_directory | ./ |
| innodb_undo_log_encrypt | OFF |
| innodb_undo_log_truncate | ON |
| innodb_undo_tablespaces | 2 |
| innodb_use_native_aio | ON |
| innodb_version | 8.0.15 |
| innodb_write_io_threads | 4 |
+------------------------------------------+------------------------+
136 rows in set (0.00 sec)
查看binlog(二进制日志)
SHOW BINARY LOGS;
小经验
启动不了mysql 因为需要转换一下格式
yum -y install dos2unix
dos2unix /root/mysql/conf/my.cnf
4、Postgres安装
docker pull postgres
mkdir -p /opt/pgsql/data
docker run -d --restart=always --name postgres \
-v /opt/pgsql/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=pg123 \
-p 5432:5432 postgres
docker exec -it postgres /bin/bash
psql -U postgres -d postgres -h 127.0.0.1 -p 5432
create database test111;
5、oracle安装
1、拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
2、创建挂载文件
mkdir -p /root/data/oracle/oracledata
3、为挂载文件授权
chmod 777 /root/data/oracle/oracledata
4、启动Oracle 容器
docker run -d -p 1521:1521 \
-e ORACLE_SID=ORACLEDB \
-e ORACLE_PDB=ORACLEPDB \
-e ORACLE_PWD=oracle19c \
-e ORACLE_EDITION=standard \
-e ORACLE_CHARACTERSET=ZHS16GBK \
-v /root/data/oracle/oracledata:/opt/oracle/oradata \
--name=oracle19c registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
docker logs -f d6f3c0384985 容器id
初始化操作
docker exec -it oracle19c /bin/bash
sqlplus / as sysdba
SELECT username, PROFILE FROM dba_users;
查看数据库版本
SELECT version FROM v$instance;
配置oracle 初始化
show pdbs;
修改system 密码 alter user system identified by system;
修改sys的密码 alter user sys identified by sys;
查看密码周期
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME';
设置修改的密码永不过期 alter profile default limit password_life_time unlimited;
show pdbs;
alter session set container=ORACLEPDB;
create tablespace skzbtest datafile '/opt/oracle/oradata/ORACLEDB/ORACLEPDB/skzbtest. dbf' size 50M autoextend on maxsize unlimited;
create user skzb identified by skzb123 default tablespace skzbtest;
grant dba to skzb;
6、ES安装
拉取镜像
docker pull elasticsearch:7.17.22
新增挂载目录
mkdir -p /opt/es/config
mkdir -p /opt/es/data
echo "http.host: 0.0.0.0" > /opt/es/config/elasticsearch.yml
cat /opt/es/config/elasticsearch.yml
赋予权限
chmod 777 -R /opt/es
运行
docker run --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms128m -Xmx512m" \
-v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/es/data:/usr/share/elasticsearch/data \
-v /opt/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.17.22
7、kibana安装
docker pull kibana:7.17.22 //要安装跟ES一样的版本
docker run --name kibana \
-e ELASTICSEARCH_HOSTS-http://192.168.80.29:9200 \
-p 5601:5601 \
-d kibana:7.17.22
访问:
http://192.168.80.29:5601
8、ftp安装
下载 ftp 镜像
docker pull fauria/vsftpd
创建ftp目录
mkdir -p /data/ftp/data && mkdir -p /data/ftp/log && chmod -R 777 /data/ftp
启动
docker run -d --name vsftpd \
--restart=always \
-v /data/ftp/data:/home/vsftpd \
-v /data/ftp/log:/var/log/vsftpd \
-p 20:20 -p 21:21 -p 20000:20000 \
-e FTP_USER=admin \
-e FTP_PASS=admin \
-e PASV_MIN_PORT=20000 \
-e PASV_MAX_PORT=20000 \
-e PASV_ADDRESS=192.168.80.29 \
-e LOG_STDOUT=1 fauria/vsftpd
客户端访问
yum install ftp
访问
ftp://192.168.80.29
admin/admin
8、pdf安装
拉镜像
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
挂目录
mkdir -p /data/s-pdf && cd /data/s-pdf
------------------------------------------
离线安装docker-compose
cd /usr/local/bin/
mv /root/docker-compose /usr/local/bin/
sudo chmod 777 /usr/local/bin/docker-compose
echo "export PATH=$PATH:/usr/local/bin/docker-compose" >> ~/.bashrc
source ~/.bashrc
启动容器
docker-compose up -d
查看日志
docker-compose logs
查看运行中的容器
docker-compose ls
停止运行的容器
docker-compose stop
停止并移除运行的容器
docker-compose down
-------------------------------------------
vim docker-compose.yaml
version: '3.9'
services:
stirling-pdf:
image: registry.cn-hangzhou.aliyuncs.com/jeson/s-pdf:0.26.1-fat
container_name: Stirling-PDF
ports:
- '6080:8080'
volumes:
- /data/s-pdf/trainingData:/usr/share/tessdata #OCR 语言支持
- /data/s-pdf/extraConfigs:/configs
- /data/s-pdf/customFiles:/customFiles/
- /data/s-pdf/logs:/logs/
environment:
DOCKER_ENABLE_SECURITY: true #启用内部安全功能
SECURITY_ENABLELOGIN: true #启用登录功能
SECURITY_INITIALLOGIN_USERNAME: jeven
SECURITY_INITIALLOGIN_PASSWORD: jeven #Stirling-PDF登录账号 #Stirling-PDF登录密码
UI_APPNAME: jeven-PDF #自定义导航标题
INSTALL_BOOK_AND_ADVANCED_HTML_OPS: false
LANGS: zh_CN #设置语言
docker-compose up -d
查看日志
docker log -f 10d622be4fe7
docker-compose logs
打开页面:
http://192.168.80.29:6080
用户名密码:
jeven/jeven
9、filegator
docker pull filegator/filegator
创建FileGator挂载目录
mkdir -p /data/filegator/data && cd /data/filegator/
设置目录权限
chmod -R 777 /data/filegator/
使用docker-cli创建FileGator容器,执行以下命令,映射端口可自行修改。
docker run -itd --name filegator \
--restart=always \
-p 8888:8080 \
-v /data/filegator/data:/var/www/filegator/repository filegator/filegator
admin admin123
docker-compose 模式
version: '3.8'
services:
filegator:
image: filegator/filegator
container_name: filegator
restart: always
ports:
- 8888:8080
volumes:
- /data/filegator/data:/var/www/filegator/repository/
docker-compose -f docker-compose.yaml up -d
docker-compose logs
查看运行中的容器
docker-compose ls
停止运行的容器
docker-compose stop
停止并移除运行的容器
docker-compose down
http://192.168.80.29:8880
用户名/密码:
admin/admin123
10、linux命令查找
docker pull wcjiang/linux-command:latest
运行
docker run -d --name linux-command \
--restart always -p 9555:3000 \
wcjiang/linux-command:latest
11、it-tools实用工具
docker pull corentinth/it-tools:latest
运行docker
docker run -d --name it-tools \
--restart unless-stopped \
-p 8080:80 \
corentinth/it-tools:latest
docker-compose模式
version: '3'
services:
it-tools:
image: corentinth/it-tools:latest
container_name: it-tools
restart: unless-stopped
ports:
- "8080:80"
---------------------------------------------
docker-compose -f docker-compose.yaml up -d
docker-compose logs
查看运行中的容器
docker-compose ls
停止运行的容器
docker-compose stop
停止并移除运行的容器
docker-compose down
12、菜谱cook
docker pull yunyoujun/cook:latest
运行
docker run -d --name cook \
--restart always \
-p 8085:80 \
yunyoujun/cook:latest