zoukankan      html  css  js  c++  java
  • Docker及常用操作

    镜像、容器和仓库

    Docker镜像: 镜像是一个只读的模板,可以用来创建Docker容器。可以直接创建一个镜像,或者是更新已有镜像,或者复制他人的镜像直接使用。

    Docker容器: 容器是镜像的实例,用来执行各种应用,可以同时启动多个容器,相互之间是隔离的。

    Docker仓库: 仓库用来集中存放镜像文件。仓库可以分为公开仓库和私有仓库,Docker Hub是最大的公开仓库,用户可以在本地网络创建一个私有仓库。

    镜像完成之后可以使用push命令上传到仓库,在另外一台机器上使用pull从仓库下载镜像文件。

    ubuntu安装docker

    Docker要求Ubuntu系统的内核版本高于3.10,使用  uname -r  命令查看系统的内核版本。

    ubuntu docker安装:

    wget -qO- https://get.docker.com/ | sh

    或者:

    sudo apt-get install docker.io


    Centos安装docker

    yum -y install docker

    查看本地已有镜像

    sudo docker images

    REPOSITORY: 镜像所属仓库
    TAG: 镜像的标记
    IMAGE ID: 镜像的ID号
    CREATED: 创建时间
    VIRTUAL SIZE: 镜像大小


    启动一个容器


    使用 docker run 启动一个容器:

    sudo docker run -it ubuntu:17.04

    或:

    sudo docker run -it -d ubuntu:17.04
    ubuntu是仓库名称,17.04是镜像的标记。
    当利用 docker run 来创建容器时,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载。

    -t -i -d 参数

    sudo docker run -t -i  指令中 -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开,这个伪终端接管了本机的输入输出交互操作,从而容器的bash命令不会自动退出; -d参数使容器在后台运行。


    使用 ps 查看活动容器信息

    sudo docker ps

    查看所有容器(包括已经终止里的容器):

    sudo docker ps -a


    进入后台运行的容器

    sudo docker exec -it 2991520cae60 /bin/sh


    2991520cae60 是容器ID

    从仓库获取镜像


    使用 docker pull 命令从仓库获取镜像:

    sudo docker pull ubuntu:17.04

    指定镜像标号(17.04)会下载指定镜像,不指定,会获取最新:

    sudo docker pull ubuntu


    修改已有镜像


    先启动镜像的容器:

    sudo docker run -it ubuntu:17.04
    例如修改是在17.04容器中安装python:
    apt-get update
    apt-get install python

    安装完成之后使用 exit 指令退出容器:

    exit


    保存容器修改到镜像

    sudo docker commit 78b97ea ubuntu:0301
    “78b97ea”是需要保存的容器的ID ,ubuntu是仓库名称,0301是新保存的镜像标记。

    镜像文件导出和导入


    1. 使用 docker save 命令把镜像导出到本地文件:

    sudo docker save -o /home/dcrmg/docker/0301.tar ubuntu:0301

    2. 使用 docker load 命令把本地镜像文件导入到本地镜像库:

    sudo docker load --input /home/dcrmg/docker/0301.tar


    删除镜像


    使用 docker rmi 命令移除本地镜像:

    sudo docker rmi d7eec825bed5
    "d7eec825bed5"是镜像的ID(Image ID)
    在删除镜像之前需要先用 rm 指令删除掉依赖于这个镜像的所有容器,否则会报以下错误:
    unable to delete ef79b6133b17 (must be forced) - image is being used by stopped container 4b40936a1dc6

    报错提示给出了容器ID,使用rm 指令依次删除就行了:

    sudo docker rm 4b40936a1dc6


    从主机复制文件到容器

    指令: sudo docker cp host_path containerID:container_path

    sudo docker cp ./abc c9dfbddc1a78:/home

    从容器复制文件到主机

    sudo docker cp containerID:container_path host_path

    sudo docker cp c9dfbddc1a78:/home/csd ./0303


    挂载本机数据卷(目录)实现文件共享


    使用 -v 指令在启动容器时挂载本机数据卷:

    sudo docker run -it -v /test:/soft ubuntu:16.04 /bin/bash
    1. 冒号前边是主机目录,冒号后边是容器内的目录
    2. 冒号后的/soft是会在启动的容器中自动创建的目录,该目录和主机目录下的文件共享,/soft目录需要时绝对路径(要以 '/'开头)
    3. 指定的主机目录如果不存在,也会自动创建,最好也是用绝对路径
    4. 容器销毁之后,主机目录和数据仍然存在


    退出容器但不关闭

    Ctrl+P+Q


    退出容器并关闭

    exit

    exit 指令是退出并关闭当前容器,但是没有销毁容器,使用restart指令重新启动容器:

    sudo docker restart ID

    启动后台运行的容器

    sudo docker attach ID

    启动已经关闭了的容器

    sudo docker restart ID
    sudo docker attach ID

    保存容器到本地磁盘

    sudo docker export ID > /home/docker/abc.tar


    使用Dockerfile创建镜像

    sudo docker build -t centos_CUDA /home/dockerfile_file

    centos_CUDA  是镜像标签,  /home/dockerfile_file 是Dockerfile文件所在文件夹


    Docker端口映射

    启动容器时通过配置宿主机器与容器的端口映射,使外部程序可以通过端口访问容器:
    sudo docker run -it -p ipHost:ipContainer  Centos:V3 /bin/bash


    查看容器和主机的端口映射信息

    docker port ID

    显示:

    8080/tcp -> 0.0.0.0:80
    表示把容器的8080端口映射成宿主机器的80端口

    或者使用 sudo docker ps 查看  PORTS 列下显示的映射信息


    Docker支持中文

    使用 locale 和 locale -a 查看当前支持语言和可按装语言:


    在容器中执行以下指令安装中文包:

    yum -y install kde-l10n-Chinese && yum -y reinstall glibc-common 
    localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 
    export LC_ALL=zh_CN.utf8

    之后查看语言支持,已经支持中文字符:


    以上设置只在当前容器有效,保存容器到新建镜像,在新建镜像上启动的容器中输入以下指令设置中文环境:

    export LANG=zh_CN.utf8

    或者在启动容器的时候加入指令:

    sudo docker run -it -e 'LANG=zh_CN.UTF-8' centos:latest


  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411738.html
Copyright © 2011-2022 走看看