zoukankan      html  css  js  c++  java
  • 随笔:docker学习笔记(包括了基础学习和制作运行jar包的docker镜像,还有centos7防火墙这个坑)

    docker学习笔记

    docker安装

    之前写过docker安装,这里就不在赘述了,有兴趣的朋友可以看一下:https://blog.csdn.net/caodingzheng/article/details/108867075

    docker使用

    一、docker run ubuntu:15.10 /bin/echo “Hello world”

    docker库:tag标签
    ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
    以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

    二、运行交互式的容器:

    1、docker run -i -t ubuntu:15.10 /bin/bash
    参数解释:
    -i: 交互式操作。
    -t: 终端。
    ubuntu: ubuntu 镜像。
    /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

    2、启动容器(后台模式)
    docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”

    在输出中,我们没有看到期望的 “hello world”,而是一串长字符
    af907a686afde444a31b1d4390a15041b1853faeffcdd239d36ef867883b2299
    这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
    首先,我们需要确认容器有在运行,可以通过 docker ps 来查看

    输出详情介绍:
    CONTAINER ID: 容器 ID。
    IMAGE: 使用的镜像。
    COMMAND: 启动容器时运行的命令。
    CREATED: 容器的创建时间。
    STATUS: 容器状态。

    状态有7种:
    created(已创建)
    restarting(重启中)
    running(运行中)
    removing(迁移中)
    paused(暂停)
    exited(停止)
    dead(死亡)
    PORTS: 容器的端口信息和使用的连接类型(tcpudp)。
    NAMES: 自动分配的容器名称。

    在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
    docker logs ID号
    或者docker logs 容器名称(NAMES)

    使用docker stop ID号 或者docker stop 容器名称(NAMES)停止容器

    三、启动已停止运行的容器:

    1、查看所有的容器:
    docker ps -a

    2、启动已停止的容器:
    docker start ID号 或者docker start 容器名称(NAMES)

    或者docker restart ID号/容器名称(NAMES)来进行重启

    四、后台运行容器:

    docker run -itd --name ubuntu-test ubuntu /bin/bash
    参数解释:
    -d 后台运行
    –name 为启动的容器命名

    五、后台运行容器时进入容器:

    在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
    1、docker attach :退出容器终端会导致容器停止
    docker attach ID号或者names
    2、docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
    docker exec -it ID号或者names /bin/bash

    六、导出导入容器:

    docker export ID号或者names > 导出路径
    如docker export 1e560fca3906 > ubuntu.tar
    docker export ubuntu-test > /home/qc/cdz/docker/ubuntu.tar

    导入容器:
    cat /home/qc/cdz/docker/ubuntu.tar | docker import - test/cdz:ubuntu.v1

    通过docker images查看

    七、删除容器、镜像

    docker rm -f ID号或者names
    docker image rm -f ID号或者names

    八、运行web

    下载公用镜像:docker pull training/webapp
    随机端口:docker run -d -P training/webapp python app.p
    设置web端口:docker run -d -p 5000:5000 training/webapp python app.py

    九、列出镜像列表

    我们可以使用 docker images 来列出本地主机上的镜像。

    十、docker安装centOS

    访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1
    拉取指定版本的centOS镜像:docker pull centos:centos7
    运行容器:docker run -itd --name centos-test centos:centos7

    十一、docker安装MySQL

    访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags

    运行MySQL:
    docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.31
    参数说明:
    -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
    MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

    十二、docker安装Python

    访问 Python 镜像库地址:https://hub.docker.com/_/python?tab=tags&page=5

    运行Python:
    docker run -v $PWD/myapp:/usr/src/myapp -w /usr/src/myapp python:3.5 python helloworld.py

    命令说明:
    -v $PWD/myapp:/usr/src/myapp: 将主机中当前目录下的 myapp 挂载到容器的 /usr/src/myapp。
    -w /usr/src/myapp: 指定容器的 /usr/src/myapp 目录为工作目录。
    python helloworld.py: 使用容器的 python 命令来执行工作目录中的 helloworld.py 文件

    十三、将本地文件拷贝到docker容器中

    docker cp 拷贝文件 容器id/names:拷贝到的容器目录

    十四、启动容器赋予root权限,解决一些命令用不了的问题

    docker run -itd --privileged=true --name centos7.v2 cdz/centos7.v1:centos7 /usr/sbin/init
    1、关闭防火墙
    下载:yum install firewalld systemd -y
    查看放火墙状态:systemctl status firewalld
    彻底关闭防火墙:
    systemctl disable firewalld.service
    systemctl stop firewalld
    2、关闭放火墙后将容器导出再导入,重新生成镜像,这是可以作为一个基础镜像使用

    十五、jar包端口需要和映射端口保持一致

    附录:

    一、生成jdk镜像的Dockerfile

    # 拉取基本镜像
    FROM cdz/centos7.v1:centos7
    # 维护者信息
    MAINTAINER caodingzheng
    # 加载jdk安装包
    ADD jdk-8u261-linux-x64.tar.gz /usr/local
    # 环境变量设置
    ENV JAVA_HOME /usr/local/jdk1.8.0_261
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    # 设置语言
    ENV LANG="en_US.UTF-8"
    
    

    二、部署jar包的Dockerfile

    # 拉取基本镜像
    FROM cdz/centos7.v2:centos7
    # 维护者信息
    MAINTAINER caodingzheng
    # 加载jdk安装包
    ADD jdk-8u261-linux-x64.tar.gz /usr/local
    # 环境变量设置
    ENV JAVA_HOME /usr/local/jdk1.8.0_261
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    # 设置语言
    ENV LANG="en_US.UTF-8"
    # 导入jar包
    ADD LuckyFrameWeb.jar /LuckyFrameWeb.jar
    # 执行jar包
    ENTRYPOINT ["java","-jar","/LuckyFrameWeb.jar"]
    
    

    三、docker build怎么使用这里就不做赘述了

  • 相关阅读:
    学习Bitmap,处理“海量”数据
    学习Trie树,处理“海量”数据
    学习KMP算法
    学习堆与栈内存分配方式
    学习继承和虚析构函数
    学习处理数组子集和的算法
    学习类中的const和static类型
    学习利用动态规划解决若干问题
    【MySQL】MySQL忘记root密码解决方案
    【API】短信通106端口验证短信的实现
  • 原文地址:https://www.cnblogs.com/caodingzheng/p/14007072.html
Copyright © 2011-2022 走看看