Docker 常用的一些命令
#docker run -i -t ubuntu /bin/bash
root@80952d0ecfba:/# apt-get update
root@80952d0ecfba:/# apt-get install vim
root@80952d0ecfba:/# apt-get install git
root@80952d0ecfba:/# apt-get install wget
root@80952d0ecfba:/# exit
#docker ps -a
#列出最近一次启动的container
#docker commit --author="amazing_bing@outlook.com" 71a95aa007f1 docker/test
#命令中,指定了要提交的修改过的容器的ID、目标镜像仓库、镜像名。commit提交的知识创建容器的镜像与容器的当前状态之间的差异部分,很轻量。
#docker images
#查看新创建的镜像
#docker rmi docker/test
#删除镜像文件
#docker rm `docker ps -a -q`
#删除所有容器
推送自己的镜像文件
# docker login
# docker tag centos6.3-base frankzfz/centos6.3-base
#重命名自己的docker镜像名称
#docker push frankzfz/centos6.3-base:latest
#推送
#docker run -d -p 8080:5000 frankzfz/centos6.3-base
#-d 表示守护形式后台一直运行该容器
#-p 80:8080 Dockerfile 中暴露了容器的 8080 端口,将其映射到本机的 80 端口
docker参数详解
Useage of docker
-D默认false允许调试模式(debugmode)
-H默认是unix:///var/run/docker.sock tcp://[host[:port]]来绑定或者unix://[/path/to/socket]来使用(二进制文件的时候),当主机ip host=[0.0.0.0],(端口)port=[4243]或者path=[/var/run/docker.sock]是缺省值,做为默认值来使用
-api-enable-cors默认flase允许CORS header远程api
-b默认是空,附加在已存在的网桥上,如果是用'none'参数,就禁用了容器的网络
-bip默认是空,使用提供的CIDR(ClasslessInter-Domain Routing-无类型域间选路)标记地址动态创建网桥(dcoker0),和-b参数冲突
-d默认false允许进程模式(daemonmode)
-dns默认是空,使docker使用指定的DNS服务器
-g默认是"/var/lib/docker":作为docker使用的根路径
-icc默认true,允许inter-container来通信
-ip默认"0.0.0.0":绑定容器端口的默认Ip地址
-iptables默认true禁用docker添加iptables规则
-mtu默认1500 :设置容器网络传输的最大单元(mtu)
-p默认是/var/run/docker.pid进程pid使用的文件路径
-r默认是true重启之前运行的容器
-s默认是空,这个是docker运行是使用一个指定的存储驱动器
-v默认false打印版本信息和退出
7、docker run命令详解
Usage: docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
Run a command in a new container
-a=map[]:附加标准输入、输出或者错误输出
-c=0:共享CPU格式(相对重要)
-cidfile="":将容器的ID标识写入文件
-d=false:分离模式,在后台运行容器,并且打印出容器ID
-e=[]:设置环境变量
-h="":容器的主机名称
-i=false:保持输入流开放即使没有附加输入流
-privileged=false:给容器扩展的权限
-m="":内存限制(格式:, unit单位= b, k, m or g)
-n=true:允许镜像使用网络
-p=[]:匹配镜像内的网络端口号
-rm=false:当容器退出时自动删除容器(不能跟-d一起使用)
-t=false:分配一个伪造的终端输入
-u="":用户名或者ID
-dns=[]:自定义容器的DNS服务器
-v=[]:创建一个挂载绑定:[host-dir]:[container-dir]:[rw|ro].如果容器目录丢失,docker会创建一个新的卷
-volumes-from="":挂载容器所有的卷
-entrypoint="":覆盖镜像设置默认的入口点
-w="":工作目录内的容器
-lxc-conf=[]:添加自定义-lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
-sig-proxy=true:代理接收所有进程信号(even in non-tty mode)
-expose=[]:让你主机没有开放的端口
-link="":连接到另一个容器(name:alias)
-name="":分配容器的名称,如果没有指定就会随机生成一个
-P=false: Publish all exposed ports to thehost interfaces公布所有显示的端口主机接口
docker常用命令总结
docker pull <镜像名:tag> #从官网拉取镜像
docker search <镜像名> #搜索在线可用镜像名
查询容器、镜像、日志
docker top #显示容器内运行的进程
docker images #查询所有的镜像,默认是最近创建的排在最上。
docker ps #查看正在运行的容器
docker ps -l #查看最后退出的容器的ID
docker ps -a #查看所有的容器,包括退出的。
docker logs {容器ID|容器名称} #查询某个容器的所有操作记录。
docker logs -f {容器ID|容器名称} #实时查看容易的操作记录。
删除容器与镜像
docker rm$(docker ps -a -q)#删除所有容器
docker rm <容器名or ID> #删除单个容器
docker rmi #删除单个镜像
docker rmi$(docker images | grepnone| awk'{print $3}'| sort -r)#删除所有镜像
启动停止容器
docker stop <容器名or ID> #停止某个容器
docker start <容器名or ID> #启动某个容器
docker kill <容器名or ID> #杀掉某个容器
容器迁器
docker export > /home/export.tar #导出
cat /home/export.tar | sudo docker import - busybox-1-export:latest #导入export.tar文件
docker save debian> /home/save.tar#将debian容器打包
docker load< /home/save.tar#在另一台服务器上加载打包文件
save和export的对比参考地址:
运行一个新容器
#运行一个新容器,同时为它命名、端口映射。以debian02镜像为例
docker run -h="redis-test" --name redis-test -d -p 51000:22 -p51001:3306 -p 51003:6379 -p 51004:6381 -p 51005:80 -p 51006:8000 -p 51007:8888 debian02 /etc/rc.local
#从container中拷贝文件,当container已经关闭后,在里面的文件还可以拷贝出来。
sudo docker cp 7bb0e258aefe:/etc/debian_version .#把容器中的/etc/debian_version拷贝到当前目录下。
docker Dockfile镜像制作
root@yangrong:/data# cat Dockerfile
FROM ubuntu/testa #这是基础镜像
CMD ["/root/start.sh"] #这是启动命令
root@yangrong:/data# docker build -t <新镜像名> ./ #生成新的镜像
Dockerfile 用于编写一个镜像,下面创建了一个新的 Docker 镜像:
from ubuntu:latest# 基于 ubuntu:latest
ENV HOSTNAME=changkun# 设置 HOSTNAME 环境变量
通过docker build构建新镜像:
$docker build -t changkun .
其中-t changkun指定了镜像的名字, .标志从当前目录查找 Dockerfile。
0x03 Dockfile更多参数参考:
网友评论