docker入门基础概念

    科技2022-07-15  142

    docker 基础主要由镜像,容器,网络,卷组成。当然还有高级的k8s 服务编排等。本文只整理docker基础概念,docker服务的运行,维护等后续在讨论。

    1 images 镜像

    docker 镜像一般涉及到镜像的拉取,推送,存储等。好比Java类的格式,存储,文件格式等。

    1 docker 仓库

    docker registry: docker镜像仓库,用于存储docker images, 可以通过docker login ,docker pull, docker push 等命令获取/提交镜像。 其中docker Hub是一个比较特殊的docker registry,是docker管理的公共仓库, 默认docker pull/push 都是从这个仓库获取

    2 镜像提交/构建

    构建镜像的方式:

    1 通过 Dockerfile 构建,需要了解Dockerfile 的语法

    docker build --tag hello .

    2 通过运行中的容器构建

    docker commit -m "xxx" containerId

    3 镜像备份导出/导入

    docker images 备份导入通过tar压缩格式文件实现

    ##导出busybox镜像 docker save --output busybox.tar busybox ##导出为gz格式 docker save myimage:latest | gzip > myimage_latest.tar.gz ## 导入镜像 docker load --input fedora.tar

    2 container 容器

    docker 容器,接触过都docker的人,这个应该是接触最多的了。 容器有自己的生命周期。

    ## docker run 启动docker容器,或者交互式运行, 具体可参考 https://www.runoob.com/docker/docker-run-command.html docker run -itd --name centos-test centos:centos7 ## 查看当前活跃的容器 docker ps ## 查看所有的容器 docker ps -a

    启动暂停重启命令 start/stop/restart

    其他命令,可参考https://www.runoob.com/docker/docker-command-manual.html

    3 volume 卷

    docker volume存在的价值是,将docker容器运行过程中的产生的数据做持久化。 比如数据库的数据,就需要使用到volume. 优点:

    剥离docker 容器文件格式和数据格式 多个容器之间共享数据 持久化数据,不受容器删除影响

    docker主要有2种volume技术

    bind-mount 绑定挂载技术, 使用 -v 宿主机目录:容器目录, 还有一种mount的技术也属于此范围,只是命令不太一样 docker manage volume, 由docker容器自动管理, 这部分卷会再/var/lib/docker/<容器id>的方式生成

    ##docker 管理卷的方式 docker run --name box1 -it -v /data busybox ##docker 绑定卷的方式, docker run --name box2 -it -v /docker/data:/data busybox

    4 network 网络

    bridge: 桥接模式,是默认的docker网络环境, docker会构建docker0网桥作为网络基础,docker0网卡与实际网卡通过桥接的方式进行通信。docker 容器之间通过创建一对虚拟网卡veth pair设备与docke0进行连接,从而实现通信host: 主机模式,其实就是和宿主机共享网络macvlan: mac地址vlan网络模式none: 无网络模式,私有容器模式Network plugins: 其他网络插件 ##查看所有docker网络 docker network ls ## 创建网桥 docker network create --driver bridge alpine-net ##检查网桥 docker network inspect alpine-net ## 构建容器alpine1使用alpine-net网络 docker run -dit --name alpine1 --network alpine-net alpine ash

    5 清除命令

    有很多通过组合命令的方式清除的

    一般方式

    1 docker rm $(docker ps -a -q) 删除容器2 docker rmi $(docker images -q -f dangling=true) 删除镜像

    官网prune 命令

    * 1 docker image prune 删除悬空镜像 * 2 docker image prune -a 删除所有未使用的镜像 * 3 docker container prune 删除未使用的容器 * 4 docker volume prune 删除未使用的卷 * 5 docker network prune 删除未使用的网络 * 6 docker system prune 删除所有, docker 版本不一样,有所不同

    上述这些命令具体参考docker 官网: https://docs.docker.com/config/pruning/

    Processed: 0.010, SQL: 8