总图例

命令总结
1.查看所有镜像:
docker images
2.查看当前运行的容器:
docker ps
3.查看当前服务器中所有运行过的容器:
docker ps -a
4.运行容器:
docker run [options] 镜像id/镜像名 [command]
[options] : --name 容器名
-d 后台运行
-it 交互模式运行, 若无此参数, 容器不能在后台运行时维持
-p 指定端口
-P 随机指定端口
-v 挂载容器卷
--net docker0/mynet 挂载网络
[command] : /bin/bash 控制台
/bin/sh 命令行
...
5.进入正在后台运行的容器
docker exec -it 容器id/容器名
6.进入正在后台运行的容器的命令行
docker attach 容器id/容器名
7.dockerHub 搜索镜像
docker search name(mysql)
8.拉取镜像
docker pull name(redis)
9.退出容器
exit 如果是后台运行,则维持容器状态,前台运行则停止容器
ctrl+p+q 就算前台运行也可以保持状态
10.改变容器状态
docker start/stop/kill/restart
11.查看容器信息
docker inspect 容器id/容器名
12.查看容器进程
docker top 容器id/容器名
13.删除容器
docker rm 容器id/容器名
14.删除镜像
docker rmi 镜像id/镜像名
15.删除所有容器
docker rm -f $(docker images -aq)
16.从容器中拷贝文件到主机
docker cp 容器名/id:容器内路径 主机文件路径
17.创建卷,创建后可以使用这个卷对容器内的某路径进行挂载
docker volume create v_name
18.删除卷
docker volume rm v_name
19.查看所有卷
docker volume ls
20.删除所有卷
docker volume prune
21.挂载两个容器
docker run -it --name container01 --volumes-from container02 镜像id/镜像名
22.重新打包镜像
docker tag 已拥有镜像 新镜像
23.根据dockerfile构建镜像
docker build -f 文件路径 -t 标签 .
* 末尾.不可略
24.登陆dockerhub
docker login
25.提交修改的镜像
docker commit -m="描述信息" -a="作者" 容器id/容器名 tag标签名
* 提交一个新的容器为新的镜像
26.发布镜像到dockerhub
docker push 镜像id/镜像名
* 这里的镜像名如果是dockerhub 需要写成 dockerhub_id/... 如果是阿里云,建立命名空间镜像仓库后参照文档即可
27.查看所有网络
docker network ls
28.查看某个网络
docker network inspect bridge
29.使用docker0进行单向网络连接
docker run -d -P --link 容器名/id 镜像名/id
30.自定义网络
docker network create --driver 网络模式(bridge/..) --subnet 自定义ip(192.168.0.0/16) --gateway 网关地址 网络名(mynet)
* /16代表后两位 255*255=25535个ip /24则只有一位255个ip
* 在启动容器 run 的时候使用 --net可将容器加入指定网络
* 每个容器都可以有多个网络,如此就解决了不同网段的容器间通信问题
dockerfile 指令
FROM
MAINTAINER
RUN
ADD
WORKDIR
VOLUME
EXPOSE
CMD
ENTRYPOINT
ONBUILD
COPY
ENV
docker部署分片高可用redis脚本
# 创建网卡
docker network create redis --subnet 172.38.0.0/16
# 通过脚本创建六个redis配置
for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >> /mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
# 通过脚本运行六个redis
for port in $(seq 1 6);\
do \
docker run -p 637${port}:6379 -p 1667${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done
docker exec -it redis-1 /bin/sh #redis默认没有bash
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1