Docker 命令汇总

Docker网络

跨主机间的容器访问

Ø  使用自定义网桥连接跨主机容器
N/A,待写
Ø  使用Ambassador实现跨主机容器
N/A, 待写
Ø  kubernetes
N/A, 待写

数据管理

Ø  把物理机的目录挂载到容器里
以交互模式启动一个容器,将物理机的/src/webapp挂载到/opt/webapp下
#sudodocker run -t -i  -v /src/webapp:/opt/webappubuntu:14.04 /bin/bash
参数解释
-v 物理机目录:容器目录:读写权限 
 其中默认的权限为可读写,  ro:只读
Ø  把物理机的文件挂载到容器里
#sudo dockerrun -t -i  -v/src/webapp/test.html:/opt/webapp/test.html ubuntu:14.04 /bin/bash
 
Ø  把容器挂载到另外一个容器
#sudo docker create -v /dbdata --name dbdata ubuntu:14.04  //创建容器
#sudodocker run -it --volumes-from dbdata ubuntu:12.04 /bin/bash //启动容器卷来自dbdata
参数解释
-volumn-from:卷来自哪个容器
 
Ø  把容器挂载作为数据备份
#sudo docker run --volumes-from dbdata -v $(pwd):/backup--name worker ubuntu tar cvf /backup/backup.tar /dbdata
命令解释
首先利用ubuntu镜像创建一个容器worker.使用—volumes-from dbdata参数来让容器挂载dbdata容器的数据卷;使用 –v $(pwd):/backup参数来挂载本机的当前目录到worker容器的/backup目录
Woker容器启动后,执行tar命令将/dbdata压缩到/backup/backup.tar,这样就到物理机的当前目录了
Ø  把容器挂载作为数据迁移
#sudo docker run -v/dbdata --name dbdata2 ubuntu /bin/bash
#sudo docker run--volumes-from dbdata2 -v $(pwd):/backup busybox tar  xvf /backup/.tar

挂载到某个容器

#sudo docker attach 容器ID

显示运行容器的进程信息

#sudo docker top 容器ID
 

从容器内部拷贝文件到物理机

#sudo docker cp cd0f61fb8256:/opt/a.html /

列出容器里被改变的文件夹或文件

#sudo docker diff 容器ID
列表解释
list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的 

Docker镜像相关命令

镜像查看

#sudo docker images  //在本机进行镜像查看
 
#sudo docker inspect 镜像ID   //查看单个镜像的具体信息,以JSON格式返回

获取镜像

# sudo docker pull centos    //从DockerHub获取镜像
 

查询镜像

#sudo docker search 镜像名称  //从DockerHub按照镜像名称模拟查询镜像

制作镜像

ü  通过Dockerfile构建镜像
#sudo cd /              //来到根“/”下
#sudo mkdir redis       //创建redis文件夹
#touch Dockerfile       //创建Dockerfile文件,文件内容见如下灰色部分
FROM        ubuntu:14.04
RUN         apt-get update && apt-getinstall -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]
 
#sudo docker build -t ningyougang/redis .     //通过dockerbuild制作镜像
参数解释
-t:tag名称
.:当前Dockerfile的路径,在此处表示当前文件夹下
 
ü  对运行着的容器commit镜像
# sudo docker commit -m "Added json gem" -a"Kate Smith" 0b2616b0e5a8 ouruser/sinatra:v2
参数解释
-m:提交注释,如此处你加了什么特别的功能
-a:作者
0b2616b0e5a8:运行着的容器ID
ouruser/sinatra:v2:给当前提交的镜像起名字并打标签
 
备注:从上面可以看出,我们可以通过dockercommit来创建镜像,但是这种方式有点凌乱而且很难复制,更好的方式是通过Dockerfile来构建镜像,因为它步骤清晰并且容易复制

给镜像打标签

#sudo docker tag 5db5f8471261 ouruser/sinatra:devel  //当commit or build后,对镜像打标签
参数解释
5db5f8471261:此处的id为镜像ID
 
备注:向私有仓库push镜像也要打标签

推送镜像到公共库DockerHub

#sudo docker push ouruser/sinatra
 
下面介绍下DockerHub
DockerHub是存放镜像的远程仓库,这里简单介绍下,如何使用
Ø  注册
首先在https://hub.docker.com/account/signup/完成帐号注册
Ø  登录
帐号注册成功后,在https://hub.docker.com/account/login/,即可登录
除了通过登录页面,您也可以通过命令行,通过指令sudo docker login登录
Ø  查询镜像
点击“Browse Repos”(或输入https://registry.hub.docker.com/),进入镜像查询页面
在此页面,您可以录入你感兴趣的镜像名称,进行模糊查询
当然你也可以通过docker search  XXX进行镜像查询
Ø  使用Docker帐号绑定GitHub帐号,进行自动化构建
需要细化,没有来得及研究

推送镜像到私有库

ü  下载私有仓库镜像
# docker pull registry           #从DockerHub下载registry镜像,里面含私库的运行环境,#当然你也可以自己下载源码包,自己安装
 
ü  推送之前打tag
# docker tag 704ca5ad68c5 192.168.202.213:5000/newtouch/activemq #打标签(必须先打标签,#在推送)
该命令格式为:docker tag $ID $IP:$port/$name。push到私库上必须先打个tag,而tag名称的格式为:$IP:$port/$name, 个人感觉此处设计不太好或我自己没有找到更好的办法。如果设计良好应该可以直接push,不用打标签.
ü  Push tag到镜像
#docker push 192.168.202.213:5000/newtouch/activemq    #将此tag推送到私有库
 
ü  Push到仓库后,远程查看
#curl http://192.168.202.213:5000/v1/search             #push之后,远程查看
 
ü  在另外一个docker客户端,从私有仓库下载
#docker pull 192.168.202.213:5000/newtouch/activemq
 
Docker tag报https错误问题解决:
vi /etc/default/docker     #红色部分是添加的部分,重启docker服务
# Docker Upstart and SysVinitconfiguration file
 
# Customize location of Dockerbinary (especially for development testing).
#DOCKER="/usr/local/bin/docker"
 
# Use DOCKER_OPTS to modify thedaemon startup options.
#DOCKER_OPTS="--dns8.8.8.8 --dns 8.8.4.4"
DOCKER_OPTS="--insecure-registry 192.168.202.213:5000"
 
# If you need Docker to use anHTTP proxy, it can also be specified here.
#exporthttp_proxy="http://127.0.0.1:3128/"
 
# This is also a handy place totweak where Docker's temporary files go.
#exportTMPDIR="/mnt/bigdrive/docker-tmp"
 

删除镜像

#sudo docker rmi 镜像ID

列出镜像的变更历史

# docker history

Docker运维相关命令

在物理机下查看有哪些容器

$ sudo docker ps       //查看有那些正在运行着的容器
 
参数解释
-l:最近的一个容器,有可能没有运行
-a:查看所有的容器,包含运行和没有运行的容器

实时打印所有容器的系统事件

#sudo docker events
 
原文地址:https://www.cnblogs.com/lexiaofei/p/7172206.html