前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker - Image镜像创建及容器操作

Docker - Image镜像创建及容器操作

作者头像
AIHGF
发布2019-02-18 10:51:32
2.8K0
发布2019-02-18 10:51:32
举报
文章被收录于专栏:AIUAIAIUAIAIUAI

Docker 镜像创建

主要包括两部分: 1. 镜像(IMAGE)创建 2. 数据卷(Data Volumes)挂载

1. 镜像(IMAGE)创建

  • 1.1 获取镜像 # 从注册服务器(如Docker Hub、 阿里云等)中的 IAMGE_NAME 仓库中下载标签为latest(默认)和TAG的镜像. $ sudo docker pull IMAGE_NAME $ sudo docker pull IMAGE_NAME:TAG
  • 1.2 查看镜像信息 $ sudo docker images # 列出IMAGE的字段信息: 仓库来源, REPOSITORY 镜像的标签信息,TAG 镜像的ID(唯一) 创建时间 镜像大小
  • 1.3 搜索镜像 # 搜索远程仓库里共享的镜像 \ $ sudo docker search TERM
  • 1.4 删除镜像 $ sudo docker rmi IMAGE:TAG/IMAGE_ID
  • 1.5 创建镜像 创建镜像的方法主要有三种: 基于已有镜像的容器创建 基于本地模板导入 基于Dockerfile创建

这里主要说明第一种方法.

  • 1.5.1 基于已有镜像的容器创建 利用下载好的镜像,使用 docker/nvidia-docker(gpu版本) commit 命令进行容器创建,其命令格式为: $ sudo docker commit [OPTIONS] CONTAINER [REPOSITORY:TAG] OPTIONS 说明: -a, –authors=”“, 作者信息 -m, –message=”“, 提交信息 -p, –pause=true, 提交时暂停容器进行 以基于镜像 aliyun/caffe:latest创建新镜像 aliyun/caffe:v1为例说明. # Step1 启动镜像aliyun/caffe,并在其中进行修改 $ sudo docker run -it aliyun/caffe /bin/bash root@a868ca395b0f:/# # 此时容器ID为a868ca395b0f. # 参数说明: -i, 交互模式,在标准控制台进行输入输出 -d, 后台模式 -t, 为新创建的容器分配一个新的伪终端, 往往与-i合用,-it aliyun/caffe, 镜像名称,也可以是IMAGE_ID /bin/bash, 在新建容器中运行的命令,类似于Ubuntu系统终端操作 # Step2 在容器/bin/bash/中所有操作跟普通的一样,可以进行NVIDIA-Drivers和CUDA的安装、Caffe依赖项安装、Caffe编译和pycaffe接口编译等Caffe环境的搭建操作. 此时与镜像aliyun/caffe相比,已经发生了改变,则可以利用 docker commit 来提交一个新的镜像 $ sudo docker commit -m “Modified Caffe Version” -a “Author-Deepdraw” a868ca395b0f aliyun/caffe:v1 # 该命令会返回新创建镜像的ID信息,一串字符. $ sudo docker images # 查看本地镜像列表,即可看到新创建镜像aliyun/caffe:v1的相关信息  
  • 1.6 保存和载入镜像 # 镜像保存 # 如,将镜像aliyun/caffe保存为文件 aliyun_caffe.tar $ sudo docker save -o aliyun_caffe.tar aliyun/caffe # 镜像载入 # 如,将文件 aliyun_caffe.tar 载入到镜像列表里 $ sudo docker load –input aliyun_caffe.tar # 或 $ sudo docker load < aliyun_caffe.tar
  • 1.7 上传镜像 镜像创建或修改后,可以上传到Docker 镜像存储中心,即仓库(Registry)里,如阿里云提供的Docker仓库服务中,需要登录.
  • 上传本地的aliyun/caffe:v1镜像,可以先添加新的标签(TAG) aliyun/caffe:v1_change, 然后上传 sudo docker tag aliyun/caffe:v1 aliyun/caffe:v1_change sudo docker push aliyun.caffe/caffe:v1_change
  • 上传到阿里云 Docker 仓库
