zoukankan      html  css  js  c++  java
  • Docker入门学习记录

    重要概念:
    Docker 基本映像主要的好处是它允许我们有一个独立运行的 Linux 操作系统
    容器
    镜像
    仓库
     
    一、安装Docker
     
      1. 安装社区版,安装文档:
      https://docs.docker.com/install/linux/docker-ce/centos/
     
      #查看是否已安装
      # sudo yum list installed | grep docker
     
     
     
     
    二、简单使用
     
    参考“一小时Docker教程”:https://blog.csphere.cn/archives/22
     
      在默认情况下,Docker镜像和容器的默认存放位置为:/var/lib/docker
    [root@localhost sysconfig]# find / -name docker
    /run/docker
    /etc/docker
    /var/lib/docker
    /usr/share/bash-completion/completions/docker
      镜像信息:
    /var/lib/docker/image/devicemapper/repositories.json
      容器信息:
    /var/lib/docker/containers
     
    三、官方文档
     
    四、中文文档
     
    五、使用国内镜像仓库
    网易云:
    # docker pull hub.c.163.com/library/centos:centos7.2.1511
     
    六、搭建一个JAVA环境的CentOS7镜像
     
      1. 从网易云拉一下centos镜像
     
      2. 创建容器
    //注意,未映射端口
    //启动容器命令 docker run options containsID argument
    #options参数说明
    #-d选项,告诉Docker以分离(detached)的方式在后台运行,这种方式非常适合运行类似Nginx守护进程这样的需要长时间运行的进程。
    #-i:表示以“交互模式”运行容器
    #-t:表示容器启动后会进入其命令行
    #-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
    #--name: 指定容器的名称,如果未指定容器名称则会随机生成一个名称
    #feac5e0dfdb2为镜像ID
    #/bin/bash为创建容器后执行的命令
    # docker run --name centosJavaTest -itv /opt/:/mnt/software/ feac5e0dfdb2 /bin/bash
     
      3. 退出重新登录容器
    #退出
    # exit
    #启动容器
    # docker start centosJavaTest
    #登录容器
    # docker attach centosJavaTest
     
      4. 查看容器IP
    //不退出的话需要新开一个xshell客户端
    # docker inspect centosJavaTest | grep IPAddress
    # docker inspect 10ed4b5ec278 | grep IPAddress
    或者在容器中安装net-tools,然后使用ifconfig查看
     
      5. 为容器映射端口
        5.1 iptable转发端口(感觉不好,对系统有侵入)
    将容器的8000端口映射到docker主机的8001端口
    # iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
      5.2. 提交一个运行中的容器为镜像
    # docker commit 10ed4b5ec278 centos/xwiki
      运行镜像并添加端口
    # docker run --name centosXwiki -itv /opt/:/mnt/software/ -p 8082:8082 d58f36f23c14 /bin/bash
      注意:镜像启动时挂载的卷,在提交为镜像时,不会包含在内
     
      6. 在容器中启动xwiki并从远程访问
     
        6.1 配置jdk,与宿主计算机配置方法一致,但是要注意,重启容器后,需要重新 # source /etc/profile
     
        6.2 启动xwiki,然后远程访问:http://192.168.1.121:8082
     
      7. 使用dockerfile构建一个镜像
      参考文档:
     
      #以网易云centos7.2构建一个支持jdk8的镜像
    Dockfile:
    FROM hub.c.163.com/library/centos:centos7.2.1511
    MAINTAINER weijs
    COPY jdk8 jdk8
    #ADD websocket.jar app.jar
    ENV JAVA_HOME=/jdk1.7.0_79
    ENV PATH=$JAVA_HOME/bin:$PATH
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
     
      # 注意,仓库名必须小写,后面还有一个“.”
     
      # docker build -t weijs/centosjava .
     
      8. 搭建本地私有仓库,并上传镜像
      
      创建本地Docker仓库
     
    # 从网易云拉取仓库镜像
    # docker pull hub.c.163.com/library/registry:latest
     
    ## 搭建本地镜像源(指定目录)
    # docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name localRegistry hub.c.163.com/library/registry:latest
     
    ## 使用新的Registry给该镜像打上标签
    # docker tag f2a91732366c 127.0.0.1:5000/test/hello-world2
     
    ## 通过docker push 命令将它推送到新的Registry中去
    # docker push 127.0.0.1:5000/test/hello-world2
     
    ## 传到本地远程仓库(183),默认是走HTTPS协议,需要先修改镜像所在宿主机的docker配置
    ##注意,修改启动命令的方式不成功,使用添加新配置文件的方式解决,此方案不能与在启动命令中添加配置的方案共存,需要先还原启动命令
    # vi /usr/lib/systemd/system/docker.service
    # ExecStart=/usr/bin/dockerd --insecure-registry 192.168.0.183:5000
     
    ## 在/etc/docker/下新建daemon.json,添加{ "insecure-registries":["192.168.1.183:5000"] }
     
      重启docker:
    # systemctl daemon-reload
    # systemctl restart docker
     
    ## 使用新的Registry给该镜像打上标签
    # docker tag f2a91732366c 192.168.1.183:5000/test/hello-world2
     
    ## 通过docker push 命令将它推送到新的Registry中去
    # docker push 192.168.1.183:5000/test/hello-world2
    [root@localhost docker]# curl -XGET http://192.168.1.183:5000/v2/_catalog
    {"repositories":["test/hello-world2"]}
    ## 如果远程镜像与本地镜像一致,则不会更新,类似GIT
    # docker pull 192.168.1.183:5000/test/hello-world2
     
    ##查看新的仓库
    [root@localhost test]# pwd
    /opt/registry/docker/registry/v2/repositories/test
    [root@localhost test]# ls
    hello-world2
    ##通过浏览器访问会返回JSON数据
      附录:
    Docker 映像是不可更改的只读层。Docker 使用 Union File System 在只读文件系统上增加可读写的文件系统,但所有更改都发生在最顶层的可写层,而其下的只读映像上的原始文件仍然不会改变。由于映像不会改变,也就没有状态。基本映像是没有父类的那些映像。Docker 基本映像主要的好处是它允许我们有一个独立运行的 Linux 操作系统。
  • 相关阅读:
    USACO 6.4 章节
    USACO 6.3 章节 你对搜索和剪枝一无所知QAQ
    USACO 6.1 章节
    USACO 5.5 章节
    USACO 5.4 章节
    USACO 5.3 章节
    99乘法表
    mini整数计算器
    python爬虫-爬取天气预报内容
    python实时监控服务器性能
  • 原文地址:https://www.cnblogs.com/weijs/p/8571671.html
Copyright © 2011-2022 走看看