daoker 简单操作

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

3.9 重启容器

docker restart id

重启所有停止的容器

docker restart $(docker ps -a -q)

4.Docker-端口映射

4.1 将容器指定端口随机映射到宿主机一个端口上

docker run -P 80 -it ubuntu /bin/bash

以上指令会将容器的80端口随机映射到宿主机的一个端口上。

4.2将容器指定端口指定映射到宿主机的一个端口上

docker run -p 8000:80 -it ubuntu /bin/bash

以上指令会将容器的80端口映射到宿主机的8000端口上。

4.3将容器ip和端口,随机映射到宿主机上。

docker run -P 192.168.0.100::80 -it ubuntu /bin/bash

以上指令会将容器的ip192.168.0.100和80端口,随机映射到宿主机的一个端口上。

4.4查看映射端口配置

docker port container_ID #容器ID
#结果输出
80/tcp -> 0.0.0.0:800

5.Docker-文件映射

docker run -v /var/www:/var/data -it ubuntu /bin/bash

本地的/var/www 映射到 docker的/var/data

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值