• 虚拟化容器学习----docker使用


    docker 使用

    遇到的问题

    错误:”Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied“

    解决方案 一

    docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令

    解决方案 二

    使用sudo获取管理员权限,运行docker命令

    docker学习

    修改镜像源:

    1. 直接设置 - registry-mirror参数,仅对当前的命令有效

      docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu.cn

    2. 支持systemctl的系统 sudo systemctl edit docker.service

      生成etc/systemd/system/docker.service.d/override.conf 覆盖默认的参数,在该文件中加入一下内容:

      `[Service]

      ExecStart=

      ExecStart=/usr/bin/docker -d -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn`

    3. 新版的docker推荐使用json配置文件

      若是默认安装则默认为/etc/docker/daemon.json,在该文件中加入以下内容:

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

      推荐镜像源

    docker images 列出本地所有的images

    docker 拉取容器

    docker pull 容器名

    docker 查找容器

    docker search 容器名

    docker 删除容器

    删除所有未运行的容器

    sudo docker rm $(sudo docker ps -a -q)
    

    删除指定容器

    docker rm 容器名/ID
    

    docker 启动容器

    docker run 参数 镜像名称:tag 执行命令

    -i  保持和docker容器内的交互
    -t 为当前容器分配一个客户端
    -d 后台运行容器
    --rm 当容器退出时自动移除这个容器
    --name 为容器指定一个名称
    -p hostPort:dockerPort将容器的端口发布到主机
    -v 宿主机目录:docker容器目录	将宿主机的文件内容信息挂到容器目录下
    
    

    docker 列出容器

    docker ps [OPTIONS]

    -a :显示所有的容器,包括未运行的。
    
    -f :根据条件过滤显示的内容。
    
    --format :指定返回值的模板文件。
    
    -l :显示最近创建的容器。
    
    -n :列出最近创建的n个容器。
    
    --no-trunc :不截断输出。
    
    -q :静默模式,只显示容器编号。
    
    -s :显示总的文件大小。
    

    docker 关闭容器

    1、docker stop 此方式常常被翻译为优雅的停止容器

    docker stop 容器ID或容器名 参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态 docker stop -t=60 容器ID或容器名

    2、docker kill

    docker kill 容器ID或容器名 :直接关闭容器

    ps:stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器

    docker 重启

    docker restart 容器ID或容器名 不管容器是否启动,直接重启容器

    docker进入容器

    进入docker容器内部修改容器内容

    ps进入容器之前需要先启动容器

    docker exec -it 容器名 bash

    exit 退出容器

    宿主机与容器交互

    在宿主机和容器之间相互copy文件

    docker cp [option] LOCALPATH|- CONTAINER:PATH  // 宿主机复制到容器中  
    docker cp [option] CONTAINER:PATH LOCALPATH   // 容器中复制到宿主机中
    
    例子:
    docker 	cp  xxx.jpg tomcat-8000:/usr/local/tomcat/webapp/ROOT  
    docker cp tomcat-8001:/usr/local/tomcat/webapp/ROOT/index.jsp /root
    

    docker 查看日志

    docker得先启动

    docker logs [options] 容器名称/ID
    -f:查看实时日志
    -t:查看日志产生的日期
    -tail=n:查看最后n条日志
    

    docker 数据卷

    数据卷:是一个可供一个或多个容器使用的特殊目录(容器之间的共享数据)

    创建数据卷

    docker volume create 数据卷名称
    

    查看所有数据卷

    docker volume ls
    
    

    docker 安装mysql

    1. 搜索镜像docker search mysql

    2. 下载镜像docker pull mysql:5.7

    3. 创建并启动mysql容器docker run -d --name mysql5.7-3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD='root' mysql:5.7

    4. 访问测试docker exec -it mysql:5.7-3306 bash

      连接mysql数据库:mysql -u root -p

      输入数据库密码(上一步设置的)

    5. 授权其他机器登录GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

    6. 刷新权限FLUSH PRIVILEGES;

    Dockerfile

    Dockerfile 常用命令

    FROM 指定基础镜像

    FROM<镜像>:[tag]
    FROM<镜像>@digest[校验码]
    

    MAINTAINER 提供Dockerfile制作者提供本人信息

    LABLE maintainer = "作者信息<example@123.com>"
    

    ENV 为docker容器设置环境变量ENV 设置的环境变量可以使用docker inspect命令查看 同时还可以使用docker run --env = 来修改环境变量

    ENV JAVA_HOME /usr/local/jdk
    ENV JRE_HOME $JAVA_HOME/jre
    ENV CLASSPATH $JAVA_HOME/lib
    

    USER 用来切换运行属主身份的。Docker默认使用root用户运行

    WORKDIR 用来切换工作目录。Docker默认的工作目录是/

    WORKDIR /usr/local/tomcat/
    

    VOLUME 数据卷

    只能定义docker管理的卷:
    VOLUME /data/mysql 运行时候会随机在宿主机的目录下生成一个卷目录		
    

    COPY 把宿主机的文件复制到镜像中去

    ADD 类似COPY命令

    EXPOSE 为容器打开指定要监听的端口以实现与外部通信

    EXPOSE 80/tcp 23/udp
    

    RUN 用来执行命令行命令的。

    RUN <command>
    RUN ["<executable>","<paraml>","<param2>"]
    

    构建Dockerfile

    docker build -t <名称> .

    build 完成之后会出现在docker的注册表中,使用docker images可以查看到

  • 相关阅读:
    驱动下的异常处理
    头文件 .h 与源文件 .ccp 的区别
    驱动程序进阶篇
    驱动中链表的使用
    内存操作相关内核 API 的使用
    链表的概念、建立、删除与插入
    编写简单的 NT 式驱动程序的加载与卸载工具
    驱动程序入门篇
    c++ 指针的简单用法
    CTL_CODE 宏 详解
  • 原文地址:https://www.cnblogs.com/bananafish/p/12122277.html
Copyright © 2020-2023  润新知