docker 命令汇集

  • 部署docker

安装依赖

# Install required packages. yum-utils provides the yum-config-manager utility, and device-mapper-persistent-data and lvm2 are required by the devicemapper storage driver.
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

使用阿里源:

yum-config-manager \
    --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce

yum install docker-ce

1,查看容器

docker ps [-a] #-a表示全全部否者仅显示运行的

2,登录容器

docker exec -it [containerId] /bin/bash
docker exec -it [containerId] bash
docker exec -it [containerId] /bin/sh

3,启动所有的容器

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

4,停用全部运行中的容器

docker stop $(docker ps -q) #正常停止
docker kill $(docker ps -q) #强行杀掉

5,删除全部容器

docker rm $(docker ps -aq)
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

6,一条命令实现停用并删除容器:

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

7,查看镜像

docker images

8,删除镜像

docker rmi [imageId]

9,docker 批量删除无tag镜像

docker rmi $(docker images|grep none|awk '{print $3}')

10,删除全部image

docker rmi $(docker images -q)

11,删除镜像名称中包含“ejiyuan”的镜像

docker rmi --force $(docker images | grep ejiyuan | awk '{print $3}')

12,删除所有未打 ejiyuan 标签的镜像

docker rmi $(docker images -q -f ejiyuan=true)

 13,查看日志

docker logs -f -t --since="2017-05-31" --tail=10 web # --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志,-f : 查看实时日志, -t : 查看日志产生的日期, -tail: 查看最后的10条日志,web: 容器名称或容器id
docker logs --since 30m CONTAINER_ID # 查看最近30分钟的日志
docker logs -t --since="2021-08-18T11:46:37" --tail=100 CONTAINER_ID # 查看某时间之后最新的100条日志
docker logs -t --since="2021-08-18T11:46:37" --until "2021-08-18T11:47:37" CONTAINER_ID # 查看某时间段日志
docker logs CONTAINER_ID | grep -10 'error'  # 打印匹配行的前后10行
docker logs CONTAINER_ID | grep -C 10 'error'  # 打印匹配行的前后10行
docker logs CONTAINER_ID | grep -A 10 -B 10 'error'  # 打印匹配行的前后10行
docker logs CONTAINER_ID | grep -A 10 'error'  # 打印匹配行的后10行
docker logs CONTAINER_ID | grep -B 10 'error'  # 打印匹配行的前10行

 14,删除日志

docker ps -a
docker inspect [container_ID] | grep json.log
>/var/lib/docker/containers/[container_ID]be01e3c7e68f0e56d6450413ae1fe49ec94f1c72c8bf779e580e/[container_ID]be01e3c7e68f0e56d6450413ae1fe49ec94f1c72c8bf779e580e-json.log

15,加入网路

# 先创建一个网络
docker network create testnet
# 查看Docker网络
docker network ls
#加入网络
docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest
docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest
#测试网络,容器centos-1与centos-2可互相通信,进入容器 centos-1
ping centos-2

16,设置自动重启

#创建时
docker run -d -p 8086:8086 --restart=always --name influxdb  influxdb:latest
#已启动
docker update --restart=always 容器ID(或者容器名)

#开机自动启动docker
systemctl enable docker

--restart 策略

命令 作用备注
no 默认策略,在容器退出时不重启容器
on-failure 在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 在容器非正常退出时重启容器,最多重启3次
always 在容器退出时总是重启容器
unless-stopped 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

17,修改信息 

docker rename distracted_cori docserver  # 修改容器distracted_cori 名称为 docserver

18,docker启动redis并设置密码

docker run -d --name myredis -p 6379:6379 redis --requirepass "mypassword"

19,登录到docker redis

docker exec -it redis_s redis-cli -h 192.168.1.100 -p 6379 -a your_password //如果有密码 使用 -a参数
192.168.1.100:6379> 

20,安装RabbitMQ

docker run -id --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=St123456 rabbitmq:management

#15672:管理界面ui使用的端口
#15671:管理监听端口
#5672、5671:AMQP 0-9-1 without and with TLSclient端通信口
#4369:(epmd)epmd代表 Erlang端口映射守护进程,erlang发现口
#25672:( Erlang distribution) server间内部通信口

21,启动 H2

docker run -d -p 1521:1521 -p 81:81 -v /path/to/local/data_dir:/opt/h2-data --name=MyH2Instance oscarfonts/h2
#查看日志 docker logs -f MyH2Instance
#登录初始化 http://192.168.99.100:81/

22,启动mariadb

docker run --name my-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

23,启动mysql

docker run -itd -p 3306:3306 -v /data/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=st123456 mysql --secure-file-priv='var/lib/mysql'

24,启动postgres

