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

    创建一个新的 Docker 虚拟机

    测试环境为Mac

    docker-machine create --driver virtualbox default    
    

    这就在 VirtualBox 中创建了一台新的default虚拟机。
    该命令还会在~/.docker/machine/machines/default目录下生成一个 docker machine 的配置文件。只需执行一次create命令,然后可以使用docker-machine命令来开启,停止,查询并管理虚拟机。

    列出所有可用的 docker machine

    $ docker-machine ls
    NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
    default             *        virtualbox   Running   tcp://192.168.99.101:2376  
    

    获取default虚拟机的环境变量

    $ docker-machine env default
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.101:2376"
    export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default"
    export DOCKER_MACHINE_NAME="default"
    # Run this command to configure your shell: 
    # eval "$(docker-machine env default)"
    

    连接到Docker VM

    docker-machine ssh default
    

    也可以在宿主机上通过ssh连接

    ssh docker@192.168.99.100
    
    user: docker
    pass: tcuser
    

    设置Docker默认镜像服务器

    在/etc/docker/daemon.json添加以下配置,修改保存后重启 Docker 以使配置生效

    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    

    查看docker镜像

    docker@default:~$ docker images
    REPOSITORY                     TAG        IMAGE ID         CREATED             SIZE
    hub.c.163.com/library/tomcat   latest     72d2be374029     3 months ago        292MB
    

    运行docker镜像,将docker容器的8080端口映射到宿主机的8888端口上

    docker run -i -t -p 8888:8080 72d2be374029
    

    删除镜像

    docker rmi ed9c93747fe1
    

    若镜像有运行的容器则无法删除

    查看运行的docker实例

    docker@default:~$ docker ps

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    1f68cb2ef5ee        72d2be374029        "catalina.sh run"   48 seconds ago      Up 47 seconds       0.0.0.0:8888->8080/tcp   modest_goldwasser
    8409934c431d        72d2be374029        "catalina.sh run"   14 minutes ago      Up 14 minutes       0.0.0.0:8088->8080/tcp   practical_shirley
    

    登录docker容器

    docker exec -i -t 1f68cb2ef5ee /bin/bash
    

    停止docker容器

    docker stop --time=20 container_name
    

    docker stop命令执行的时候,会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认的10秒,会继续发送SIGKILL的系统信号强行kill掉进程。在容器中的应用程序,可以选择忽略和不处理SIGTERM信号,不过一旦达到超时时间,程序就会被系统强行kill掉,因为SIGKILL信号是直接发往系统内核的,应用程序没有机会去处理它。在使用docker stop命令的时候,唯一能控制的是超时时间.

    docker kill --signal=SIGINT container_name
    

    与docker stop命令不一样的地方在于,docker kill没有任何的超时时间设置,它会直接发送SIGKILL信号,以及用户通过signal参数指定的其他信号。

    docker stop命令,更类似于Linux系统中的kill命令,二者都是发送系统信号SIGTERM。而docker kill命令,更像是Linux系统中的kill -9或者是kill -SIGKILL命令,用来发送SIGKILL信号,强行终止进程。

    查看容器的信息

    docker ps命令可以查看容器的CONTAINER ID、NAME、IMAGE NAME、端口开启及绑定、容器启动后执行的COMMNAD。经常通过ps来找到CONTAINER_ID。
    docker ps 默认显示当前正在运行中的container
    docker ps -a查看包括已经停止的所有容器
    docker ps -l 显示最新启动的一个容器(包括已停止的)

    查看docker容器的IP地址

    sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1f68cb2ef5ee
    

    查看日志

    docker logs 1f68cb2ef5ee
    

    跟踪日志,类似 tail -f xxx.log 可以通过ctrl+c退出查看日志

    docker logs -f 1f68cb2ef5ee
    

    Docker统计信息

    docker@default:~$ docker stats
    CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
    1f68cb2ef5ee        modest_goldwasser   0.13%               71.8MiB / 995.7MiB   7.21%               828B / 0B           1.2MB / 0B          41
    8409934c431d        practical_shirley   0.13%               69MiB / 995.7MiB     6.93%               648B / 0B           69.6kB / 0B         43
    
    

    深入容器

    docker inspect 1f68cb2ef5ee
    

    删除容器

    docker rm e6dd317561da
    

    可以通过参数 -f 强制删除运行中的容器。

    删除所有容器

    docker rm 'sudo docker ps -a -q'
    

    docker ps命令会列出所有运行的容器,-a表示列出所有容器,-q表示只需要返回容器的ID

    Docker安装Mysql

    ## 创建mysql本地存储目录
    mkdir -p ~/mysql/data
    docker run -p 3306:3306 --name mysql -v ~/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  -d hub.c.163.com/library/mysql:5.6
    

    -p 3306:3306 是将docker 的3306端口映射到本机3306 端口
    -v ~/mysql/data:/var/lib/mysql 是将docker的/var/lib/mysql 文件夹映射到本机的/mysql/data
    -e MYSQL_ROOT_PASSWORD=123456 输入密码,mysql原始密码为123456

    通过Dockerfile安装Mysql

    Mysql官方提供了安装Mysql的Dockerfile,地址https://github.com/mysql/mysql-docker,这里选择8.0版本,一共三个文件

    在default虚拟机上的docker用户目录下新建一个文件夹mysql,然后将这三个文件放在mysql文件夹下。进入mysql文件夹,执行以下命令即可构建一个新的镜像。

    sudo docker build -t="test/mysql" .
    

    build成功后使用docker images命令即可插件镜像

    docker@default:~/mysql8$ docker images
    REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
    test/mysql                     latest              5320750e685d        2 hours ago         295MB
    

    构建镜像后即可通过docker run命令来启动,需要在启动参数中设置mysql的密码。

    docker run -e MYSQL_ROOT_PASSWORD=123456 5320750e685d
    
  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/umgsai/p/7989005.html
Copyright © 2011-2022 走看看