Docker——命令篇

1、命令

1.1、配置docker开机启动

systemctl enable docker.service

1.2、配置容器启动

docker update --restart=always 容器id(跟随docker开机重启)

1.3、配置镜像

vim /etc/docker/daemon.json
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]

1.4、服务器外部修改容器配置文件

# 查看容器报错原因

[root@pro nginx]# docker logs nginx

nginx: [emerg] unknown directive “gizp” in /etc/nginx/nginx.conf:29

# 在此目录找到nginx容器的配置文件

[root@pro nginx]# cd /var/lib/docker/overlay2/

[root@pro overlay2]# find ./ -name nginx.conf

./7baeb968df6b073708cce37a182cf54fd033023a5eda6bb6d1077438d950ce6e/diff/etc/nginx/nginx.conf

# 将文件修改正确

[root@pro overlay2]# vim
./7baeb968df6b073708cce37a182cf54fd033023a5eda6bb6d1077438d950ce6e/diff/etc/nginx/nginx.conf

# 重启容器

[root@pro overlay2]# docker restart nginx

nginx

1.5、常见应用安装脚本整合

已包含Mysql5.7、Redis、MongoDB、RocketMQ、RabbitMQ软件的安装
注意:①使用命令之前请先关闭服务器防火墙②请给sheel脚本赋予权限
使用:./test.sh 命令
写的比较Low,业余时间整理的,不要嫌弃!!!

 #!/bin/sh

# 使用说明,用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [close_fire|rocketmq|stop_rock|rm_rock|rabbitmq|single_redis|mysql|mongodb]"
	exit 1
}
local_ip="172.29.170.34"

rocketmq(){
#安装之前请先关闭防火墙
broker_file_path="/application/rocketmq/conf/"
broker_file_name="broker.conf"
if [ ! -d "$broker_file_path" ];then
  mkdir -p  $broker_file_path
  echo "文件夹创建完毕"
else
  echo "文件夹已经存在"
fi
cd $broker_file_path
touch $broker_file_name
echo "brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr = $local_ip:9876
brokerIP1 = $local_ip
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=true
" >> $broker_file_name
#安装nameServer
docker run -d -p 9876:9876   -v /application/rocketmq/data/namesrv/logs:/root/logs  --privileged=true --restart=always    -v /application/rocketmq/data/namesrv/store:/root/store --name rmqnamesrv -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms1024m -Xmx1024m" rocketmqinc/rocketmq sh mqnamesrv 
#安装broker
docker run -d  -p 10911:10911 -p 10909:10909    -v /application/rocketmq/data/broker/logs:/root/logs   --privileged=true   -v /application/rocketmq/rocketmq/data/broker/store:/root/store  -v $broker_file_path/broker.conf:/opt/rocketmq/conf/broker.conf  --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms1024m -Xmx1024m"  rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf
#安装控制台
docker run  -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=$local_ip:9876 -Drocketmq.config.isVIPChannel=false" -p 8080:8080  --name rocketconsole   -t styletang/rocketmq-console-ng 
echo "rocketMq 安装完毕—-===========SUCCESS================--"
}
stop_rock(){
	docker stop rmqbroker rmqnamesrv   rocketconsole
}
rm_rock(){
	docker rm rmqbroker rmqnamesrv   rocketconsole
}
close_fire(){
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
    systemctl stop firewalld
    systemctl disable firewalld
    echo "已关闭防火墙"
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then
    service iptables stop
    chkconfig iptables off
fi
}

rabbitmq(){
rabbit_file_path="/application/rabbitmq/data"
mq_host="my_vhost"
mq_user="guest"
mq_password="guest"
docker_name="rabbitmq"


if [ ! -d "$rabbit_file_path" ];then
  mkdir -p  $rabbit_file_path
  echo "文件夹创建完毕"
else
  echo "文件夹已经存在"
fi
docker run -d   --name $docker_name  --privileged=true  --restart=always    -p 5672:5672   -p 15672:15672   -v $rabbit_file_path:/var/lib/rabbitmq   --hostname rabbitmq   -e RABBITMQ_DEFAULT_VHOST=$mq_host   -e RABBITMQ_DEFAULT_USER=$mq_user  -e RABBITMQ_DEFAULT_PASS=$mq_password    docker.io/rabbitmq:3.7.17-management 
CONTAINER_ID=`docker ps -a | grep "$docker_name" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]
    then
    	echo  "启动成功!"
    	docker ps -a | grep "$docker_name"
        exit 0
    else
    	echo  "失败!"
    	docker stop $docker_name	
    	docker rm  $docker_name
        exit 1  
    fi   
}
#单节点 Redis 
single_redis(){
redis_data="/application/redis/data/"
redis_conf_path="/application/redis/conf/"
docker_name="redis"
redis_images="redis"
redis_password="Admin12345!"
if [ ! -d "$redis_conf_path" ];then
  mkdir -p  $redis_conf_path
  echo "文件夹创建完毕"
else
  echo "文件夹已经存在"
  cd $redis_conf_path
  rm redis.conf
fi
cd $redis_conf_path
#生成配置文件
touch redis.conf
echo 'bind 0.0.0.0

protected-mode no

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

databases 16

always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no


appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec


no-appendfsync-on-rewrite no


auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes


aof-use-rdb-preamble yes

lua-time-limit 5000


slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0


notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2


list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000


stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes
' >> redis.conf

docker run -p 6224:6379 -v $redis_data:/data -v $redis_conf_path/redis.conf:/usr/local/etc/redis/redis.conf --privileged=true --restart=always   --name $docker_name -d docker.io/redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf --requirepass  $redis_password

CONTAINER_ID=`docker ps -a | grep "$docker_name" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]
    then
    	echo  "启动成功!"
    	docker ps -a | grep "$docker_name"
     exit 0
    else
    	echo  "失败!"
    	docker stop $docker_name	
    	docker rm  $docker_name
     exit 1  
    fi   
}