# docker login
# 登录时指明仓库域名:registry.cn-hangzhou.aliyuncs.com
sudo docker login registry.cn-hangzhou.aliyuncs.com
Username: xxx@163.com
Password:
Login Succeeded # 登录成功
确认登录信息:
cat ~/.docker/config.json
{
    "auths": {
        "registry.cn-hangzhou.aliyuncs.com": {
            "auth": "XXXXXXXXXXXXXXXXXXXXXX"
        }
    }
}
企业子账户登录:
sudo docker login registry.cn-hangzhou.aliyuncs.com
Username: subaccount@compannycount
Password:
Login Succeeded
# docker push
sudo docker push registry.cn-hangzhou.aliyuncs.com/caffe:v1

2. 数据卷(Data Volumes)挂载

数据卷是可供容器使用的目录,可以在容器之间共享和重用;对数据卷的修改马上生效;更新数据卷不影响镜像;数据卷会一直存在,直到没有容器再使用.

数据卷的使用类似于Linux下对目录或文件进行 mount 操作.

  • 2.1 容器内创建数据卷 利用docker run -v或–volume=/data1:/data2 命令可以实现数据卷的创建,多个-v可以创建多个数据卷,j以将数据卷挂载到容器的对应目录中,如: $ sudo docker run -v /data/of/container IMAGE_NAME python demo.py
  • 2.2 挂载主机目录作为容器数据卷 该功能允许用户放置部分程序或数据在本地主机目录,然后在容器内运行和使用. 其中,本地目录的路径必须是绝对路径,若不存在,Docker会自动创建, 如: $ sudo docker run -volume=/data1/of/host:/data1/of/container -volume=/data2/of/host:/data2/of/container IMAGE_NAME python demo.py Docker 挂载数据卷的默认权限是读写(rw), 也可以通过ro指定权限为只读,使容器挂载的数据卷中的内容不能进行修改, 如: $ sudo docker run -volume=/data1/of/host:/data1/of/container:ro -volume=/data2/of/host:/data2/of/container:ro IMAGE_NAME python demo.py

3. 容器操作

3.1 查看容器状态

sudo docker ps -a

3.2 新建容器

docker create 命令,如:

sudo docker create -it ubuntu:latest

新建容器处于停止状态,采用 docker start 来启动.

3.3 启动容器

两种启动方式:

  • 基于镜像新建容器并启动;docker run命令
  • 基于停止状态的容器重新启动; docker create + docker start 命令.

3.4 退出容器

exit 命令.

3.5 后台运行容器

Docker 容器在后台以守护状态(Daemonized) 运行.

sudo docker run -d ubuntu:latest /bin/sh -c "***"

容器启动,返回唯一 ID .

查看容器信息:

sudo docker ps

查看容器的输出信息,docker logs

sudo docker logs docker_container_ID

3.6 停止容器

sudo docker stop docker_container_ID

查看处于停止状态的容器 ID 信息:

sudo docker ps -a -q

重新启动停止状态的容器:

sudo docker start docker_container_ID

停止运行状态的容器,并重启:

sudo docker restart docker_container_ID

3.7 进入容器

exec命令.

sudo docker exec -it docker_container_ID /bin/bash

3.8 删除容器

查看处于停止状态的容器,并删除:

sudo docker ps -a
sudo docker rm container_ID 

删除处于运行状态的容器:

sudo docker rm -f container_ID
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年05月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 镜像创建
    • 1. 镜像(IMAGE)创建
      • 2. 数据卷(Data Volumes)挂载
        • 3. 容器操作
          • 3.1 查看容器状态
          • 3.2 新建容器
          • 3.3 启动容器
          • 3.4 退出容器
          • 3.5 后台运行容器
          • 3.6 停止容器
          • 3.7 进入容器
          • 3.8 删除容器
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档