栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Dokcer常见命令及使用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dokcer常见命令及使用

Dokcer使用及常见命令

文章目录
  • Dokcer使用及常见命令
    • docker安装
    • docker常见操作
    • dockerfile使用
    • 举例:docker镜像安装mysql实例
    • 举例:MySQL、Redis、Nacos启动


docker安装
  1. 官网访问:https://docs.docker.com/engine/install/centos/

  2. 删除旧版:

    sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    
  3. 安装准备环境,并添加docker下载地址

    sudo yum install -y yum-utils
    
     sudo yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    
  4. 安装docker-ce和docker-ce-cli

    sudo yum install docker-ce docker-ce-cli containerd.io
    
  5. 启动docker

    sudo systemctl start docker
    
docker常见操作

注意:

  1. 如果使用docker run -d 命令,当只有后台进程,没有前台进程的时候,且后台进程中没有阻塞线程,相关命令运行完毕后,docker容器实例会自动关闭

  2. docker attach只能进入容器终端,但是exec可以进入终端,也可以在容器外部执行命令

  3. docker run -v hostpath:dockerpath 当host或vm的路径不存在时,会自动创建相应目录。同时,即便是容器关闭后,主机修改相应目录,当容器重启后,数据依然可以自动同步。
    注:-v在挂载文件的时候,容易造成映射错误,提前给待操作目录授权chmod -R 777 dir

    ## 帮助操作
    # 查看docker版本
    docker version
    # 查看docker信息
    docker info
    # 查看docker帮助
    docker --help
    
    
    ### 镜像操作(针对镜像dname)
    # 查看本地镜像信息
    docker images
    -a  ## 显示所有
    -q  ## 显示id
    --digests  ## 摘要信息
    --no-tunc  ## 完整镜像信息
    # 到dockerhub查询镜像
    docker search dname
    # 拉取镜像
    docker pull dname:latest
    # 删除镜像
    docker rmi dname
    docker rmi -f dname ## 强制删除
    docker rmi -f $(docker images -qa) ## 全部删除
    # 根据现有实例生成新镜像
    docker commit -a="author" -m="info" diname newdname:2.1
    
    
    ### 实例操作(针对镜像创建的实例diname)
    ## 针对实例外部整体进行操作
    # 创建实例并启动
    sudo docker run 
    -it ## 打开伪终端界面
    --name diname 
    -v hostpath:dockerpath    ## 目录映射
    -v hostpath:dockerpath:ro    ## 目录映射+只读读权限控制(host可读写,但docker只读)
    -p hostport:dockerport    ## 端口映射(P表示随机端口映射)
    -e MYSQL_ROOT_PASSWORD=root    ## 改参数
    -d   ## 后台运行
    dname   ## 启动的镜像名
    ls -l  ## dockerrun后面还可以加cmd命令
    
    # 启动容器
    docker start diname
    # 重启实例
    docker restart diname
    # 停止实例
    docker stop diname
    docker kill diname  ## 强制停止实例
    # 更新实例参数(如设置开机自动启动)
    docker update --restart=always diname
    docker update --restart=no diname
    # 删除实例
    docker rm diname
    docker ps -qa | xargs docker rm  ## 删除所有
    # 查看启动了哪些实例(-a所有)
    docker ps ## 显示正在运行的容器
    docker ps -a  ## 显示所有容器
    # 查看日志
    docker logs
    -t  ## 带时间戳
    -f  ## 持续更新
    --tail  ## 打印最后XX条
    diname
    
    
    ## 针对实例内部操作
    # 进入docker bash
    docker attach diname
    docker exec -it diname
    docker exec -it diname /bin/bash  ## 同上
    # 在docker内部执行某个命令
    docker exec -it diname ls -l /tmp 
    # 启动redis
    docker exec -it redis redis-cli
    # 退出容器
    exit  ## 停止退出
    ctrl + p + q  ## 不停止退出
    # 查看容器内部的进程
    docker top diname
    # 查看容器内部细节
    docker inspect diname
    # 从容器中把数据拷贝出来
    docker cp diname:/dockerpath /rootpath
    
dockerfile使用

作用:用于组装出一个符合要求的docker镜像

  1. dockerfile模板:

    From centos
    
    ENV mypath /tmp
    WORKDIR $mypath
    
    RUN yum -y install vim
    RUN yum -y install net-tools
    
    # 生成镜像时,会将文件拷贝到/usr/local/目录中,并自动解压缩。
    ADD a.tar.gz /usr/local
    # 被其他镜像继承时才会触发。
    ONBUILD ["ls","-l"] 
    EXPOSE 80
    # ENTRYPOINT只有一个,会把CMD的命令作为参数。
    # 如果在docker run阶段有新的命令,则会替代CMD命令作为ENTRYPOINT的参数
    ENTRYPOINT ["ls","-l"] 
    # CMD可以定义多条,但只有最后一条会被执行,且会被docker run后的命令替换
    CMD ["/usr/local"]
    CMD /bin/bash 
    
  2. dockerfile构建:

    docker build -f dockerfile -t dname
    
举例:docker镜像安装mysql实例

执行顺序会影响run的成功与失败

  1. dockerhub查找

    https://hub.docker.com/search?q=&type=image

  2. pull images拉取

    docker pull mysql:8.0.28
    
  3. start images启动(docker run --name dname)

    注:-v在挂载文件的时候,容易造成映射错误,提前给待操作目录授权chmod -R 777 dir

    # 实例启动
    sudo docker run --name mysql 
    -v /usr/local/mysql/log:/var/log/mysql    ## 日志映射
    -v /usr/local/mysql/data:/var/lib/mysql   ## 数据映射
    -v /usr/local/mysql/conf:/etc/mysql    ## 配置映射
    -p 3306:3306   ## 端口映射
    -e MYSQL_ROOT_PASSWORD=root    ## 改参数
    -d   ## 后台运行
    mysql:5.7   ## 启动的服务镜像名称
    
举例:MySQL、Redis、Nacos启动
## mysql(-v的顺序不同,可能导致image启动失败,)
#创建文件
mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/conf
#运行mysql
sudo docker run --name mysql 
-v /usr/local/mysql/log:/var/log/mysql 
-v /usr/local/mysql/data:/var/lib/mysql 
-v /usr/local/mysql/conf:/etc/mysql/conf.d 
-p 3306:3306 
-e MYSQL_ROOT_PASSWORD=root 
-d mysql:8.0.28
# 改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;

## redis
mkdir -p /usr/local/redis/conf/
touch /usr/local/redis/conf/redis.conf
sudo docker run --name redis 
-v /usr/local/redis/data:/data 
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf 
-p 6379:6379 
-d redis redis-server /etc/redis/redis.conf 

## nacos
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/865268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号