美文网首页
Docker使用

Docker使用

作者: 王哈哈就很棒 | 来源:发表于2020-05-28 14:17 被阅读0次

    在线体验 docker https://labs.play-with-docker.com/

    更换为国内的源
    vim /etc/docker/daemon.json

    {
    "registry-mirrors": [
    "https://kfwkfulq.mirror.aliyuncs.com",
    "https://2lqq34jg.mirror.aliyuncs.com",
    "https://pee6w651.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
    ],
    "dns": ["8.8.8.8","8.8.4.4"]
    }
    

    systemctl restart docker

    安装

    安装所需的软件包

    yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    

    设置稳定的仓库

    yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    

    安装最新版本的 Docker Engine-Community 和 containerd

    yum -y install docker-ce docker-ce-cli containerd.io
    

    启动

    systemctl start docker
    

    基本命令

    镜像操作

    列出本地镜像

    docker images
    

    列出镜像, 包含中间镜像层

    docker images -a
    

    列出镜像只显示镜像ID

    docker images -q
    

    列出镜像, 含中间镜像层只显示镜像ID

    docker images -qa
    

    显示镜像摘要信息

    docker images --digests
    

    显示镜像完整信息

    docker images --no-trunc
    

    显示指定镜像的历史创建; 参数-H 镜像大小和日期, 默认为true
    --no-trunc 显示完整的提交记录
    -q 仅列出提交记录ID

    docker history -H redis
    

    镜像搜索

    这里搜索mysql镜像为例子

    docker search mysql
    

    --filter=stars=600 只显示stars>=600的镜像

    docker search --filter=stars=600 mysql
    

    --no-trunc显示镜像完整 DESCRIPTION 描述

    docker search --no-trunc mysql
    

    --automated 只列出AUTOMATED=OK 的镜像

    docker search --automated mysql
    

    镜像下载

    下载redis官方最新镜像, 相当于 docker pull redis:latest

    docker pull redis
    

    下载仓库所有redis镜像

    docker pull -a redis
    

    下载私人仓库镜像

    docker pull 仓库用户名/redis
    

    镜像删除

    单个镜像删除, 相当于 docker rmi redis:latest

    docker rmi redis
    

    强制删除(比如删除正在运行的容器进程)

    docker rmi -f redis
    

    多个镜像删除, 以空格间隔开

    docker rmi -f redis mysql nginx
    

    删除本地全部镜像

    docker rmi -f $(docker images -q)
    

    容器操作

    容器操作可使用容器ID(CONTAINER ID)或容器名称(NAMES)
    容器启动
    新建并启动容器
    参数
    -i 以交互模式运行容器
    -t 为容器重新分配一个伪终端
    -d 已守护方式启动容器
    --name 为容器指定一个名称

    docker run -i -t --name mycentos
    docker run -it --name mycentos
    

    后台启动容器

    docker run -d mycentos
    

    启动一个或多个已被停止的容器

    docker start redis
    

    重启容器

    docker restart redis
    

    容器进程
    列出redis容器中运行的进程

    docker top redis
    

    容器日志
    查看redis容器日志, 默认参数

    docker logs redis
    

    查看redis容器日志
    参数
    -f 跟踪日志输出
    -t 显示时间戳
    --tail 仅列出最新N条容器日志

    docker logs -f -t --tail=20 redis
    

    查看容器redis从2019年05月21日后最新10条日志

    docker logs --since="2019-05-21" --tail=10 redis
    

    容器的进入与退出

    使用run方式在创建时进入

    docker run -it centos /bin/bash
    

    容器关闭并退出

    exit
    

    仅退出容器, 不关闭

    ctrl + P + Q
    

    直接进入centos容器启动命令的终端, 不会启动新进程,
    多个attach连接共享容器屏幕
    参数
    --sig-proxy=false 确保ctrl+D或ctrl-c不会关闭容器

    docker attach --sig-proxy=false centos
    

    在centos容器中打开新的交互模式终端, 可以启动新进程
    参数
    -i 即使没有附加也保持STDIN打开
    -t 分配一个伪终端

    docker exec -i -t centos /bin/bash
    

    以交互模式在容器中执行命令, 结果返回到当前终端屏幕

    docker exec -i -t centos ls -l /tmp
    

    以分离模式在容器中执行命令, 程序后台运行, 结果不会反馈到当前终端

    docker exec -d centos touch cache.txt
    

    查看容器

    查看正在运行的容器

    docker ps
    

    查看正在运行的容器ID

    docker ps -q
    

    查看正在运行+历史运行过的容器

    docker ps -a
    

    显示运行容器总文件大小

    docker ps -s
    

    显示最近创建的容器

    docker ps -l
    

    显示最近创建的3个容器

    docker ps -n 3
    

    不截断输出

    docker ps --no-trunc
    

    获取镜像redis的元信息

    docker inspect redis
    

    获取正在运行的容器redis的IP

    docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis
    

    容器的停止与删除

    停止一个运行中的容器

    docker stop redis
    

    杀掉一个运行中的容器

    docker kill redis
    

    删除一个已停止的容器

    docker rm redis
    

    删除一个运行中的容器

    docker rm -f redis
    

    删除多个容器

    docker rm -f $(docker ps -a -q)
    docker rm -f $(docker ps -aq)
    docker ps -a -q | xargs docker rm
    

    -l 移除容器间的网络连接, 裂解名为db

    docker rm -l db
    

    -v 删除容器, 并删除容器挂载的数据卷

    docker rm -v redis
    

    生成镜像

    基于当前redis容器创建一个新的镜像
    参数
    -a 提交的镜像作者
    -c 使用Dockerfile指令来创建镜像
    -m 提交时的说明文字
    -p 在commit时将容器暂停

    docker commit -a="Develop1024" -m="my redis" [容器ID] myredis:v1.1
    

    容器与主机间的数据拷贝

    将redis容器中的文件copy至本地路径

    docker cp redis:/容器路径 本地路径
    

    将主机文件copy到redis容器

    docker cp 本地路径 redis:/容器路径
    

    将主机文件copy至redis容器, 目录重命名为容器路径

    docker cp 本地路径 redis:/容器路径
    

    数据卷,目录映射

    创建数据卷

    docker volume create 数据卷名称
    # /var/lib/docker/volumes/
    

    查看数据卷信息

    docker volume inspect 数据卷名称
    
    [root@localhost tomcat]# docker volume inspect tomcat
    [
        {
            "CreatedAt": "2020-10-15T03:20:45-04:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/tomcat/_data",
            "Name": "tomcat",
            "Options": {},
            "Scope": "local"
        }
    ]
    

    查看全部数据卷

    [root@localhost tomcat]# docker volume ls
    DRIVER              VOLUME NAME
    local               tomcat
    

    删除数据卷

    docker volume rm 数据卷名称
    

    映射数据卷

    如果数据卷不存在, docker会帮你自动创建(会将容器内部的文件映射出来)

    docker run -v 数据卷名称:容器内部路径 镜像id
    

    直接指定一个位置作为数据卷的存放位置(不会将容器内部的文件映射出来,里面是空的)

    docker run -v 路径:容器内部路径 镜像id
    

    Dockerfile

    # Dockerfile 文件常用的内容
    from    指定当前自定义镜像依赖的环境
    copy    将相对路径下的内容复制到自定义镜像中
    workdir 声名镜像的默认工作目录
    cmd 需要指定的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)
    

    制作镜像

    docker build -t 镜像名称[:tag] .
    

    Dockerfile安装nginx

    FROM hub.c.163.com/public/centos:latest
    
    RUN rpm --rebuilddb && yum -y install gcc zlib zlib-devel pcre pcre-devel tar wget
    
    ADD nginx-1.16.1.tar.gz .
    
    WORKDIR nginx-1.16.1
    
    RUN ./configure --prefix=/usr/local/nginx && make && make install
    
    WORKDIR /usr/local/nginx
    
    EXPOSE 80
    
    CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
    

    相关文章

      网友评论

          本文标题:Docker使用

          本文链接:https://www.haomeiwen.com/subject/texaahtx.html