Docker基础

Docker基础学习

解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

Docker官网

docker官网:http://www.docker.com Docker
Hub官网: https://hub.docker.com/

Docker安装

前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,
要求系统为64位、Linux系统内核版本为 3.8以上,这里选用CentOS 8

CentOS8安装Docker

  1. 确定你是CentOS7及以上版本

    cat /etc/redhat-release
    

    在这里插入图片描述

  2. 卸载旧版本

    yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    

在这里插入图片描述

  1. yum安装gcc相关

    yum -y install gcc
    yum -y install gcc-c++
    
  2. 安装需要的软件包(官网要求)

    yum install -y yum-utils
    
  3. 设置stable镜像仓库(阿里云)

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  4. 更新yum软件包索引

    yum makecache fast
    
  5. 安装DOCKER CE(官网要求)

    yum -y install docker-ce docker-ce-cli containerd.io
    
  6. 启动Docker

    systemctl start docker
    
  7. 测试

    docker version
    docker run hello-world
    
  8. 卸载

    systemctl stop docker 
    yum remove docker-ce docker-ce-cli containerd.io
    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

阿里云镜像加速

阿里云官网 https://promotion.aliyun.com/ntms/act/kubernetes.html

登陆阿里云开发者平台 点击控制台
选择容器镜像服务
获取加速器地址

  1. 粘贴脚本直接执行

    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
    }
    EOF
    
  2. 重启服务器

    systemctl daemon-reload
    systemctl restart docker
    

    在这里插入图片描述

Docker常用命令

帮助启动类命令

  1. 启动docker
    systemctl start docker
    
  2. 停止docker
    systemctl stop docker
    
  3. 重启docker
    systemctl restart docker
    
  4. 查看docker状态
    systemctl status docker
    
  5. 开机启动
    systemctl enable docker
    
  6. 查看docker概要信息
    docker info
    
  7. 查看docker总体帮助文档
    docker --help
    
  8. 查看docker命令帮助文档
    docker 具体命令 --help
    例:docker ps --help
    

镜像命令

  1. 列出本地主机上的镜像
    OPTIONS说明:

    • -a :列出本地所有的镜像(含历史映像层)
    • -q :只显示镜像ID
    docker images
    

    在这里插入图片描述

    REPOSITORY:表示镜像的仓库源
    TAG:镜像的标签版本号
    IMAGE ID:镜像ID
    CREATED:镜像创建时间
    SIZE:镜像大小

    同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
    如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

  2. 查询镜像
    OPTIONS说明:

    • –limit : 只列出N个镜像,默认25个
    • docker search --limit 5 redis\
    docker search redis
    

    在这里插入图片描述

  3. 下载镜像

    没有TAG就是最新版
    等价于
    docker pull 镜像名字:latest

    # 下载redis最新版
    docker pull redis
    # 下载redis 6.0.8版本
    docker pull redis:6.0.8
    

    在这里插入图片描述

  4. 查看镜像/容器/数据卷所占的空间

    docker system df 
    

    在这里插入图片描述

  5. 删除镜像

    # 删除单个镜像
    docker rmi -f 镜像ID
    # 删除多个镜像
    docker rmi -f 镜像名1:TAG 镜像名2:TAG
    # 删除全部(慎用)
    docker rmi -f ${docker images -qa}
    

    在这里插入图片描述

容器命令

有镜像才能创建容器,
这是根本前提(下载一个CentOS或者ubuntu镜像演示)

  1. 新建+启动容器

    docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
    OPTIONS说明(常用):有些是一个减号,有些是两个减号
    –name=“容器新名字” 为容器指定一个名称;
    -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
    -i:以交互模式运行容器,通常与 -t 同时使用;
    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    也即启动交互式容器(前台有伪终端,等待交互);
    -P: 随机端口映射,大写P
    -p: 指定端口映射,小写p

    docker run -it ubuntu /bin/bash
    

    在这里插入图片描述

  2. 列出当前所有正在运行的容器

    OPTIONS说明(常用):
    -a :列出当前所有正在运行的容器+历史上运行过的
    -l :显示最近创建的容器。
    -n:显示最近n个创建的容器。
    -q :静默模式,只显示容器编号。

    docker ps
    
  3. 退出容器

    # run进去容器,exit退出,容器停止
    # run进去容器,ctrl+p+q退出,容器不停止
    

    在这里插入图片描述

  4. 启动已停止运行的容器

    docker start 容器ID或容器名
    

    在这里插入图片描述

  5. 重启容器

    docker restart 容器ID或容器名
    
  6. 停止容器

    docker stop 容器ID或容器名
    

    在这里插入图片描述

  7. 强制停止容器

    docker kill 容器ID或容器名
    
  8. 删除已停止的容器

    docker rm 容器ID
    # 一次性删除多个容器实例
    docker rm -f $(docker ps -a -q)
    docker ps -a -q | xargs docker rm
    
  9. 前台交互式启动

    docker run -it redis:6.0.8
    
  10. 后台守护式启动

    docker run -d redis:6.0.8
    
  11. 查看容器日志

    docker logs 容器ID
    
  12. 查看容器内运行的进程

    docker run -d redis:6.0.8
    
  13. 查看容器内部细节

    docker top 容器ID
    
  14. 进入正在运行的容器并以命令行交互

    docker inspect 容器ID
    
  15. 从容器内拷贝文件到主机

    docker cp  容器ID:容器内路径 目的主机路径
    

    在这里插入图片描述

  16. 导入

    export 导出容器的内容留作为一个tar归档文件[对应import命令]

    docker export 容器ID > 文件名.tar
    

    在这里插入图片描述

  17. 导出

    import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

    docker run -d redis:6.0.8
    

    在这里插入图片描述

