• docker基本使用总结


    1.安装docker

    docker 官网地址Docker run reference | Docker Documentation

    1.1离线安装

    下载离线包,网址:Index of linux/centos/8/x86_64/stable/Packages/

    离线安装docker需要下载3个包,containerd.io ,docker-ce-cli,docker-ce 和libcgroup-0.41-19.el8.x86_64.rpm

    1.1.1首先安装containerd.io,由于container-io需要秘钥,所以需要使用yum安装方式

    注:所有的安装都是有顺序的,顺序乱了,无法安装注意是centos的还是ubuntu,ubuntu的deb请使用 sudu dpkg -i 安装包的方式安装

    # yum localinstall containerd.io-1.2.6-3.3.fc30.x86_64.rpm

    1.1.2安装Docker-Ce的依赖

    # rpm -ivh libcgroup-0.41-19.el8.x86_64.rpm

    1.1.3安装Docker客户端

    # rpm -ivh docker-ce-cli-19.03.13-3.el8.x86_64.rpm

    1.1.4安装Docker ce

    # rpm -ivh docker-ce-19.03.13-3.el8.x86_64.rpm

    1.2线上安装

    1.2.1为本地yum提供远程repo信息

    # curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

    1.2.2安装依赖

    #yum install-y https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

    1.2.3安装docker-ce

    # yum install -y docker-ce

    1.2.4启动命令

    # systemctl start docker

    1.2.5查看状态

    # docker info

    2.docker 基本命令

    使用docker的命令很多,这里就梳理几个常用的命令,用的时候可是使用 --help 查看可以携带的参数

    1 启动docker

    # systemctl start docker | service start docker

    2 查看docker状态

    # systemctl status docker | service status docker

    3 查看docker服务状态

    # docker info

    4 停止

    # docker systemctl stop docker | service stop docker

    5 搜索服务

    # docker search 镜像名

    6 下载镜像

    # docker pull 镜像名:版本 //可以去docker hup 中查看版本 latest 表示最新版

    7 查看本地镜像

    # docker images //列出本地有的镜像

    8 删除镜像

    # docker rmi 镜像名:版本号 | IMAGE_ID

    9 根据镜像创建容器(不推荐使用)

    # docker create --name nginx -p 80:80 nginx

    docker create --name 自定义容器名 -p 映射到宿主机的端口:容器内端口 镜像名

    具体细节,请参考官网文档

    10 查看正在运行的容器

    # docker container ls

    # docker ps // docker ps -a 查看所有容器

    11 启动 容器

    # docker start 容器名

    12 停止容器

    # docekr stop 容器名

    13 强杀容器

    # docker kill 容器名

    14 创建并运行容器(推荐使用)

    # docker run -d --name nginx -p 80:80 nginx

    // docker run -d --name 自定义容器名 -p 映射到宿主机的端口:容器内端口 镜像名

    携带参数较多,具体细节,请参考官网文档

    15 进入容器内部

    # docker exec -it 容器名 /bin/bash

    16 查找容器

    # whereis mysql

    17 退出容器

    # exit

    18 查看日志

    # docker logs -f容器名

    19 查看容器中的进程

    # docker top 容器名

    20 查看容器内部信息

    # docker inspect 容器名

    21 把容器内部信息复制到本地

    # docker cp nginx:/etc/nginx /data/

    // docker cp 容器名:复制的文件 复制到本地的路径

    22 暂停容器

    # docker pause 容器名

    23 暂停后恢复容器

    # docker unpause 容器名

    24 删除容器

    # docker rm 容器名

    25 查看docker占用的磁盘情况

    # docker system df

    26 删除未使用的镜像和容器释放磁盘空间

    # docker system prune -a

    27 删除数据卷文件并释放磁盘空间

    # dockervolumerm$(dockervolumels-qfdangling=true)

    28 保存镜像到本地

    # docker save -o nginx.war nginx

    29 将文件导入到docker

    # docker load -i nginx.war

    30 标记本地镜像

    # docker tag nginx test/nginx9

    31 清理镜像

    # docker imageprune

    32将日志文件清空

    # truncate-s0/var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

    3.docker数据卷

    数据卷 (Data Volumes) 是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器。

    注意事项:

    挂载数据卷,最好是通过 run 而非 create/start 创建启动容器, create/start 命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以。

    docker 官网推荐尽量进行目录挂载,不要进行文件挂载

    有三种数据卷类型:

    1. 宿主机数据卷:直接在宿主机的文件系统中但是容器可以访问( bind mount )

    2. 命名的数据卷:磁盘上 Docker 管理的数据卷,但是这个卷有个名字。

    3. 匿名数据卷:磁盘上 Docker 管理的数据卷,因为没有名字想要找到不容易, Docker 来管理这些文件。

    数据卷其实都在(如果没有网络文件系统等情况下)宿主机文件系统里面的,只是第一种是在宿主机内的特定目录下,而后两种则在docker 管理的目录下,这个目录一般是 /var/lib/docker/volumes/

    推荐大家使用 宿主机数据卷 方式持久化数据

    3.1宿主机数据卷

    宿主机数据卷其实就是将宿主机中的目录和容器中的目录进行挂载。

    例:docker run --name nginx -itd -p 80:80 -v /data/nginx/:/etc/nginx nginx

    其中/data/nginx 就是我们挂载的目录这样就可以保证容器内中/etc/nginx和宿主机中的目录文件保持一致,即使容器销毁,宿主机中的目录也是存在的。

    3.2命名数据卷

    例:docker run -itd --name nginx -p 80:80 -v nginx-volume:/etc/nginx nginx //nginx-volume为自定义的数据卷名称

    查看数据卷

    # docker volume ls

    查看数据卷在宿主机中的目录

    # docker volume inspect nginx-volume

    /var/lib/docker/volumes/nginx-volume/_data就是宿主机中挂载的目录了。

    3.3匿名数据卷

    创建容器并使用匿名数据卷挂载

    # docker run --name nginx -itd -p 80:80 -v /etc/nginx nginx

    查看数据卷,发现数据卷中多了一个新的数据卷

    # docker volume ls

    查看数据卷详细信息

    # docker volume inspect 0829c4a2b44d2d17c9e85e3a96213401cd9fa8fccfa98315ab6385cfe836ea69

    4.docker网络

    docker 安装后会自动创建三种网络,bridge ,host,none

    查看网络

    # docker network ls

    4.1bridge模式

    默认的网络模式。bridge 模式下容器没有一个公有 ip, 只有宿主机可以直接访问 , 外部主机是不可见的 , 但容器通过宿主机的NAT 规则后可以访问外网。

    bridge网络的表现形式是docker0这个网络接口,默认通过docker0这个接口进行通信。

    可以使用命令 ip a查看多了一个docker0的网络接口

    查看bridge网络的详细信息

    # docker network inspect bridge

    新建bridge网络

    # docker network create -d bridge test-bridge

    可以在创建容器时指定使用的网络

    例:  docker run --name nginx-itd --network test-bridge -p 80:80 nginx

    4.2host模式

    相当于 Vmware 中的 NAT 模式,与宿主机在同一个网络中,但没有独立 IP 地址。

    4.3none模式

    容器并不进行任何网络配置

    5.docker-compose

    安装docker-compose

    官网地址Compose file | Docker Documentation

    下载

    https://github.com/docker/compose

    下载最新版本: 1.27.4

    mv /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

    cp /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

    chmod + x /usr/local/bin/docker-compose

    开发环境可以授予最高权限

    chmod 777 /usr/local/bin/docker-compose

    docker-compose -v

    docker-compose --version

    docker-compose version

    卸载只需要删除二进制文件就可以了

    docker-compose 主要是编写yaml文件

    yaml文件主要包含4个一级key:version、service 、network 、volumes

    version 是必须文件的第一行,它定义了Compose文件合适(主要是版本)

    service 用于定义不同的应用服务

    network 用于指引Docker创建新的网络。默认情况下,会创建bridge网络

    volumes用于指引Docker来创建新的卷

    这里是一个nginx的测试用例可以用来参考,具体yaml的指令请到官网查阅

    version: '3' 
    services:
     test-nginx:
       restart: always
       container_name: test-nginx
       volumes:
         - /data/nginx:/etc/nginx/
       image: nginx:1.19.3-alpine
       ports:
         - 80:80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    启动服务

    docker-compose up -d

    停止服务

    docker-compose down

    列出所有运行容器

    docker-compose ps

    查看服务日志

    docker-compose logs

    构建或者重新构建服务

    docker-compose build

    启动服务

    docker-compose start

    停止已运行的服务

    docker-compose stop

    重启服务

    docker-compose restart

    官网地址: https://docs.docker.com/compose/reference/build/

  • 相关阅读:
    3.docker仓库(Nexus、Harbor)的安装
    MQTT X v1.8.3 正式发布
    宿主机无法连接docker里的redis问题解决(生产环境慎用)
    给 Pod 添加 DNS 记录
    Linux make编译
    mqtt的nginx和websocket部署
    鏖战 Web 性能优化:HTTP
    Harbor镜像层膨胀,占用存储过大
    Turtlebot2简单控制
    Linux C编译器从零开发一
  • 原文地址:https://blog.csdn.net/m0_67393827/article/details/126327460