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 imagesdocker 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:绑定一个卷

 –privileged=true :

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器

  • 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 列表中的所有像体积总和并非是所占的硬盘空间大小

补充:ctrl+P+Q 退出容器不关闭容器,一般情况exit 退出容器后,容器就关掉了

原文地址:https://www.cnblogs.com/xia-dong/p/11559875.html