AcWing Linux基础课第八节docker教程2

12 篇文章 0 订阅

1、该系列为ACWing中Linux基础课,已购买正版,课程作者为yxc
2、y总培训真的是业界良心,大家有时间可以报一下
3、为啥写在这儿,问就是oneNote的内存不够了QAQ
4、该章节为最后一节课,完结撒花

docker教程

docker中包含镜像和容器;镜像可以生成容器,容器修改之后也可以再创造一个镜像。以后迁移即为迁移容器。 镜像和容器类似于印章和图案的关系;
请添加图片描述

docker在存储镜像和容器时采用压缩存储,即镜像1和镜像2/3都不是完全存储的,相同部分只会存一份(类似于git),存在空间优化。

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

sudo usermod -aG docker $USER

2、镜像(images)
[container] 表示命令可省略

  • docker pull ubuntu:20.04:拉取一个镜像(镜像由两部分构成,名称:版本号)
  • docker images:列出本地所有镜像
  • docker image rm ubuntu:20.04docker rmi ubuntu:20.04:删除镜像ubuntu:20.04
  • docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个container的镜像
  • docker save -o ubuntu_20_04.tar ubuntu:20.04:将镜像ubuntu:20.04导出到本地文件ubuntu_20_04.tar
  • docker load -i ubuntu_20_04.tar:将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来

3、容器(container)

  • docker [container] create -it ubuntu:20.04:利用镜像模板ubuntu:20.04创建一个容器。
  • docker ps -a:查看本地的所有容器
  • docker ps:查看所有正在运行的容器
  • docker [container] start CONTAINER:启动容器
  • docker [container] stop CONTAINER:停止容器
  • docker [container] restart CONTAINER:重启容器
  • docker [contaienr] run -itd ubuntu:20.04:创建并启动一个容器
  • docker [contaienr] run -it ubuntu:20.04:创建并启动并进入一个容器
  • docker [container] attach CONTAINER:进入容器
    先按Ctrl-p,再按Ctrl-q可以挂起容器(容器可以不关)
  • docker [container] exec CONTAINER COMMAND:在容器中执行命令(容器要在运行中)
  • docker [container] rm CONTAINER:删除容器
  • docker container prune:删除所有已停止的容器
  • docker export -o xxx.tar CONTAINER:将容器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:查看某个容器内的所有进程(PID和容器内的PID不同)
  • docker stats:查看所有容器的统计信息,包括CPU、内存、存储、网络等信息
  • docker cp xxx CONTAINER:xxxdocker cp CONTAINER:xxx xxx:在本地和容器间复制文件(不论是文件夹还是文件都可以直接复制,不用加-r)
  • docker rename CONTAINER1 CONTAINER2:重命名容器
    将文件夹复制进docker容器的根目录
    docker cp tmp.rar peaceful_kepler:/root
    复制根目录
    docker cp peaceful_kepler:/root .
    
  • docker update CONTAINER --memory 500MB:修改容器限制

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镜像
# -p修改端口号映射,容器内22端口映射到本地20000端口(本地22已占用)
# 需要设置云服务器安全组,从20000端口登陆,来源0.0.0.0/0

docker attach my_docker_server  # 进入创建的docker容器
passwd  # 设置root密码
  • 遇到问题1:

    • 命令:xxx@VM-20-12-ubuntu:~$ ssh root@localhost -p 20000
    • 报错:kex_exchange_identification: read: Connection reset by peer
    • 解决:docker容器中没有安装ssh,运行以下代码,即可以像视频中一样连接
    apt-get install ssh
    apt-get update
    sudo /etc/init.d/ssh start
    
  • 遇到问题2:不同账户免密登陆同一个IP平台的方法:

    • 解决:只需要在.ssh/config文件中,用不同的Host名称即可;
      9 Host zxyServer_docker1
     10     HostName xx.xxx.xx.xxx
     11     User zxy
     12     Port 20000
     13 
     14  Host zxyServer_docker2
     15     HostName xx.xxx.xx.xxx
     16     User acs                                                     
     17     Port 20000
    

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

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

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

然后,可以仿照上节课内容,创建工作账户acs

最后,可以参考ssh登录配置docker容器的别名和免密登录。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值