• Docker的学习笔记(开发的技术分享转发)


    我的Docker学习记录
    一、安装docker
    yum install -y docker-io
    二、使用docker
    1、下载镜像
    docker pull <image>
    2、查询镜像
    docker search <image>


    3、从镜像运行容器
    docker run -it --name <name> <image> /bin/bash
    4、后台运行
    docker run -itd --name <name> <image> /bin/bash
    5、查看docker运行的容器
    docker ps
    6、查看docker上一个运行的容器
    docker ps -l
    7、查看docker运行的全部容器
    docker ps -a
    8、进入docker的方法有两种exec和attach
    第一种exec
    docker exec -it <container> /bin/bash
    container既可以是容器id也可以是容器名字
    /bin/bash为运行容器时的环境
    第二种attach
    docker attach -it <container> /bin/bash
    和exec同理只不过用该命令连接容器后,退出是容器会自动关闭。
    9、删除容器
    docker rm <container>或者是<container-id>
    10、删除镜像
    docker rmi <image-id>
    11、列出已有镜像
    docker images
    12、将docker里面的文件或目录拷贝出来
    docker cp <container_id>|<container_name>:path path
    例子:
    docker cp tomcat:/usr/local/tomcat/conf .
    13、导入导出镜像和容器
    docker save image-id > image.tar 导出镜像
    docker export container-id > container.tar 导出容器
    docker load < image.tar 导入镜像
    cat container.tar | docker import - container_name:tag 导入容器
    三、实战
    1、安装ssh服务
    debian系统
    apt-get update
    apt-get -y install openssh-server
    2、安装netstat命令
    apt-get -y install net-tools
    3、安装jdk服务
    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
    http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz
    4、安装tomcat服务
    wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
    tar xzvf apache-tomcat-8.5.9.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-8.5.9 /usr/local/tomcat
    cp -r apache-tomcat-8.5.9.tar.gz /usr/local/tomcat
    四、工作流程
    1、构建镜像。
    2、上传镜像到已有的私有仓库或者公有仓库。
    3、在指定服务器上下载指定仓库的镜像。
    4、通过镜像运行容器,指定端口、容器名称、挂载点、需要的环境变量等参数。
    5、通过jekens自动化运行脚本,将指定的文件定时更新到挂载点,完成自动部署。
    五、Docker服务标准
    1、容器命名规则
    服务名称-应用名称-端口号
    例如:
    2、挂载目录
    1)在root目录下创建docker目录
    mkdir /root/docker
    2)在docker目录下创建对应容器的目录名称
    例:还是以上面的tomcat-admin-8280为例
    mkdir -p /root/docker/tomcat-admin-8280
    3)在tomcat-admin-8280目录下创建该容器内所需的挂载点目录
    例如tomcat需要日志和app文件的挂载点
    创建log的挂载点
    mkdir -p /root/docker/tomcat-admin-8280/logs
    创建app文件的挂载点
    mkdir -p /root/docker/tomcat-admin-8280/webapps
    如果有其他的配置文件需要修改也可以增加配置文件等其他挂载点
    4)tomcat日志统一挂载在/var/log/下
    在/var/log下新建自己对应名字的目录
    例如tomcat-admin-8280这样的目录
    六、docker镜像内需要的基础服务
    1、ssh服务
    用来进行外部链接
    2、ntp服务
    用来同步时间
    3、vim服务(配置支持中文显示)
    用来方便编辑
    七、镜像构建标准
    1、创建Dockerfile
    在root下创建和镜像名一样的目录
    例:
    mkdir -p /root/dockerfile/tomcat
    cd /root/dockerfile/tomcat
    touch Dockerfile
    编辑配置Dockerfile
    例如:
    2、在该目录下放置所以Dockerfile所需要的脚本和文件
    例如:
    3、构建镜像
    进入Dockerfile所在目录
    cd /root/dockerfile/tomcat
    运行构建命令
    docker build -t <image-name>:<tag> path
    例如:
    docker build -t tomcat:8.5.9 /root/dockerfile/tomcat/
    八、docker占用磁盘空间过大的解决方案
    通过命令可以观察到/var/lib/Docker目录很大,我的主机只有20G,这个目录占了 18G;原因是devicemapper的空
    间设的太大,通过docker info打印的Data Space Total参数可以看到,默认是107.4G
    思路如下:
    备份当前容器、镜像;
    删除/var/lib/docker目录;
    使用dd命令重设大小;
    恢复容器、镜像
    1、备份当前的容器和镜像
    docker save image-id > image.tar 导出镜像
    docker export container-id >container.tar 导出容器
    2、删除docker目录
    /etc/init.d/docker stop
    rm -rf /var/lib/docker
    3、使用dd命令重设大小
    mkdir -p /var/lib/docker/devicemapper/devicemapper/
    touch /var/lib/docker/devicemapper/devicemapper/data
    dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1M count=0 seek=8192
    建立的文件最大为1M*8192=8G
    启动docker
    /etc/init.d/docker start
    docker info 查看Data Space Total是否修改成功
    4、恢复容器和镜像
    docker load < image.tar 导入镜像
    cat container.tar | docker import - container_name:tag 导入容器
    九、docker内tomcat打印的日志时间和服务器时间差8个小时的问题
    打开tomcat文件下的bin/catalina 文件,找到JAVA_OPTS,在设置中增加-Duser.timezone=GMT+08:
    JAVA_OPTS='-Xms256m -Xmx800m -Duser.timezone=GMT+08'
    十、安装使用swarm
    在所有节点上
    docker pull swarm
    在使用Swarm进行集群管理之前,需要先把准备加入集群的所有的节点的docker deamon的监听端口修改为
    0.0.0.0:2375,可以直接使用sudo docker –H tcp://0.0.0.0:2375 &命令,也可以在配置文件中修改
    $ sudo vim /etc/default/docker
    在文件的最后面添加下面这句
    D0OCKER_OPTS="-H 0.0.0.0:2375 –H unix:///var/run/docker.sock"
    service docker restart
    第一步
    在任何一个节点上面执行swarm create命令来创建一个集群标志。这条命令执行完毕之后,swarm会前往Docker Hub上
    内建的发现服务中获取一个全球唯一的token,用以唯一的标识swarm管理的Docker集群。
    docker run --rm swarm create
    返回的token是d947b55aa8fb9198b5d13ad81f61ac4d,这个token一定要记住,因为接下来的操作都会用到这一个token。
    第二步
    在所有的要加入集群的机器上面执行swarm join命令,把机器加入集群。
    本次试验就是要在所有的三台机器上执行命令。
    docker run –-rm swarm join –addr=ip_address:2375 token://d947b55aa8fb9198b5d13ad81f61ac4d
    执行这条命令后不会立即返回 ,我们手动通过Ctrl+C返回
    第三步
    启动swarm manager。
    因为我们要让sclu083充当Swarm管理节点,所以我们要在这台机器上面执行swarm manage命令
    docker run -d -p 2376:2375 swarm manage token://d947b55aa8fb9198b5d13ad81f61ac4d
    重点内容需要注意的是:在这条命令中,第一:要以daemon的形式运行swarm;第二:端口映射:2376可以更换成任
    何一个本机没有占用的端口,一定不能是2375,否则就会出问题。
    查看所有节点
    docker run --rm swarm list token://d947b55aa8fb9198b5d13ad81f61ac4d
    docker –H 10.13.181.83:2376 info
    可以查看所有节点的信息
    info命令可以替换成所有docker的其他命令
    十一、永久解决中文乱码问题
    在Dockerfile中添加一行
    ENV LANG C.UTF-8

  • 相关阅读:
    Mysql升级过程的问题
    关于SSM项目注解事务不回滚的问题
    Linux环境下tomcat如何热部署
    Windows系统下python3中安装pyMysql
    jvm性能监控及故障处理工具(《深入理解java虚拟机》)
    jvm垃圾回收器(《深入理解java虚拟机》)
    jvm-运行时数据区域(《深入理解java虚拟机》)
    java源码分析-String
    java源码分析-Object
    2019秋季PAT甲级题解(无第一题)
  • 原文地址:https://www.cnblogs.com/zln1021/p/6434707.html
Copyright © 2020-2023  润新知