总结常用命令

attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像
build Build an image from a Dockerfile # 通过 Dockerfile 定制镜像
commit Create a new image from a container changes # 提交当前容器为新的镜像
cp Copy files/folders from the containers filesystem to the host path # 从容器中拷贝指定文件或者目录到宿主机中
create Create a new container # 创建一个新的容器,同 run,但不启动容器
diff Inspect changes on a container’s filesystem # 查看 docker 容器变化
events Get real time events from the server # 从 docker 服务获取容器实时事件
exec Run a command in an existing container # 在已存在的容器上运行命令
export Stream the contents of a container as a tar archive # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history Show the history of an image # 展示一个镜像形成历史
images List images # 列出系统当前镜像
import Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info Display system-wide information # 显示系统相关信息
inspect Return low-level information on a container # 查看容器详细信息
kill Kill a running container # kill 指定 docker 容器
load Load an image from a tar archive # 从一个 tar 包中加载一个镜像[对应 save]
login Register or Login to the docker registry server # 注册或者登陆一个 docker 源服务器
logout Log out from a Docker registry server # 从当前 Docker registry 退出
logs Fetch the logs of a container # 输出当前容器日志信息
port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT # 查看映射端口对应的容器内部源端口
pause Pause all processes within a container # 暂停容器
ps List containers # 列出容器列表
pull Pull an image or a repository from the docker registry server # 从docker镜像源服务器拉取指定镜像或者库镜像
push Push an image or a repository to the docker registry server # 推送指定镜像或者库镜像至docker源服务器
restart Restart a running container # 重启运行的容器
rm Remove one or more containers # 移除一个或者多个容器
rmi Remove one or more images # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run Run a command in a new container # 创建一个新的容器并运行一个命令
save Save an image to a tar archive # 保存一个镜像为一个 tar 包[对应 load]
search Search for an image on the Docker Hub # 在 docker hub 中搜索镜像
start Start a stopped containers # 启动容器
stop Stop a running containers # 停止容器
tag Tag an image into a repository # 给源中镜像打标签
top Lookup the running processes of a container # 查看容器中运行的进程信息
unpause Unpause a paused container # 取消暂停容器
version Show the docker version information # 查看 docker 版本号
wait Block until a container stops, then print its exit code # 截取容器停止时的退出状态值

Docker容器数据卷

Docker容器数据卷有点类似我们Redis里面的rdb和aof文件,将docker容器内的数据保存进宿主机的磁盘中
运行一个带有容器卷存储功能的容器实例
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的

Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。
为了能保存数据在docker中我们使用卷。

特点:
1:数据卷可在容器之间共享或重用数据
2:卷中的更改可以直接实时生效,爽
3:数据卷中的更改不会包含在镜像的更新中
4:数据卷的生命周期一直持续到没有容器使用它为止

宿主vs容器之间映射添加容器卷

 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名
  1. 启动ubuntu镜像
    在这里插入图片描述
  2. 查看数据卷是否挂载成功
    查看数据卷是否挂载成功
  3. 容器和宿主机共享数据
    宿主机
    在这里插入图片描述
    容器中
    在这里插入图片描述

读写规则映射添加说明

  1. 读写(默认
     docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw      镜像名
    
  2. 只读(容器实例内部被限制,只能读取不能写)
     docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro      镜像名
    

卷的继承和共享

	docker run -it --privileged=true --volumes-from u1 ubuntu /bin/bash

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JieNiL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值