docker run --name my_postgres -d -p 5432:5432 -e POSTGRES_PASSWORD=123456 -e PGDATA=/data/ -e POSTGRES_USER=admin -e POSTGRES_DB=my_db postgres

25,启动maxscale

docker run -d --name mxs -p 8989:8989 -p 3306:3306 -v /data/maxscale/maxscale.cnf:/etc/maxscale.cnf.d mariadb/maxscale:latest
# curl -u admin:mariadb http://localhost:8989/v1/maxscale
# docker exec -it mxs bash

26,ss

docker run -e PASSWORD=<password> -p<server-port>:8388 -p<server-port>:8388/udp -d shad偶wsocks/shad偶wsocks-libe

27,ipsec-vpn-server

docker run \
    --name ipsec-vpn-server \
    --env-file ./vpn.env \
    --restart=always \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

28,mongoDB

# 创建服务
docker run -itd --name mongo -v /data/volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth
# 登录到admin库
docker exec -it mongo mongo admin
# 设置用户名密码
db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
# [user:'root']:设置用户名为root
# [pwd:'123456']:设置密码为123456
# [role:'userAdminAnyDatabase']:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
# [db:'admin']:可操作的数据库
# [‘readWriteAnyDatabase’]:赋予用户读写权限
# 连接mongo数据库
db.auth('root', '123456')
# 测试数据库,插入一条语句
db.user.insert({"name":"zhangsan","age":18})
# 测试数据库,查询刚才插入的语句
db.user.find()

# 参考 https://blog.csdn.net/packge/article/details/126539320

29,NextCloud

docker run -d -p 8080:80 -v /data/nextcloud:/var/www/html nextcloud:latest

30,minio

docker run --name minio  --env MINIO_ROOT_USER="admin" --env MINIO_ROOT_PASSWORD="admin123" -p 9000:9000 -p 9001:9001 -v /data/minio:/bitnami/minio/data bitnami/minio:latest

31,navidrome

docker run -d --name navidrome --restart=unless-stopped -v /data/navidrome/music:/music -v /data/navidrome/data:/data -p 4533:4533 -e ND_LOGLEVEL=info deluan/navidrome:latest

32,Jellyfin

docker run -d -p 8096:8096 -p 8920:8920 -p 7359:7359/udp -p 1900:1900/udp -v /home/data/jellyfin/config:/config -v /home/data/jellyfin/cache:/cache -v /home/data/jellyfin/media:/media -e TZ=Asia/Shanghai -e PUID=0 -e PGID=0 \
--device=/dev/dri:/dev/dri \
--add-host=api.themoviedb.org:65.8.161.37 \
--add-host=api.themoviedb.org:65.8.161.83 \
--add-host=api.themoviedb.org:65.8.161.126 \
--add-host=api.themoviedb.org:65.8.161.111 \
--add-host=image.tmdb.org:169.150.249.162 \
--add-host=image.tmdb.org:138.199.37.230 \
--add-host=image.tmdb.org:108.138.246.49 \
--add-host=api.thetvdb.org:192.241.234.54 \
--add-host=api.thetvdb.org:13.225.89.239 \
--restart unless-stopped --name=Jellyfin jellyfin/jellyfin:latest
 
	#如果使用 linuxserver/jellyfin 镜像,就把最后一行替换为下行
	lscr.io/linuxserver/jellyfin:latest
	#如果使用 nyanmisaka/jellyfin  镜像,最把最后一行替换为下行
	nyanmisaka/jellyfin:latest

33,build指定平台

docker buildx build --platform linux/amd64,linux/arm64 -t registry.cn-beijing.aliyuncs.com/ejiyuan/com.yss.mall:latest .

34,拉取运行指定平台

docker run -d  -p 8085:80 --platform linux/amd64 registry.cn-beijing.aliyuncs.com/ejiyuan/com.yss.mall

35,服务器之间文件传输

scp /etc/share/test.js root@123.123.123.123:/opt/soft/test.js

36,进程最大打开文件描述符数

docker 因运存不足无法给进程分配更多的文件句柄数而异常退出,运行时报错“unable to allocate file descriptor table - out of memorylibrary initialization failed”

据说仅jdk8会出现

解决方案1:启动时加入 “ --ulimit nofile=1024”

docker run --ulimit nofile=1024 -d -p 8080:8080 docker-test:v1.0

解决方案2:#修改/lib/systemd/system/docker.service文件

LimitCORE=65535
LimitNOFILE=65535
LimitNPROC=65535

systemctl daemon-reload

systemctl restart docker

PS.参考

docker 启动报错 library initialization failed - unable to allocate file descriptor table - out of memory-CSDN博客

Docker 命令大全

Docker 命令大全

posted @ 2019-01-31 14:18  ejiyuan  阅读(339)  评论(0编辑  收藏  举报