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
    
  • 相关阅读:
    JAVA BASE64
    Mysql Index extends优化
    JAVA异步加回调的例子
    TCP长连接和短连接的区别
    浅析RPC概念框架
    MySQL Index Merge Optimization
    一简单的RPC实例(Java)
    return语句的用法
    java中对象和对象的引用
    UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
  • 原文地址:https://www.cnblogs.com/umgsai/p/7989005.html
Copyright © 2011-2022 走看看