• 【Docker】说明与使用


    一、Docker介绍

    1、是一个开源的应用容器,基于go语言并遵从Apache2.0 协议开源。可以使开发者打包应用及依赖包到一个轻量级、可移植的容器中,后发布到流行的Linux机器上,也可以是实现虚拟化。

    2、容器是完全使用沙箱机制,相互之间不会有任何接口(类似Iphone的app),更重要的是容器性能开销极低。

    3、应用场景:Web应用的自动化打包和发布,自动化测试和持续集成、发布,在服务型环境中部署和调数据库或其它的后台应用,从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境

    Docker 官网:https://www.docker.com

    Github Docker 源码:https://github.com/docker/docker-ce

    二、ubuntu安装docker

    1、docker下载
    1)添加源,和密钥(清华源)

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    2)docker官方源
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    2、安装

    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io

    3、设置docker开机启动
    sudo systemctl enable docker.service
    4、用户加进docker用户组
    sudo gpasswd -a your_user docker
    newgrp - docker
    5、修改docker存储路径(如果需要换路径的话)
    docker默认会撞到系统盘里,但系统盘可能是个容量比较小的ssd。如果容器占空间较大,并且有持续增长的可能,最好把docker存储路径修改到大容量data盘的目录上。

    sudo vi /usr/lib/systemd/system/docker.service
    编辑docker服务配置文件,修改如下位置的配置

    [Service]
    #ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /media/data1/service/docker
    应用配置,重启docker服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    6、查看docker是否安装成功

    docker --version

    三、ubuntu卸载docker

    1、删除docker,和安装docker时自动安装的组件
    sudo apt autoremove docker docker-ce docker-engine docker.io containerd runc
    dpkg -l | grep docker
    sudo apt autoremove docker-ce-*
    2、删除docker的相关配置&目录
    sudo rm -rf /etc/systemd/system/docker.service.d
    sudo rm -rf /var/lib/docker
    3、 查看docker没有命令即卸载完成

    docker --version

    四、常用命令

    https://blog.csdn.net/qq_44747572/article/details/120831629
    https://blog.csdn.net/qq_44858888/article/details/124084408

    • docker下载镜像(安装python):docker pull python:3.6
    • 查看镜像:docker images
    • 查看镜像详情:docker inspect 镜像名或镜像id
    • 查看镜像历史:docker history 镜像名或镜像id
    • 运行镜像文件(docker中运行python):docker run -it python:3.6 /bin/bash
    • 查看Docker容器ID:docker ps -a
    • 查看容器日志信息:docker container logs 802  #802为自己的容器id(一般写前三位)
    • 停止运行的容器:docker container stop 802 #802为容器id
    • 重新启动容器:docker container restart 802  #802为容器id
    • 进入(exec)指定容器(Container):docker exec -it 802 bash   #802为容器id
    • 从容器(Container)中退出:exit
    • 依据容器ID进行镜像制作:docker commit 容器ID new_python:3.6。如:docker commit 4a4efe8b4dd4 new_python:3.6
    • 查看的镜像是否存在:docker images
    • 镜像打包(导出镜像):docker save repository:TAG|gzip>镜像名。如:docker save new_python:3.6 | gzip >python_images.tar.gz
    • 镜像文件导入:docker load <tar 包所在路径。如:docker load < tar /home/test/python_images.tar.gz
    • 删除容器:docker container rm (-f) 容器ID   #-f强制删除
    • 删除镜像文件:docker image rm 镜像名称
    • 删除所有的容器Id:docker rm $(docker ps -a -q)
    • 删除所有的images: docker rmi $(docker images -q)
    • 清理所有处于终止容器:docker container prune

    注:

    容器是基于镜像创建的,一般是先停止容器,删除容器,在删除镜像

    五、举例

    1、mysql

    1)搜索镜像:docker search mysql(指定版本:docker search mysql:5.7)

    2)将查询的镜像拉取到本地:docker pull mysql (指定版本:docker pull mysql:5.7)

    3)查看镜像是否安装成功:docker images

    4)容器中运行镜像:

    docker run --name Dmysql5 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=****** -d mysql

    5)查看当前运行的全部容器:docker ps -a

    6)进入镜像:docker exec -it 容器id bash

    7)登录mysql:mysql -u root -p

    8)修改权限-远程授权:
    ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '*****';
    FLUSH PRIVILEGES;

    注:

    aliyun-安全组需添加3306端口

    2、redis

    1)搜索镜像:docker search redis:6.2.6

    2)拉取最新的镜像:docker pull redis(指定版本的docker pull redis:6.2.6)

    3)查看下载的镜像:docker images

    4)创建目录:

    mkdir -p /root/myredis/conf

    touch /root/myredis/conf/redis.conf

    5)运行镜像:

    docker run -p 6379:6379 --name myredis -v /root/myredis/conf/redis.conf:/etc/redis/redis.conf -v /root/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass '*****'

    -p -p 6379:6379 宿主机的端口映射到 doker 容器的端口
    -v 绑定一个卷 将redis的配置文件/数据 映射到 宿主机的文件中
    -d 后台运行
    –appendonly yes 打开 AOF每次Redis收到更改数据集的命令(例如SET)时,它都会将其附加到 AOF。当您重新启动 Redis 时,它将重新播放 AOF 以重建状态
    redis-server /etc/redis/redis.conf 启动以 /etc/redis/redis.conf 下的配置文件启动
    –requirepass ‘ab123456’ 设置访问密码为*****

    6)redis镜像修改密码---待

    • 进入redis的容器 docker exec -it 容器ID bash
    • 进入redis目录 /usr/local/bin
    • 运行命令:redis-cli
    • 查看现有的redis密码:config get requirepass
    • 设置redis密码config set requirepass ****(****为你要设置的密码)
    • 若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码

    7)查看运行的镜像:docker ps -a

    8)连接redis:docker exec -it myredis redis-cli -a ab123456

    9)设置redis开启自启动:docker update myredis --restart=always

  • 相关阅读:
    C# 备份、还原、拷贝远程文件夹
    C#SpinWait和volatile一点温习
    Asp.net Core中使用Redis 来保存Session, 读取配置文件
    C# Round源码
    C# CRC16 和汉明重量
    .net源码调试 http://referencesource.microsoft.com/
    Session.Abandon和Session.Clear的实现和区别
    log4Net 高性能写入和CSV格式
    asp.net 简单记录请求的客户端和服务端 处理时间
    asp.net 用JWT来实现token以此取代Session
  • 原文地址:https://www.cnblogs.com/shuozhang/p/16349488.html
Copyright © 2020-2023  润新知