zoukankan      html  css  js  c++  java
  • Linux Centos7.5从docker的安装到容器的部署运行

    环境:

      Win10 内的 VMware workstation(Centos7 64位)

      所有命令皆为 root 用户, 非 root 用户应在命令前加 sudo

    查看系统版本命令: cat /etc/redhat-release

    安装Docker: yum install docker

    启动: service docker start

    设置开机启动: chkconfig docker on

    查看本地镜像列表: docker images

    从官方仓库搜索镜像: docker search <关键词>

      例: docker search centos

    从官方仓库拉取一个centos镜像: docker pull <镜像名>

      例: docker pull centos

    移除一个本地镜像: docker rmi <镜像id>

    用centos镜像运行一个docker容器: docker run  -t  -i  -d -p 8181:81 -p 8282:82  -v /home/package:/home -v /etc/localtime:/etc/localtime:ro  --privileged=true  --name  yjy-server  centos  /bin/bash

     -i: 让容器的标准输入保持打开

     -t: 分配一个伪终端并绑定到容器的标准输入上

     -d: 守护态运行容器(后台运行)

     -p: 将主机的8181端口绑定到容器的81端口, 这样访问主机的8181端口就相当于访问了容器的81端口(可多次使用-p参数绑定多个端口)

     -v /home/package:/home: 将主机的/home/package目录挂载到容器的/home目录(可以事先把 jdk, mysql等安装包存放在主机的package目录下)

     -v /etc/localtime:/etc/localtime:ro: 挂载主机时间文件到容器, 保证容器与宿主机时间同步, ro表示只读 (否则会出现容器时间不对的问题)

     --privileged=true: 给容器增加特权, 否则在容器内访问挂载目录时会提示没有权限

     --name yjy-server: 将容器自定义命名为 yjy-server

     centos: 镜像名称

     /bin/bash: 容器启动后运行 bash脚本解释器

    查看所有容器: docker ps -a

    查看某个容器的详细信息: docker inspect <容器id>

    从容器信息中找到容器的内网ip地址(启动服务时可能用得着): NetworkSettings > IPAddress

    关闭运行中的容器: docker stop <容器id>

    启动已关闭的容器: docker start <容器id>

    重启一个正在运行的容器: docker restart <容器id>

    删除一个容器: docker rm <容器id>

    进入一个正在运行的容器

      方式1: docker attach <容器id>

        缺点: 退出容器时, 容器会自动关闭, 而正常情况下往往需要容器继续在后台运行

      方式2: docker exec -it <容器id> /bin/bash

      方式3: 

        获取容器进程PID: docker inspect --format "{{ .State.Pid }}" <容器id>

        进入容器: nsenter --target <容器进程PID> --mount --uts --ipc --net --pid

    进入到挂载目录: cd /home

    解压jdk压缩文件: tar -zxvf  server-jre-8u191-linux-x64.tar.gz

    将解压后的文件夹移动至/usr/local/:  mv  jdk1.8.0_191/  /usr/local/jdk1.8

    设置环境变量:

      方式1:

        配置/etc/profile 追加内容: 

          export JAVA_HOME=/usr/local/jdk1.8
          export PATH=$PATH:$JAVA_HOME/bin

        加载生效: source  /etc/profile

        缺点: 重新进入容器后环境变量将失效, 每次进入容器都必须手动加载才行

      方式2:

        配置/root/.bashrc 追加内容:

          export JAVA_HOME=/usr/local/jdk1.8
          export PATH=$PATH:$JAVA_HOME/bin

        加载生效: source /root/.bashrc

    测试jdk是否安装成功:  java -version

    安装其他软件

    安装lrzsz(用于上传文件到容器或从容器下载文件): yum install lrzsz

    新建目录: mkdir /var/server

    进入目录: cd /var/server

    上传服务jar包(server.jar)到目录: rz

    运行服务: java -jar server.jar --server.address=容器的内网ip地址  --server.port=81

    现在, 在外部访问虚拟器 http://虚拟机ip:8181/ 就能访问到容器的 81 端口服务了

    至此, 容器服务部署完成

    将容器保存为新镜像: docker commit  -m  "这里写容器说明"  -a  "这里写你的名字<容器id>  <镜像名>:<标签>

      例: docker commit  -m  "测试创建镜像"  -a  "yjy 1234567@qq.com"  dfgsd34fss3  docker.io/centos-yjy:latest

    导出容器快照到本地文件: docker  export  <容器id>  >  /home/centos-yjy.tar

    导入容器快照文件为镜像: docker import  /home/centos-yjy.tar  <新镜像名称>

    将本地镜像导出为镜像文件: docker save  -o  <导出文件名>  <镜像名>:<标签>  

      例: docker save  -o  /home/centos-yjy.tar  centos-yjy:latest

    从本地文件载入镜像: docker load  <  /home/centis-yjy.tar

  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/imyjy/p/10100712.html
Copyright © 2011-2022 走看看