Docker常用命令
1. 帮助命令
systemctl start docker 启动Docker
docker ps 查看当前正在运行的容器
docker ps -a 查看所有容器的状态
docker version
docker info
docker --help #docker帮助指令
docker exec -it 容器id /bin/bash
docker commit -a="zhazha" -m="delete docs" ca6fd1a3bf91 dokcer/tomcat:1.0
docker run -it -v /宿主机绝对路径目录:/容器内目录?镜像名
docker build -f ./Dockerfile -t zzmm/centos .
docker run -it --name dc01 zzmm/centos
docker run -it --name dc02 --volumes-from dc01 zzmm/centos
2.镜像命令
docker images 列出本地所有镜像
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像ID
CREATED 镜像创建时间
SIZE 镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
OPTIONS说明:
-a 列出本地所有的镜像(含中间层映象层)
-q 只显示镜像ID
-qa 所有镜像ID
–digests 显示镜像的摘要信息
–no-trunc 显示完整的镜像信息
docker search[OPTIONS] 镜像名 搜索相关镜像
OPTIONS:
--no-trunc:显示完整的镜像描述
-s:列出收藏数不小于指定值的镜像,选出至少start数范围的镜像
--automated 只裂池automated build类型的镜像
例如: docker search -s 30 tomcat
docker pull(-a) 镜像名:版本号 拉取镜像,-a pull all
例如:docker pull tomcat 等价于 docker pull tomcat:latest
docker push 192.168.0.100:5000/ubuntu 推送镜像库到私有源
docker rmi(-f) 镜像名:版本号/镜像ID 删除镜像 (加上 -f 参数 强制删除)
docker rmi $(docker images -q) 删除所有镜像
docker rmi $(docker images | grep "none" | awk '{print $3}') 删除所有名字中带
“none” 关键字的镜像
docker save docker.io/tomcat:7.0.77-jre7 >/root/mytomcat7.tar.gz 导出镜像
docker load < /root/mytomcat7.tar.gz 导入镜像
3.容器命令
docker ps 查看当前正在运行的容器
docker inspect name/image[name/image...] 查看详细
docker ps -a 查看所有容器的状态(正在运行+历史上运行过的)
docker ps -l 查看上一个运行的容器
docker ps -n 3 查看上个运行的容器
docker run -it --name mycentos007 取别名运行容器
退出
exit 退出并关闭容器 (后面要用需重启)
ctrl + q + p 退出当前容器,回到宿主机
docker start/stop(-t) id/name[name...] 启动/停止某个(多个)容器 -t 指定时间
docker kill (-s) name[name...] 强制中断 -s指定SIGINT信号类型,默认“kill”
docker restart (-t) name[name...] 重启 -t 指定时间
docker pause name 暂停 docker unpause name 继续
docker rm(-$) name[name...] 移除
-f --force=false 强制移除运行中容器
-l --link=false 移除指定链接,保留底层容器
-v --volumes=false 移除容器关联卷
docker rm -f $(docker ps -a -q) 批量强制删除(慎用)
docker ps -a -q | xargs docker rm 批量强制删除(慎用)
【重要】
启动交互式容器,并在容器执行/bin/bash命令
docker run -it centos /bin/bash
启动守护式容器
docker run -d 容器名 #后台运行
docker ps -a 进行查看,会发现容器已经退出
说明:Docker 容器后台运行,就必须有一个前台进程
容器运行的命令如果不是那些一直挂起的命令(比如top,tail),就会自动退出的。
这是docker机制的问题,docker中容器以后台模式运行,会导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得没事儿做
所以我们可以以前台进程的模式运行
查看容器日志
docker logs(-$) name 输出指定容器日志信息
-f 跟踪日志输出
-t 显示时间戳 类似 tail -f
--tail 在日志的末尾输出指定行数日志(默认所有日志)
· 例如:docker logs -t -f --tail 3 容器ID
查看容器内运行的进程
查看容器内部细节
docker inspect 容器ID #打印的内容是Json字符串的形式展示
进入正在运行的容器并以命令行交互
docker attach id 进入某个容器(使用exit退出后容器也跟着停止运行)
docker exec -ti id 启动一个伪终端以交互式的方式进入某个容器
(使用exit退出后容器不停止运行)
区别:
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
docker commit(-$)name 镜像名:版本号 提交指定容器为镜像
-a, --author="" 作者
-m, --message="" 简要说明
-p, --pause=true 暂停容器再提交
【 docker run(-$) IMAGE [COMMAND] [ARG...] 运行一个容器
-d 指定容器运行于前台还是后台,默认为false
-i 打开STDIN,用于控制台交互,默认为false
-t 分配tty设备,该可以支持终端登录,默认为false
-u, --user="" 指定容器的用户
-a, --attach=[] 登录容器(必须是以docker run -d启动的容器)
-w 指定容器的工作目录
-c 设置容器CPU权重,在CPU共享场景使用
-e, --env=[] 指定环境变量,容器中可以使用该环境变量
-m 指定容器的内存上限
-P, --publish-all=false 指定容器暴露的端口
-p, --publish=[] 指定容器暴露的端口
-h 指定容器的主机名
-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[] 添加权限
--cap-drop=[] 删除权限
--cidfile="" 运行容器后,在指定文件中写入容器PID值,监控系统用法
--cpuset="" 设置容器可使用哪些CPU,此参数可以用来容器独占CPU
--device=[] 添加主机设备给容器,相当于设备直通
--dns=[] 指定容器的dns服务器
--dns-search=[] 指定容器的dns搜索域名,写入到容器/etc/resolv.conf文件
--entrypoint="" 覆盖image的入口点
--env-file=[] 指定环境变量文件,文件格式为每行一个环境变量
--expose=[] 指定容器暴露的端口,即修改镜像的暴露端口
--link=[] 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name="" 指定容器名字,links特性需要使用名字
--net="bridge" 容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >
//使用其他容器的网路共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge)
--privileged=false 指定容器是否为特权容器,特权容器拥有所有的权限
--restart="no" 指定容器停止后的重启策略:
no: 容器退出时不重启
on-failure: 容器故障退出(返回值非零)时重启
always: 容器退出时总是重启
--rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true 设置由代理接受并处理信号,SIGCHLD,SIGSTOP和SIGKILL不代
例:
docker run -i -t centos6.8 进入到默认的线程”/bin/bash”,直接进入控制台操作
docker run -i -t -d centos6.8 进入到默认的线程”/bin/bash”,后台运行
docker run -d --restart=always centos6.8 ping www.docker.com 带命令启动
docker run -d --name=server-dbcentos6.8-mysql /usr/bin/mysql_safe -d
容器的名称为server-db,同时激活了数据库mysql的后台线程
docker run -d --name=server-db -p 3306:3306 -v /server/mysql-data:/
mysql-datacentos6.8-mysql /usr/bin/mysql_safe –d
将宿主机的数据库目录/server/mysql-data挂载到server-db上
docker run -d --name=server-db -p 3306:3306 centos6.8-mysql
/usr/bin/mysql_safe –d 服务器宿主机与容器端口映射并暴露
docker run -d --name=server-http --link=server-db -p 8080:80centos6.8-httpd
/usr/bin/httpd --DFOREGROUND
映射服务器宿主机的8080端口,关联service-db
docker run -it --rm centos6.8 容器进程结束后,立马自动删除
3.docker option
--api-enable-cors=false 在远程API中启用CORS 头
-b, --bridge="" 桥接网络 使用“none” 禁用容器网络
--bip="" 网桥模式
-d, --daemon=false 守护者模式
-D, --debug=false debug 模式
--dns=[] 强制 docker 使用指定 dns 服务器
--dns-search=[] 强制 docker 使用指定 dns 搜索域
-e, --exec-driver="native" 强制 docker 运行时使用指定执行驱动器
--fixed-cidr="" 固定IP的IPv4子网(例: 10.20.0.0/16)必须镶套在桥子网
中(由-b or --bip定义)
-G, --group="docker" 当在守护模式中运行时,组指向-H指定的unix套接字。
使用""禁用组设置。
-g, --graph="/var/lib/docker" 容器运行的根目录路径
-H, --host=[] 套接字绑定到守护模式。使用一个或多个tcp://主机:端
口,unix:///路径/到/套接字,fd://*或fd://socketfd.
--icc=true inter-container跨容器通信
--insecure-registry=[] 使用指定的注册表启用不安全通信(没有HTTPS的证书验
证和启用HTTP回退)(例如,localhost:5000或10.20.0 /16)
--ip="0.0.0.0" 绑定容器端口时使用的IP地址
--ip-forward=true 使用net.ipv4.ip_forward转发
--ip-masq=true 使IP伪装成桥的IP范围
--iptables=true 启用Docker添加iptables规则
--mtu=0 设置容器网络mtu
-p, --pidfile="/var/run/docker.pid" 指定守护进程pid文件位置
--registry-mirror=[] 指定一个首选的镜像仓库(加速地址)
-s, --storage-driver="" 强制 docker 运行时使用指定存储驱动
--selinux-enabled=false 开启 selinux 支持
--storage-opt=[] 设置存储驱动选项
--tls=false 开启 tls
--tlscacert="/root/.docker/ca.pem" 只信任提供CA签名的证书
--tlscert="/root/.docker/cert.pem" tls 证书文件位置
--tlskey="/root/.docker/key.pem" tls key 文件位置
--tlsverify=false 使用 tls 并确认远程控制主机
-v, --version=false 输出 docker 版本信息