• 关于docker--详解安装,常规操作,导入导出等(2017-3-29)


    测试环境 :CentOS 7.1 64位
    目的:展示docker的常规使用(安装,常规操作,导入导出等)
    其他:关于原理等请参考文章后面的延伸阅读,本文不做深入探讨,且方法不唯一

    0x01 关于安装docker

    linux环境下直接运行即可:
    sudo curl -fsSL https://get.docker.com/ | sh

    其他安装方法与请参考文章下面链接,在此不再赘述

    0x02关于docker基础操作

    安装完成后
    chkconfig docker on # 加入开机启动 
    service docker start # 启动docker服务

    配置文件 /etc/sysconfig/docker


    基本信息查看

     docker version # 查看docker的版本号,包括客户端、服务端、依赖的Go等
      docker info # 查看系统(docker)层面信息,包括管理的images, containers数等 
    docker pull centos 下载 
    docker images [ centos ] 查看

    0x03关于docker获取容器与容器的常规操作

    搜索镜像

    docker search <image> # 在docker index中搜索image 

    下载镜像

    docker pull <image> # 从docker registry server 中下拉image

    查看镜像

    docker images :# 列出
    images docker images -a # 列出所有的images(包含历史)
    docker rmi <image ID> :# 删除一个或多个image

    操作演示

    docker version

    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    docker images

    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    0x04关于docker容器的使用

    概念说明:启动一个镜像即为创建它的容器,容器为镜像的实例
    1.关于启动容器:
    启动容器的方法有两种:
    ● 交互型容器:前台运行,可以通过控制台与容器交互。如果创建该容器的终端被关闭,则容器就变为停止状态。此外,在容器控制台中输入exit或者通过docker stop或docker kill也能终止容器。
    ● 后台型容器:后台运行,创建启动之后就与终端无关了,需要用docker stop或docker kill来终止。

    1.交互型容器的命令与演示:

    如图所示:注意填写 IMAGE ID 启动相应的镜像

    docker run -i -t 0584b3d2cf6d /bin/bash
    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    2.关于容器的修改与保存:

    做简单的镜像更改并打包:创建imagetest文件夹
    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    此时 复制窗口 进行commit 制作全新的镜像:

    ① 列出当前正在运行的容器 注意查看 container id 会在后面的commit中使用

    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    ② commit 保存更改并生成镜像

    docker commit --author="303donatello" e91cf0291e79 centosimage:v1.0
    // # commit保存对镜像的更改
    docker images #查看实验结果
    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    0x05关于docker容器的导入导出

    导出:

    以导出上面操作生成的centosimage为例:

    1.启动相应的镜像生成容器:

    docker run -i -t 0d123bf431d2 /bin/bash
    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    2. docker ps -a #查看对应id

    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    3.导出镜像:

    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    导入:

    导入镜像到docker(以上步骤产生的文件为例):
    cat centosIE.tar | docker import - centosimport:v1.0
    关于docker--详解安装,常规操作,导入导出等 - 303Donatello - 303Donatello

    运行 验证:
    被修改的镜像 导入并生成容器成功

    0x06 其他参考等

    1,获取Centos镜像

    docker pull centos:latest

    2,查看镜像运行情况

    docker images centos

    3,在容器下运行 shell bash

    docker run -i -t centos /bin/bash

    4,停止容器

    docker stop

    5,查看容器日志

    docker logs -f

    6,删除所有容器

    docker rm $(docker ps -a -q)

    7,删除镜像

    docker rmi <image id/name>

    8,提交容器更改到镜像仓库中

    docker run -i -t centos /bin/bash
     useradd myuser
     exit
     docker ps -a |more
     docker commit myuser/centos

    9,创建并运行容器中的 hello.sh

    docker run -i -t myuser/centos /bin/bash
     touch /home/myuser/hello.sh
     echo "echo "Hello,World!"" > /home/myuser/hello.sh
     chmod +x /home/myuser/hello.sh
     exit
     docker commit myuser/centos
     docker run -i -t myuser/centos /bin/sh /home/myuser/hello.sh

    10,在容器中运行Nginx

    在容器中安装好Nginx,并提交到镜像中

    docker run -t -i -p 80:80 nginx/centos /bin/bash
     启动Nginx
     /data/apps/nginx/sbin/nginx
     (还不清楚如何在后台运行!!!)

    在浏览器访问宿主机80端口。

    11,映射容器端口

    docker run -d -p 192.168.9.11:2201:22 nginx/centos /usr/sbin/sshd -D

    用ssh root@192.168.9.11 -p 2201 连接容器,提示:

    Connection to 192.168.1.205 closed.(此问题还未解决!!!)

    可能会遇到的问题:
     ##在容器里面修改用户密码的时候报错:
     /usr/share/cracklib/pw_dict.pwd: No such file or directory
     PWOpen: No such file or directory

    解决:yum -y reinstall cracklib-dicts

    查看容器

    docker ps :列出当前所有正在运行的container
     docker ps -l :列出最近一次启动的container
     docker ps -a :列出所有的container(包含历史,即运行过的container)
     docker ps -q :列出最近一次运行的container ID

    再次启动容器

    docker start/stop/restart #:开启/停止/重启container 
     docker start [container_id] #:再次运行某个container (包括历史container)
     #进入正在运行的docker容器
     docker exec -it [container_id] /bin/bash 
     docker run -i -t -p <host_port:contain_port> #:映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

    删除容器

    docker rm <container...> #:删除一个或多个container
     docker rm docker ps -a -q #:删除所有的container
     docker ps -a -q | xargs docker rm #:同上, 删除所有的container

    docker run 和 docker create 参数基本一样,run是创建容器并后台启动,create是只创建容器。

    docker run 相当于docker create 和 docker start

    延伸阅读与本文参考:
    http://blog.csdn.net/opensure/article/details/46559071
    [http://blog.csdn.net/dc_726/article/details/48206779?locationNum=1&fps=1](

  • 相关阅读:
    DP(动态规划)学习心得
    hloj#402 护卫队解题讨论
    hloj#168“倒牛奶”解题讨论
    贪心:畜栏预定
    区间问题
    离散化
    差分
    浏览器的工作原理幕后揭秘的部分笔迹摘要
    python之阶乘的小例子
    关于python中urllib.urlencode的时候出错:UnicodeEncodeError: ‘ascii’的记录
  • 原文地址:https://www.cnblogs.com/303donatello/p/12735875.html
Copyright © 2020-2023  润新知