镜像加速器
安装方法参见上一篇文章
Docker安装。
当运行容器时,使用的镜像如果在本地中不存在,Docker 就会自动从 Docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。可以使用阿里云的镜像加速器。
前往https://cr.console.aliyun.com/注册/登录阿里云,左侧列表里就有镜像加速器地址。
操作方法:
//Ubuntu
//修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
//Windows
//针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:
创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。
docker-machine create --engine-registry-mirror=https://xxxxxxx.mirror.aliyuncs.com -d virtualbox default
//查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。
docker-machine env default
eval "$(docker-machine env default)"
docker info
//针对安装了Docker for Windows的用户,您可以参考以下配置步骤:
在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。将加速器地址添加到Registry mirrors窗口内。
//编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。
镜像
列出镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
options:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- --format :指定返回值的模板文件;
- --no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。
查找镜像
docker search [OPTIONS] TERM
options:
- --automated :只列出 automated build类型的镜像;
- --no-trunc :显示完整的镜像描述;
- -s :列出收藏数不小于指定值的镜像
列出镜像所有tag
找到一个很好的python脚本:
#!/usr/bin/env python3
import argparse
import json
import requests
def get_token(auth_url, image_name):
payload = {
'service': 'registry.docker.io',
'scope': 'repository:library/{image}:pull'.format(image=image_name)
}
r = requests.get(auth_url + '/token', params=payload)
if not r.status_code == 200:
print("Error status {}".format(r.status_code))
raise Exception("Could not get auth token")
j = r.json()
return j['token']
def fetch_versions(index_url, token, image_name):
h = {'Authorization': "Bearer {}".format(token)}
r = requests.get('{}/v2/library/{}/tags/list'.format(index_url, image_name),
headers=h)
return r.json()
if __name__ == "__main__":
p = argparse.ArgumentParser()
p.add_argument('name', help='Name of image to list versions of')
p.add_argument('-t', '--token',
help='Auth token to use (automatically fetched if not specified)')
p.add_argument('-i', '--index-url', default='https://index.docker.io')
p.add_argument('-a', '--auth-url', default='https://auth.docker.io')
args = p.parse_args()
token = args.token or get_token(auth_url=args.auth_url, image_name=args.name)
versions = fetch_versions(args.index_url, token, args.name)
print(json.dumps(versions, indent=2))
拖取/更新镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
options:
- -a :拉取所有 tagged 镜像
- --disable-content-trust :忽略镜像的校验,默认开启
从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options:
- -m:提交的描述信息
- -a:指定镜像作者
- -p:在提交期间暂停容器
- -c :使用Dockerfile指令来创建镜像;
例:
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
设置镜像标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
将镜像ubuntu:15.10标记为 ubuntu111:v3 镜像:
docker tag ubuntu:15.10 ubuntu111:v3
保存镜像为tar
docker save [OPTIONS] IMAGE [IMAGE...]
options:
- -o:输出到文件
将镜像ubuntu:v3 生成my_ubuntu_v3.tar文档:
docker save -o my_ubuntu_v3.tar ubuntu:v3
载入容器包为镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
options:
- -c :应用docker指令创建镜像
- -m :提交时的说明文字
从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为ubuntu:v4:
docker import my_ubuntu_v3.tar ubuntu:v4
载入镜像包为镜像
docker load [OPTIONS]
options:
- -i :从tar文件中读取而不是从STDIN
- -q :静默模式
删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
options:
- -f :强制删除
- --no-prune :不移除该镜像的过程镜像,默认移除
容器
创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
options:
- -d:让容器在后台运行。
- -P:将容器内部使用的网络端口映射到我们使用的主机上。
- -i :允许你对容器内的标准输入 (STDIN) 进行交互。
- -t :分配一个伪终端
创建一个带有交互伪终端的容器:
docker run -i -t ubuntu:15.10 /bin/bash
后台运行app.py并将容器5000端口映射到主机的5000端口:
docker run -d -p 5000:5000 training/webapp python app.py
后台运行php环境,映射宿主82到容器80,挂载目录并启动apache和bash
docker run -dt --name php -p:82:80 -v /Users/joe/www:/var/www --rm 6416 sh -c 'service apache2 start && /bin/bash'
返回但不退出容器
按住Ctrl+p+q
列出容器
docker ps [OPTIONS]
options:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- --format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- --no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
列出指定的容器的端口映射
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
获取容器的日志
docker logs [OPTIONS] CONTAINER
options:
- -f : 跟踪日志输出
- --since :显示某个开始时间的所有日志
- -t : 显示时间戳
- --tail :仅列出最新N条容器日志
查看容器中运行的进程信息
docker top CONTAINER [ps OPTIONS]
支持 ps 命令参数
获取容器/镜像的元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
options:
- -f :指定返回值的模板文件。
- -s :显示总的文件大小。
- --type :为指定类型返回JSON。
启动/停止/重启容器
docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]
杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
options:
- -s :向容器发送一个信号
删除一个或多少容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
options:
- -f :通过SIGKILL信号强制删除一个运行中的容器
- -l :移除容器间的网络连接,而非容器本身
- -v :删除与容器关联的卷
暂停/恢复容器中所有进程
docker pause CONTAINER [CONTAINER...]
创建一个新的容器但不启动它
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
options同docker run
在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
options:
- -d :在后台运行
- -i :允许你对容器内的标准输入 (STDIN) 进行交互。
- -t :分配一个伪终端
容器 mynginx 中以交互模式执行容器内 /root/run.sh 脚本:
docker exec -it mynginx /bin/sh /root/run.sh
容器的文件系统导出为tar
docker export [OPTIONS] CONTAINER
options:
- -o :写入文件而不是STDOUT
其他
显示系统信息
docker info [OPTIONS]
options:
- -f :格式化输出
显示版本信息
docker version [OPTIONS]
options:
- -f :格式化输出
load/import和save/export的区别
- docker save保存的是镜像(image),docker export保存的是容器(container);
- docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
- docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
- docker load只能载入镜像包,docker import可以载入镜像包和容器包,但载入镜像包无法运行容器。
可以将docker import理解为将外部文件复制进来形成只有一层文件系统的镜像,而docker commit则是将当前的改动提交为一层文件系统,然后叠加到原有镜像之上。
评论