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


  • 相关阅读:
    Windows进程/线程创建过程
    固件安全研究
    区块链安全研究的总结
    CoTreatAsClass一些注意事项
    Ring3 读取SSDT
    User Mode Scheduling
    首次异常和二次异常
    offer终于有着落了
    AtomBombing
    Retn
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411738.html
Copyright © 2011-2022 走看看