搭建云服务器

以下环境为Ubuntu20

云平台作用

关系

  1. 在租到的服务器上搭建docker类似于在服务器上又开了一台虚拟服务器,重新划分了一下服务器的房子
  2. docker的搭建原因:docker有很强的迁移性,例如从阿里云的服务器迁移到腾讯云时,使用docker可以很容易地迁移
  3. docker是非常独立的:可以在一个服务器上开任意多个docker
  4. 未来的开发环境是在docker所在的第三层

选择配置问题

常规搭建步骤

  1. 配置以下本地的 ~/.ssh/config文件,可以实现不用username@hostname,使用别名机制登录
  2. 配置一下免密登录
    ## 免密登录
    1. 在本地(本子上),**ssh-keygen**,会在.ssh/文件夹下生成密钥:id_rsa和公钥id_rsa.pub
    2. 之后想要免密登录哪个服务器,就将本地的公钥传给哪个服务器即可
    3. 在服务器中的.ssh/路径下创建一个 **authorized_keys** 文件,然后将本地生成的密钥复制到这个文件中,如果原本就有这个文件,那么只需要在后面加上密钥即可
    4. 例如,想要免密登录myserver服务器,就将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可
    5. 也可以使用**ssh-copy-id myserver**一键添加公钥
    6. 公钥添加到.ssh/authorized_keys中即可免密登录
    7. 误区:在服务器上的生成了密钥,传到了服务器本身的authorized_keys或者主机上的,**不能自己登自己**
    8. 可以将自己的密钥传递给多个服务器,当服务器很多时,可以实现只需服务器名字登陆![](https://strongwillpro.oss-cn-beijing.aliyuncs.com/img/20220714164253.png)
  3. 配置一下tmux和vim,将本地的.vimrc和.tmux.conf文件传到服务器的根目录下
    scp .vimrc .tmux.conf myserver:

安装docker

  1. 登录docker官网,一步一步来就行

配置docker

https://docs.docker.com/engine/install/ubuntu/

将当前用户添加到docker用户组

  1. 为了避免每一次使用docker都要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组
    sudo usermod -aG docker $USER

基本概念

  1. 镜像:image ,相当于一个模板,每一个镜像都可以生成一堆容器,container
  2. 每个image的名称:xxxx:xxxx,冒号前面为名称,冒号后面为tag,即版本号

镜像

  1. 拉取(从docker Hub中下载一个镜像)一个镜像,此处以拉取20版ubuntu为例,镜像名称:镜像版本
    docker pull ubuntu:20.04
  2. 列出本地所有镜像
    docker images
  3. 删除某个镜像,此处以ubuntu:20为例
    docker image rm ubuntu:20.04 或者 docker rmi ubuntu:20.04
  4. 创建某个container的镜像
    docker [container] commit CONTAINER IMAGE_NAME:TAG
  5. 将镜像ubuntu:20.04导出到本地ubuntu_20_04.tar中(以另一种文件格式保存)
    docker save -o ubuntu_20_04.tar ubuntu:20.04
  6. 将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来
    docker load -i ubuntu_20_04.tar

容器

  1. 利用镜像创建一个容器,create -it
    docker [container] create -it ubuntu:20.04
  2. 查看本地所有的容器,所有创建了的容器,不只是启动了的就加[-a]参数,如果不加-a参数的话就是默认正在启动的容器
    docker ps [-a]
  3. 启动容器,start
    docker [container] start CONTAINER
  4. 停止容器,stop
    docker stop CONTAINER
  5. 重启容器,restart
    docker restart CONTAINER
  6. 创建并启动一个容器,加-d不进入,不加-d就是创建并进入容器,run,-it
    docker run -itd ubuntu:20.04
  7. 进入容器,先按ctrl+p,再按ctrl+q可以挂起容器
    docker attach container
  8. 在容器中执行命令,exec
    docker exec container command
  9. 删除容器,rm
    docker rm container
  10. 删除所有已经停止的容器,prune
    docker container prune
  11. 将容器container导出到本地文件xxx.rar中,export
    docker export -o xxx.rar container
  12. 将本地文件xxx.tar导出为镜像,并且将镜像命名为image_name:tag,import,从本地导向容器是import,从容器导向本地是export,进出关系
    docker import xxx.tar image_name:tag
  13. docker export/import 与docker save/load的区别
    export/import 会丢弃记录和元数据信息,仅仅保存容器当时的快照信息,例如容器的名字就不会保留
    save/load 会保留完整记录,体积更大
  14. 查看某个容器的所有进程,top
    docker top container
  15. 查看所有容器的统计信息,包括CPU,内存,存储,网络等信息,stats
    docker stats
  16. 在本地和容器之间复制文件,还是和cp和scp的格式一样,先source后destination,先从后到,cp
    docker cp xxx container:xxx
    docker cp container:xxx xxx
  17. 重命名容器,rename
    docker rename container1 container2
  18. 修改容器限制,update
    docker update container --memory 500MB

容器和镜像的区别

  1. docker的生命周期:镜像image+容器container+仓库registry,容器是由镜像实例化而来
  2. 容器即为进程,是镜像的实例,是运行环境包的实例,可以针对这个环境包运行N个实例,即容器是镜像的一种具体表现形式
  3. 镜像即为文件,想象为一个盖章,可以盖到任意的docker平台中去运行
  4. 容器是基于镜像所创建的,容器中的进程依赖于镜像中的文件
  5. docker就是一个mini版本的Linux系统,拥有完全与宿主机隔离的系统文件,进程,用户权限,网络空间等
  6. 镜像和容器的先后顺序:现有镜像后由实例的容器,虽然创建镜像可以参考某个容器,但是标准的做法是先制作镜像后跑容器

docker入门概念

  1. 开发和运维工程师的结合,更快的交付



docker和docker hub的关系

  1. docker是官网
  2. docker hub是安装docker镜像的仓库

    dockerfile image container repository

  3. 通过dockerfile可以生成docker image
  4. 自己制作的镜像可以上传到docker hub平台,也可以从平台上拉去我们所需要的镜像
  5. 当镜像拉取到本地后,我们可以实例化这个镜像,形成一个container(实例)了
    docker run [组织名称]/<镜像名称>:[镜像标签]

dockerfile

概念

  1. Dockerfile 是 Docker 比较重要的概念。它是 Docker 创建镜像的核心,它的出现给 Docker 提供了两大好处:

  2. 文本化的镜像生成操作让其方便版本管理和自动化部署

  3. 每条命令对应镜像的一层,细化操作后保证其可增量更新,复用镜像块,减小镜像体积

dockerfile的编写规则

  1. 使用#来注释
  2. from指令告诉docker使用哪个镜像作为基础
  3. run开头的指令会在创建中运行,比如安装一个软件包
  4. copy指令将文件复制到镜像中
  5. workdir指定工作目录
  6. cmd/entrypoint 镜像启动执行命令
  7. 最后执行以下命令即可完成docker镜像的创建
    docker build lizheming/drone-wechat:latest