mysql(){
#Version 5.7
password="Admin12345!"

mysql_data="/application/mysql/data"

docker_name="mysql5.7"

docker run --name $docker_name  --privileged=true  --restart=always   -p 6223:3306 -e MYSQL_ROOT_PASSWORD=$password   -v $mysql_data:/var/lib/mysql -d docker.io/mysql:5.7

CONTAINER_ID=`docker ps -a | grep "$docker_name" | awk '{print $1}'`

if [ -n "$CONTAINER_ID" ]
    then
    	echo  "启动成功!"
    	docker ps -a | grep "$docker_name"
    	echo "请进入到容器自行改相关配置!"
    	echo "数据库密码:"$password
     exit 0
    else
    	echo  "失败!"
    	docker stop $docker_name	
    	docker rm  $docker_name
     exit 1  
    fi   

}

mongodb() {
mongodb_data="/application/mongodb"
docker_name="mongodb"
docker run -d --name  $docker_name    --privileged=true --restart=always   -v $mongodb_data/data:/data/db -v $mongodb_data/backup:/data/backup -v $mongodb_data/conf:/data/configdb -p 27017:27017 docker.io/mongo --auth
#docker exec -it mongodb mongo
#use admin
#db.createUser({user:'admin',pwd:'admin',roles:['root']})
#db.auth('admin','admin')
CONTAINER_ID=`docker ps -a | grep "$docker_name" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]
    then
    	echo  "启动成功!"
    	docker ps -a | grep "$docker_name"
    	echo "请进入到容器自行改相关配置!"
    	echo "
    	设置用户:
    	docker exec -it mongodb mongo
    	use admin
    	db.createUser({user:'admin',pwd:'admin',roles:['root']})
    	db.auth('admin','admin')
    	" 
    	echo "设置网络:
    	docker exec -it mongodb /bin/bash
    	vim /etc/mongod.conf.orig
    	将bindIp:127.0.0.1 修改为0.0.0.0"
     exit 0
    else
    	echo  "失败!"
    	docker stop $docker_name	
    	docker rm  $docker_name
     exit 1  
    fi  
}

minio() {
minioFilePath="/application/minio"
docker_name="minio"

docker run -d -p 9000:9000 -p 9200:9200 --name=minio --restart=always -e "MINIO_ROOT_USER=admin"    -e "MINIO_ROOT_PASSWORD=123456"   -v /application/minio/data:/data   -v /application/minio/config:/root/.minio   minio/minio server /data --console-address ":9200" --address ":9000"

CONTAINER_ID=`docker ps -a | grep "$docker_name" | awk '{print $1}'`
if [ -n "$CONTAINER_ID" ]
    then
    	echo  "启动成功!"
    	docker ps -a | grep "$docker_name"
     exit 0
    else
    	echo  "失败!"
    	docker stop $docker_name	
    	docker rm  $docker_name
     exit 1  
    fi   


}

# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"rocketmq")
	rocketmq
;;
"stop_rock")
	stop_rock
;;
"rm_rock")
	rm_rock
;;
"close_fire")
	close_fire
;;
"rabbitmq")
	rabbitmq
;;
"single_redis")
	single_redis
;;
"mysql")
	mysql
;;
"mongodb")
	mongodb
;;
"minio")
	minio
;;

*)
	usage
;;
esac




1.6、正在运行的容器同步系统时间

# docker镜像内的时间和系统时间相差8个小时。
 docker cp -L /usr/share/zoneinfo/Asia/Shanghai  【容器名】:/etc/localtime
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值