docker 命令
Posted xia-dong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 命令相关的知识,希望对你有一定的参考价值。
docker分为docker-ce和docker-ee,docker-ce是社区免费版,docker-ee是企业收费版
一.安装docker-ce
传统安装方法是:
1.yum update #跟新yum
2.yum install -y yum-utils #安装yum-config-manager
3.yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.yum makecache
5.yum install docker-ce
由于这里用的repo是国外的,下载起来是相当的慢,所以我改成了国内的源,手动创建了简单repo如下:
[root@localhost yum.repos.d]# cat docker.repo
[docker]
name=CentOS-7-docker
baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
然后yum makecache; yum install docker-ce,比用国外的源确实快多了
三.启动docker
有两种方式都可以启动docker
1.临时性的启动,即不会随着开机而启动
dockerd &
2.永久性的启动,即开机就启动
systemctl enable docker
systemctl start docker
安装启动后,检查docker:
四. docker命令
docker info 显示Docker 系统信息,包括镜像和容器数
docker version 显示Docker版本信息
镜像仓库:
- docker pull 拉取镜像
docker pull path/name:tag #path 和tag可选,默认path是docker hub的library,默认tag是latest
参数:
-a:拉取所有tag的镜像
--disbable-content-trust :略镜像的校验,默认开启
- login/logout 登陆/退出镜像仓库
docker login [镜像仓库地址] -u user -p password #如未指定镜像仓库地址,默认登陆到Docer Hub
docker logout
- docker push 上传镜像,先要登陆到镜像仓库
docker push name:tag
参数:
--disable-content-trust ,默认开启
- docker search 从Docker Hub 查找镜像
参数:
--automated :只列出自动构建的镜像
--no-trunc :显示完整的镜像描述
-s n :列出收藏数大于n次的镜像
- docker images 同docker image ls ,列出镜像
参数:
-a:列出所有的镜像
-f:列出满足条件的镜像,例如docker ls -f before=redis:2.1 ;docker ls -f since=redis:2.1
-q:只显示镜像ID,例如docker ls -q,docker ls -q redis
--format:指定返回的模板文件
--no-trunc:显示完整的镜像信息
- docker rmi 删除镜像
参数:
-f :强制删除
- docker prune 删除未被使用的docker对象,和未被tag标记和未被容器使用的镜像
用法:
docker image prune 删除所有未被容器使用的对象和未被tag标记的对象
docker container prune 删除所有停止运行的对象
docker volume prune 删除未被挂载的卷
docker network prune 删除所有网络
docker system prune 删除所有资源
- docker tag 标记本地镜像
用法:
docker tag ubuntu:16.04 ubuntu:v1 将ubuntu 标记为ubuntu:v1镜像
- docker history 查看镜像的创建历史
- docker save; docker load; 和docker export ;docker import 保存归档镜像
用法:
docker save -o my_image.tar ubuntu:16.04 导出镜像
docker save ubuntu:16.04 > ubuntu.tar 导出镜像
docker load < ubuntu.tar 导入镜像
docker load -i ubuntu.tar 导入镜像
dcoker export ubuntu:16.04 > ubuntu.tar 导出镜像
docker import ubuntu.tar ubuntu:v1 导入镜像
- docker build 创建镜像
参数:
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式
docker build -t ubuntu:v1 使用当前目录的Dockerfile创建镜像
docker build github.com/creack/docker-firefox 使用网络上的Dockerfile创建镜像
docker build -f /home/test/Dockerfile 使用指定的Dockerfile
容器:
容器的7种状态:
created (已创建)
restarting (重启中)
running (运行中)
removing (迁移中)
paused (暂停)
exited (停止)
dead (死亡)
- docker ps 列出容器
参数:
-a :显示所有的容器,包括未运行的
-f:根据条件过滤显示的内容
--format:指定返回的模板文件
-l:显示最近创建的容器
-n 5:显示最近创建的5个容器
-q:只显示容器编号
-s:显示总的文件大小
- docker inspect 获取容器/镜像的元数据
参数:
-f :指定返回的模板文件
-s:显示总文件大小
--type:为指定类型返回JSON
- docker top 查看容器中运行的进程信息
有时并不一定要进入容器执行top,而且容器不一定有top命令,这时可以用docker top来查看容器中正在运行的进程
用法:
docker top 【container】
- docker attach 连接到正在运行的容器
可以同时attach 同一个容器来屏幕共享,与screen 命令类似
Ctrl-C可以detach 容器,为了避免Ctrl-C退出容器时将正在运行的进程也退出了,可以加上--sig-proxy=false,Ctrl-C的信号直接被docker attach响应
用法:
docker attach 【container】
- docker events 从服务器获取实时事件
参数:
-f:根据条件过滤
--since:显示指定时间后面的事件
--until:显示到指定的时间为止
- docker logs 获取容器日志
参数:
-f:日志输出,例如docker logs -f mynginx
--since:指定时间后的所有日志
-t:显示时间戳
--tiai n :列出最新的n条日志,例如docker logs --since "2016-07-01" --tail=10 mynginx
- docker wait 等待容器运行并打印容器退出的状态码
用法:
docker wait container
- docker port 查看端口映射
用法:
docker port mymysql
=>3306/tcp -> 0.0.0.0:3306
- docker commit 从容器创建一个新的镜像
参数:
-a :提交镜像的作者
-c :使用Dockerfile来创建镜像
-m:提交时的说明文字
-p: 在commit时将容器暂停
- docker cp 容器与主机之间的数据拷贝
参数:
-L :保持源目标中的链接
用法:
docker cp src_file container:/dst_file
- docker diff 检查容器里文件结构的更改
用法:
docker diff container
- docker run 创建一个新的容器
参数:
-a stdin :指定标准输入输出类型,可选STDIN,STDOUT,STDERR
-d:后台运行
-i:以交互模式运行,通常与-t一起使用,例如docker run -i -t mysql:v1 /bin/bash
-P:随机端口映射
-p:指定端口映射,主机端口:容器端口
-t:分配一个终端,通常与-i一起使用
--name:为容器指定一个名称
--dns:指定容器的dns,默认和主机一致
--dns-search example.com:指定容器DNS搜索域名,默认和主机一致
-h: 指定容器的hostname
-e :设定容器的环境变量
--env-file=[]:从指定文件读入环境变量
--cpuset="0,1,2,25-27":绑定CPU 的core
-m:设置容器使用最大内存
--net="bridge":指定容器连接的网络类型,可选bridge;host;none;container
--link=[]:添加链接到令一个容器
--expose=[]:开发一个端口或一组端口
--volume,-v:绑定一个卷
- docker start/stop/restart 启动/停止/重启 容器
- docker kill 杀掉一个运行中的进程
参数:
-s:向容器发送一个信号,例如docker kill -s KILL mysql:v1
docker kill 与docker stop区别:
docker kill :强制终止容器运行,类似与断电重插
docker stop:尝试让容器停止运行,类似与reboot
- docker rm 删除容器
参数:
-f:强制删除
-l:删除容器间的网络连接
-v:删除容器关联的卷
docker pause/unpasu 暂停/恢复 容器中所有的进程
docker create 创建一个新的容器但不启动它
docker exec 在运行的容器中执行命令
参数:
-d:在后台运行
-t:分配一个终端
-i:保持STDIN打开
用法:
docker exec -it mysql:v1 /bin/bash /test/sh
docker exec -it containerID /bin/bash 进入容器
- docker system df #查看镜像体积
由于镜像是分层存储的,可以继承,复用,所以不同的镜像可以使用相同的基础镜像,所以docker images 列表中的所有像体积总和并非是所占的硬盘空间大小
以上是关于docker 命令的主要内容,如果未能解决你的问题,请参考以下文章