1.安装配置
实现环境:
~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
~]# uname -r
3.10.0-862.el7.x86_64
注:由于在内核2.6版本后才支持docker,请使用内核版本高于2.6的系统搭建。
1.1 版本选择
yum安装的是1.13版本,我们这儿选择较新版本安装。
~]# yum list docker
...
docker.x86_64 2:1.13.1-75.git8633870.el7.centos extras
~]# wget -c -P /etc/yum.repos.d/ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
~]# vim /etc/yum.repos.d/docker-ce.repo
:%s@download.docker.com@mirrors.tuna.tsinghua.edu.cn/docker-ce#g #批量替换
注:因为下载的repo文件中提供的地址是docker官网,下载速度很慢,这儿替换为清华的docker镜像。也可以直接下载某个版本的rpm包进行安装。
1.2 镜像加速
由于默认镜像仓库dockerhub在国外,设置镜像加速加快访问,可添加多个,用","隔开。且配置文件默认不存在,需要手动创建。国内镜像加速站点有很多,这儿使用docker cn。
~]# mkdir /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"]
}
1.3 安装docker
~]# yum install -y docker-ce
~]# systemctl start docker
注:最新版本使用docker-ce ,默认直接yum docker即可。
查看版本信息:
~]# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:03 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:25:29 2018
OS/Arch: linux/amd64
Experimental: false
2.基础命令
docker在较新版本中引入了一类管理命令,但仍兼容了以前版本的命令,具体可help查看,以下仍使用老版本的命令。
镜像操作:
1.拉取镜像
Usage:
docker pull [registry][:port]/[namespace/]<name>[:tag]
registry :使用什么镜像仓库,默认为dockerhub。
port :镜像仓库端口
namespace :不填写,默认为官方提供的镜像
name :镜像名称,必填
tag :标签,默认为latest(最新)
示例:
docker pull busybox #拉取最新的busybox镜像
2.查看镜像
Usage:
docker images [options] [repository[:tag]]
示例:
docker images #查看本机所有镜像
3.删除镜像
Usage:
docker rmi [options] image [image...]
示例:
docker rmi busybox:latest #删除本机busybox:latest 镜像
docker rmi -f busybox:latest #强制删除,即有容器在使用也删除该镜像
4.镜像标签
Usage:
docker tag [options] image[:tag] [registryhost/][username/]name[:tag]
示例:
docker tag nginx:latest test/web:v0.1 #标记本地镜像,将其归入某一仓库。
5.镜像导出
Usage:
docker save [options] image [image...]
示例:
docker save -o /tmp/nginx-latest.tar.gz nginx:latest #将镜像导出到本地/tmp目录下
6.镜像导入
Usage:
docker load [options] image [image...]
示例:
docker load -i /tmp/nginx-latest.tar.gz #将本地镜像文件导入
7.查看镜像信息
Usage:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
示例:
docker inspect nginx #查看nginx镜像信息
容器操作:
容器操作图示:
1.运行容器
Usage:
docker run [options] image [command] [arg...]
options:
-a : 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
-d : 后台运行容器,并返回容器ID
-i : 以交互模式运行容器,通常与 -t 同时使用
-p : 端口映射,格式为:主机(宿主)端口:容器端口
-P : 开启镜像所有端口随机映射要宿主机
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-h : 指定容器的hostname
-e : username="ritchie" 设置环境变量
-m : 设置容器使用内存最大值
-v : 绑定挂载目录
--name : --name="nginx-lb" 为容器指定一个名称
--dns : --dns=8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致
--dns-search : 指定容器DNS搜索域名,默认和宿主一致
--env-file : 从指定文件读入环境变量;
--cpuset : --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
--net : --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container 四种类型
--link : 添加链接到另一个容器
--expose : 开放一个端口或一组端口
示例:
使用镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run --name mynginx -P -d nginx:latest
使用镜像nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 8080 端口,
主机的目录 /usr/data 映射到容器的 /data。
docker run --name mynginx -p 127.0.0.1:8080:80 -v /usr/data:/data
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run --name mynginx -it nginx:latest /bin/bash
2.创建容器
Usage:
docker create [options] image [command] [arg...]
示例:
docker create --name mynginx nginx:latest #创建容器但不运行
3.启动容器
Usage:
docker start [options] container [container...]
示例:
docker start mynginx
4.停止容器
Usage:
docker stop [options] container [container...]
示例:
docker stop mynginx
5.重启容器
Usage:
docker restart [options] container [container...]
示例:
docker restart mynginx
6.杀掉容器
Usage:
docker kill [options] container [container...]
options:
-s :向容器发送一个信号
示例:
docker kill -s KILL mynginx #杀掉运行中的容器mynginx
7.暂停容器
Usage:
docker pause [options] container [container...]
示例:
docker pause mynginx #暂停容器中所有的进程。
8.恢复容器
Usage:
docker unpause [options] container [container...]
示例:
docker unpause mynginx #恢复容器中所有的进程。
9.删除容器
Usage:
docker rm [options] container [container...]
options:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :删除与容器关联的卷
示例:
docker rm mynginx #删除mynginx容器,但容器在运行则删除失败
docker rm -f mynginx #强制删除容器,运行中容器也能删除
10.查看容器
Usage:
docker ps [options]
options:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
--format :指定返回值的模板文件。
--no-trunc :不截断输出。
示例:
docker ps #查看所有运行中的容器
docker ps -a #查看所有容器,未运行的也显示
docker ps -n 5 #查看最近创建的5个容器
docker ps -a -q #显示所有容器编号
11.容器信息查询
Usage:
docker inspect [options] container | ID
options:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
示例:
docker inspect mynginx
docker inspect -f {{.NetworkSettings.IPAddress}} mynginx #显示ip,使用go模板
#"."表示根,NetworkSettings段下的IPAddress信息,从inspect信息中提取
12.容器运行进程信息
Usage:
dokcer top [options] container [ps options]
示例:
docker top mynginx
13.获取容器日志
Usage:
docker logs [options] container
options:
-f : 跟踪日志输出
-t : 显示时间戳
--since :显示某个开始时间的所有日志
--tail :仅列出最新N条容器日志
示例:
docker logs -f mynginx
docker logs --since="2018-08-01" --tail=10 mynginx
14.查看端口映射
Usage:
docker port [options] container [private_port[/proto]]
示例:
docker port mynginx #查看mynginx容器开放的端口,前提是容器要开放端口才能查看到
15.容器与宿主机文件拷贝
Usage:
docker cp [options] container:src_path dest_path
docker cp [options] src_path container:dest_path
示例:
docker cp mynginx:/usr /tmp/ #将容器中的/usr目录拷贝到宿主机/tmp/下
16.进入容器
Usage:
docker exec [options] container command [arg...]
options:
-d: 以后台方式执行命令
-e: 设置环境变量
-i: 交互模式
-t: 设置TTY
-u: 用户名或UID,例如myuser:myusergroup
示例:
docker exec -it mynginx sh #开启一个交互模式的终端
更多命令参考:http://www.runoob.com/docker/docker-command-manual.html