• Linux学习笔记-Docker安装配置及使用教程


    笔记内容转载自AcWing的Linux基础课讲义,课程链接:AcWing Linux基础课

    1. Docker安装

    Ubuntu 系统 Docker 官网安装教程:Docker Install Docs

    本文安装 Docker 所使用的 OS 版本为:Ubuntu 22.04 (LTS)。依次执行以下命令安装 Docker:

    (1)更新 apt

    sudo apt-get update
    
    • 1

    (2)允许 apt 通过 HTTPS 使用存储库:

    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3)添加 Docker 的官方 GPG 密钥:

    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    • 1
    • 2

    (4)设置 repository

    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    • 1
    • 2
    • 3

    (5)安装 Docker Engine,首先更新 apt

    sudo apt-get update
    
    • 1

    (6)安装 Docker EnginecontainerdDocker Compose

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    • 1

    (7)检查版本:

    docker -v
    docker --version
    
    • 1
    • 2

    2. Docker教程

    (1)将当前用户添加到 docker 用户组
    为了避免每次使用 docker 命令都需要加上 sudo 权限,可以将当前用户加入安装中自动创建的 docker 用户组(可以参考官方文档):

    sudo usermod -aG docker $USER
    
    • 1

    执行完此操作后,需要退出服务器(即关闭系统),再重新登录回来,才可以省去 sudo 权限。

    (2)镜像(images)
    一个 Docker 中可以有很多镜像,镜像就相当于模板,每个镜像中又可以有很多容器。

    用相同镜像生成的容器环境都一样,如果 Docker 安装在云服务器上,那么每个容器也就相当于是一个独立的云服务器。

    迁移项目的时候即将容器先生成一个镜像,然后把镜像传到远程服务器上。

    • docker pull ubuntu:20.04docker pull ubuntu:latest:拉取一个镜像。
    • docker images:列出本地所有镜像。
    • docker save -o ubuntu_latest.tar ubuntu:latest:将镜像 ubuntu:latest 导出到本地文件 ubuntu_latest.tar 中,导出后记得给文件加上可读权限:chmod +r ubuntu_latest.tar
    • docker image rm ubuntu:latestdocker rmi ubuntu:latest:删除镜像 ubuntu:latest
    • docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个 container 的镜像,[] 表示 container 为可选字段。
    • docker load -i ubuntu_latest:将镜像 ubuntu:latest 从本地文件 ubuntu_latest.tar 中加载出来。

    (3)容器(container)

    • docker [container] create -it ubuntu:latest:利用镜像 ubuntu:latest 创建一个容器。
    • docker ps -a:查看本地的所有容器,docker ps 为查看运行中的容器。
    • docker [container] start CONTAINER:启动容器,CONTAINER 可以是 ID 或 NAMES。
    • docker [container] stop CONTAINER:停止容器。
    • docker [container] restart CONTAINER:重启容器。
    • docker [contaienr] run -itd ubuntu:latest:创建并启动一个容器,可以加上参数 -p 20000:22 表示将容器的22端口映射到本地的20000端口,因为本地的22端口已经被占用了,且如果是在云服务器安装 Docker 还需要修改云服务器安全组配置,把20000端口放行。
    • docker [container] attach CONTAINER:进入容器。
      • 先按 Ctrl+p,再按 Ctrl+q 可以挂起容器,即退出但不关闭容器。
      • Ctrl+d 可以退出并关闭容器。
    • docker [container] exec CONTAINER COMMAND:在容器中执行 COMMAND 命令。
    • docker [container] rm CONTAINER:删除容器。
    • docker container prune:删除所有已停止的容器。
    • docker export -o xxx.tar CONTAINER:将容器导出到本地文件 xxx.tar 中。
    • docker import xxx.tar image_name:tag:将本地文件 xxx.tar 导入成镜像,并将镜像命名为 image_name:tag
    • docker export/importdocker save/load 的区别:
      • export/import 会丢弃历史记录和元数据信息,仅保存容器当时的快照状态。
      • save/load 会保存完整记录,体积更大。
    • docker top CONTAINER:查看某个容器内的所有进程。
    • docker stats:查看所有容器的统计信息,包括 CPU、内存、存储、网络等信息。
    • docker cp xxx CONTAINER:xxxdocker cp CONTAINER:xxx xxx:在本地和容器间复制文件。
    • docker rename NAMES1 NAMES2:将 NAMES1 容器重命名为 NAMES2
    • docker update CONTAINER --memory 500MB:修改容器限制,更多修改内容可以在官网查找。
    • 进入容器后输入 passwd 可以设置 root 密码。

    (4)云服务器配置示例
    首先在 AC Terminal 中操作:

    scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server_name:  # 将镜像上传到自己租的云端服务器
    ssh server_name  # 登录自己的云端服务器
    
    docker load -i docker_lesson_1_0.tar  # 将镜像加载到本地
    docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0  # 创建并运行docker_lesson:1.0镜像的容器
    
    docker attach my_docker_server  # 进入创建的docker容器
    passwd  # 设置root密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    然后去云平台控制台中修改安全组配置,放行端口:20000。

    返回 AC Terminal,即可通过 SSH 登录自己的 Docker 容器:

    ssh root@xxx.xxx.xxx.xxx -p 20000  # 将xxx.xxx.xxx.xxx替换成自己租的服务器的IP地址
    
    • 1

    创建 acs 用户:

    adduser acs  # 创建用户acs
    usermod -aG sudo acs  # 给用户acs分配sudo权限
    
    • 1
    • 2

    最后可以配置 Docker 容器的别名和免密登录。

    Tips:如果 apt-get 下载软件速度较慢,可以参考清华大学开源软件镜像站中的内容,修改软件源。

    3. 云服务器配置

    3.1 初始化与安全组设置

    以阿里云 ECS 服务器为例,购买云服务器后第一步先重置示例的密码:

    在这里插入图片描述

    安全组控制服务器的哪些端口是可以访问的:

    • 80端口:如果有网站的话作为网站的 HTTP 访问端口。
    • 443端口:HTTPS 加密访问端口。
    • 22端口:SSH 登录端口。

    在这里插入图片描述

    3.2 SSH远程连接被拒问题

    注意如果是学生免费领取的 ECS 体验云服务器在 SSH 远程登录时可能会遇到报错:Permission denied (publickey),我们在阿里云控制台中点击远程连接,然后选择 VNC 远程连接(第一次登录需要重置密码):

    在这里插入图片描述

    在这里插入图片描述

    登录到自己的根用户,编辑服务器上的 sshd_config 文件:vi /etc/ssh/sshd_config,翻到最下面找到 PasswordAuthentication,将其改为 yes 即可。

    在这里插入图片描述

    在这里插入图片描述

    3.3 创建用户

    由于根用户权限太大,一般来说我们需要创建一个用户,给其分配 sudo 权限,首先可以使用以下命令查看所有用户的详细信息,其中包含七个字段,每个字段之间用冒号分隔,分别为用户名、密码、用户 ID、群组 ID、用户信息、家目录、Shell类型:

    cat /etc/passwd
    
    显示如下
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    sys:x:3:3:sys:/dev:/usr/sbin/nologin
    sync:x:4:65534:sync:/bin:/bin/sync
    ......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    创建一个用户并分配权限:

    adduser asanosaki
    usermod -aG sudo asanosaki
    
    • 1
    • 2

    删除用户命令:

    userdel -r asanosaki
    
    • 1

    3.4 环境配置

    首先更新一下 apt

    sudo apt-get update
    
    • 1

    安装 Tmux 和 Git:

    sudo apt-get install tmux
    sudo apt-get install git
    
    • 1
    • 2

    然后可以将本地的配置文件(如 Vim、Tmux等)上传到云服务器上即可找到自己熟悉的感觉:

    scp .bashrc .vimrc .tmux.conf asanosaki@<云服务器IP地址>:
    
    • 1
  • 相关阅读:
    2022-04-25-ElasticSearch
    137. 只出现一次的数字 II
    PMP每日一练 | 考试不迷路-11.23(包含敏捷+多选)
    Android多线程学习:线程池(二)
    关于mpy电压采集模块的那些事儿(ads1256 ads8688 ad7606)
    TypeError: namedtuple() got an unexpected keyword argument -verbose
    jvm学习第三天
    测试技能提升篇——了解Tomcat架构需要知道的事儿!
    Python实现基于VGG16迁移学习实现手写数字识别
    堆排序(大根堆与小根堆)
  • 原文地址:https://blog.csdn.net/m0_51755720/article/details/128000010