镜像
获取镜像
docker pull 镜像服务器地址/镜像名称:版本号
查看镜像
docker images
删除镜像
普通删除
docker rmi 镜像名称或ID
强行删除镜像
docker rmi -f 镜像名称或ID
创建镜像
基于已有镜像的容器创建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
CONTAINER:容器ID
主要选项包括:
-a, --autor="" 作者信息
-m, --message="" 提交信息
-p, --pause=true 提交时容器暂停运行
保存镜像
如保存本地centos:0.1镜像为文件centos_0.1.tar
docker save -o centos_0.1.tar centos:0.1
载入镜像
docker load -- input centos_0.1.tar
或 docker load < centos_0.1.tar
容器
创建容器
1.普通方式
docker create -it 镜像名称:TAG
docker start
2.新建并启动容器
docker run -t -i centos:7 /bin/bash
-t:让Docker分配一个伪终端并绑定到容器的标准输入上
-i:让容器的标准输入保持打开
用户可以按ctrl+D或输入exit退出容器,退出后容器自动停止运行
终止容器
docker stop 容器ID
docker restart
可重启容器
进入容器
attach命令
docker run -idt centos docker attach 容器NAMES
exec命令
docker exec -ti 镜像ID /bin/bash
nsenter工具
删除容器
docker rm 容器ID
如果需要强制删除容器则加上-f参数
docker rm -f 容器ID
导入和导出容器
导出容器
docker export CONTAINER > 快照文件.tar
导入容器
cat 容器快照.tar | docker import 容器快照.tar
仓库
拉取镜像
docker pull daocloud.io/library/registry:latest
-
启动私有仓库
2.1 语法
docker run -p 5000:5000 -v <HOST_DIR>:/var/lib/registry daocloud.io/registry
2.2 示例:
docker run -d -v /home/docker_repo:/var/lib/registry -p 5000:5000 --restart=always --name registry daocloud.io/library/registry
验证仓库是否启动
输入http://127.0.0.1:5000/v2/
,如果出现界面则正常根据已有镜像打TAG
docker tag hello-world 127.0.0.1:5000/hello-world
上传镜像
docker push 127.0.0.1:5000/hello-world
验证镜像是否上传成功
输入http://127.0.0.1:5000/v2/_catalog
,如果出现界面则正常从仓库中下载镜像
docker rmi hello-world
docker pull 127.0.0.1:5000/hello-world
数据管理
挂载一个主机目录作为数据卷
docker run -ti -v /localhost/dbdata:/usr/dbdata centos:0.1 /bin/bash
- "/localhost/dbdata"是主机本地目录
- "/usr/dbdata"是容器内的目录,如果目录不存在,容器会自动创建
数据卷容器
由已有镜像创建一个数据卷
docker run -it -v /dbdata --name dbdata daocloud.io/centos
创建新的容器并挂载已有数据卷
docker run -it --volumes-from dbdata --name db1 daocloud.io/centos
docker run -it --volumes-from dbdata --name db1 daocloud.io/centos
删除容器同时删除数据卷
docker rm -v db1
相关中间件
Redis
1.指定配置文件及持久化目录
docker run -d --net=host --volumes-from redis-data -v /home/docker_repo/redis/conf/redis-16379.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
Zookeeper
docker run -d -p 12181:2181 -e ZOO_SERVERS='server.1=0.0.0.0:2181' --name zookeeper daocloud.io/library/zookeeper
RabbitMQ
启动RabbitMQ
docker run -d --hostname my-rabbit --name some-rabbit daocloud.io/rabbitmq:3启动带有WEB控制台的RabbitMQ
docker run -d --net=host --name my-rabbit daocloud.io/rabbitmq:3-management