常用docker命令
# 进程PID查找归属容器ID
根据进程PID查找归属容器ID
使用inspect
docker inspect -f '{{.State.Pid}} {{.Id}}' $(docker ps -q) | grep <PID>
1
如果PID是容器内运行子进程那docker inspect就无法显示了,使用以下命令
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i &&echo ID=$i; done |grep -A 10 <PID>
1
# 进入docker容器
# redis
docker exec -it redis redis-cli -a 密码
获取 redis 中所有的 key:
KEYS *
//删除当前数据库中的所有Key
flushdb
获取过期时间
ttl key
SET runoobkey redis
DEL runoobkey
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# mysql
docker exec -it mysql bash
链接数据库
mysql -uroot -p
输入密码后就进入数据库了
1
2
3
4
2
3
4
# kafka
1.进入容器
docker exec -it kafka-zookeeper /bin/sh
2. 生产者(容器内部使用127.0.0.1:9092)
./bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
3. 消费者
./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning
1
2
3
4
5
6
2
3
4
5
6
# docker ps -a
只输出docker的ID和Name
docker ps --format "{{.ID}}: {{.Names}}"
1
2
2
# 删除所有镜像
docker rmi $(docker images -q)
1
# 删除所有docker容器
docker kill $(docker ps -a -q)
docker rm $(docker ps -a -q)
1
2
2
# docker镜像导入导出
导出
docker save -o mysql5721.tar mysql:5.7.21
1
导入
docker load -i mysql5721.tar
1
# 监听服务,若异常则重启
# 脚本
/home/check/checkDockerServer.sh如下:
#!/bin/bash
#当前时间
now=`date +"%Y-%m-%d %H:%M:%S"`
#获取所有容器
arr=`docker ps --format "{{.Names}}"`
#清空正常的日志
echo " " >/home/check/checkDocker.log
#循环
for item in ${arr[*]}
do
# 查看进程是否存在
exist=`docker inspect --format '{{.State.Running}}' ${item}`
if [ "${exist}" != "true" ]
then {
echo "${now} 重启docker容器,容器:${item}" >> /home/check/restartDockerServer.log
docker restart ${item}
}
else
{
echo "${now} 容器:${item} 正常" >>/home/check/checkDocker.log
}
fi
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 检查脚本是否能够正常启动
sh /home/check/checkDockerServer.sh
1
# 加入定时任务
crontab -e
1
每个一分钟执行一次脚本
*/1 * * * * sh /home/check/checkDockerServer.sh >/dev/null 2>&1
1
# 构建镜像
例:基于openjdk:8-jre
配置文件:/home/application.yml或/home/application.properties
jar包:/app.jar
时区:上海
其他:更新apt-get,安装zip、unzip
可根据实际需求增删相关配置
1
2
3
4
5
2
3
4
5
Dockerfile
FROM openjdk:8-jre
RUN sh -c 'touch /app.jar'
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-Xmx800m","-Dspring.config.location=/home/application.yml,/home/application.properties","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
RUN apt-get update -y &&apt-get install -y zip unzip
1
2
3
4
5
6
2
3
4
5
6
构建命令:openjdk-jar 镜像,版本号8,根据当前目录Dockerfile文件
docker build -t openjdk-jar:8 ./
1
上次更新: 2023/03/10, 10:08:26