Docker一定要看官网
至0101配置成功 大概会有后续出入 这里不再细看
知识点
-
logout
关闭当前链接 会话 代表着退出Terminal/tmuxPane/tmux -
docker命令官网上有所有的命令行参数 但是绝大部分都用不到 只用
docker
来实现的 -
docker
是linux
的虚拟机 导出的就是iso镜像 -
绝大部分东西我们一辈子都用不到 安全气囊
-
服务器上搭建一个统一的环境 并且可以迁移
docker命令
容器docekr命令
(一个镜像可以创建很多个容器)
镜像是模子 容器是月饼
查看创建与启动
docker run -p 20000:22 -p 80:80 -p 3000:3000 -p 3001:3001 -p 3002:3002 -itd --name kob_server django_lesson:1.0
查看当前所有容器
- docker ps -a
不加a是正在运行的容器
通过镜像创建一个容器
- docker create -it ubuntu:20.04
it 后面是镜像
启动容器
- docker start Id
停止容器
- docker stop Id
重启容器
- docker restart Id
创建并启动
- docker run -itd ubuntu:20.04
后面这个是镜像
创建并启动并进入
-docker run -it ubuntu:20.04
进入容器( 只能进入正在运行的容器 )
- docker attach NAMES
# 进入容器后 用户root 目录根目录(pwd显示所在目录)
# 可以当成一个完全的新的服务器
退出容器
- ctrl+p ctrl+q
这种会挂起来
ctrl+d
这种方式就会把容器关掉(等价于exit)
外部运行容器命令
- docker exec NAME COMMOND
//必须运行
删除容器
- docker rm NAME
rmi是删除镜像
删除所有已停止的容器
docker container prune
//这里的container不可省略 前面的都可以省略 看到的是简化版本
导出容器
docker export -o 名称.tar NAMES
//这里没有在dokcer里边 但是在虚拟机里面 而没有导出到Terminal
然后加上可读权限chomd +r 名称.tar
(这里指的是 Terminal外面的用户拿着密码 也算其他用户
这样外面的用户才能够读取 ) +r
就代表着 u g o 都添加了读取的权限
下载到本地 scp server1:tmp.tar .
报错 登录 这里名字起错了 mv tmp.tar tmp.rar
登出
重新输入scp server1:tmp.rar .
发送 scp tmp.rar server3:
//server3是要迁移容器的名称
镜像文件的操作
文件导入
docker import tmp.rar
import和export会删除没有用的信息(历史记录 元数据信息)仅仅保留容器的状态
中途是镜像的形式传递 容器本身是不能迁移的 名字都删除了 save load 会保留完整记录 体积更大
容器的模板是可以迁移到 容器是可以生成模板的
导入并添加名称tag
- docker import tmp.rar myubuntu:1.0
后面1.0是tag 这里使用
- docker images
查看导入的
说明导入的是一个镜像
删除镜像
- docker rmi REPOSTTORY+TAG/IMAGE ID
操作容器
容器
created : up表明正在运行 5minAgo说明没有运行 (尽管ps和-a区别明显)
top
命令 查看所有进程() ctrl
+c
重新出现命令行
docker top NAME
查看某个容器的所有进程信息 容器内的pid是容器内的 容器外的是容器外的编号
docker stats
查看所有容器的统计信息 cpu 内存 存储 网络 memUsg内存/limit容量 ctrl
+c
退出
复制文件
- docker cp tmp.rar NAME:路径(NAME:/root)
复制文件从docker
- docker cp NAME:/root .
复制根路径到服务器上(本地复制是需要cp -r的 docker是不需要的)
删除root
rm root/ -r
容器重命名
- docker rename 原名称(NAMES) 新名称
docker更新限制
- docker update docker_lesson(NAMES) --memory 1000M(LIMITS)
如何快速迁移Docker
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
中
迁移到其他服务器 退回AcTerminal
scp server1:ubuntu_20_04.tar .
复制到本地
网速问题
网速快是因为带宽是100M
个人的4MB顶峰是0.5MB 最好挂到tmux里边
传递给另一个服务器
- scp ubuntu_20_04.tar server2:
提取出来
- docker load -i ubuntu_20_04.tar
linux命令补充 4420
linux自动补全
- 这时按下TAB键,如果该命令是唯一的,那么就会自动补全,如果该命令会有很多个,那么需要再按一下TAB键,这时会显示出所有可能的情况,操作者只需要再补几个字母使命令唯一后再按一次TAB键,命令就会补全了
linux知识补充
ls -l
查看文件权限ll
查看所有文件权限chmod +r ubuntu_20_04.tar
添加可读权限
文件的区分
蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件
Tmux补充
-
tmux a
打开最近的session
不新建
ctrl
+insert
复制
shift
+insert
粘贴 -
vim内部的复制粘贴
ctrl+a [
选择文本
ctrl+a ]粘贴
ps:本文所有大写NAME
都代表着可替换的变量属性
linux 文件属性与权限
chmod # 更改文件的权限
chown # 改改文件的属主与属组
chgrp # 只是更改文件的属组
权限
-rwxrw-r--
这个字符串有10位 可以分为4段来解读 //注:r--可读,w--可写,x--可执行
第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;
第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限;
第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限;
第四段(第8-10位,共3个字符串)表示其他用户对它的权限
我们用3位8进制来表示文件的权限,
上图中的-rwxrw-r--可以用八进制数字764表示 必是r开头
- rwx rw- r--
普通文件 文件主 组用户 其他用户
修改文件权限 属性(chmod)
chmod [who] [+ | - | =] [mode]
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限
r 可读
w 可写
x 可执行
数字r用4标识,w用2标识,x用1标识 0表示没有任何权限 从0-7共8种 0+(3+3+1)
例子
chmod ug+w,o-x text 给text主人和同组增加写入 其他用户删除执行
chmod 644 mm.txt ->-rw-r--r-- >u 读写 g 读 o 读
- 使用
ls -l/ll
查看本目录下的文件权限
课程之 搭建统一环境
根据讲义 复制#号以前的名称
更改servername为自己的服务器别名
删除以前的docker
$ docker stop docker_lesson
$ docker rm docker_lesson
提取印章
docker load -i docker_lesson_1_0.tar
提取后
看一看 docker images
改一下印章
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0
-p 将容器的22端口映射为20000端口 我们本地需要登录 已经被用过了
名称定义成my_docker_server
配置密码与免密登录
为了配置ssh免密登录
一定要配置一个密码
密码配置
云平台控制台设置密码是网页设置密码
自己的服务设置密码 进到服务器里passwd
就可以设置一个密码了
root用户特殊性
root用户只能设置密码 不能修改密码 因为root用户权限无限大
简易的只能登陆的镜像 ctrl p
+ctrl q
开放端口
登陆的话 (通过服务器
登录) ssh root@127.0.0.1(localhost) -p 20000
在AcTerminal
放行20000
端口
-
网络和安全组->安全组配置
-
查看详情->防火墙->修改规则->添加->自定义->启用->
0.0.0.0/0
->Tcp->20000->允许
配置完之后 就可以在其他地方调用云服务器上的云服务器了
ssh root@公网ip -p 20000
在阿里云服务器上给自己分配了一个跟阿里云服务器同等性能的服务器 登陆的是自己创建的服务器
课程命令总结
adduser acs;usermod -aG sudo acs;//登录acs到此服务器
ssh acs@公网ip -p 2000
配置免密登录 vim .ssh/config
Host server2
HostName User Port 20000
ssh-copy-id server1_docker
docker的优越性
只有多一步隔离才能脱离云平台
的控制 而且才能和我们上课的环境一样
先进入根目录(docker
容器的root
装的)装一下sudo
(这一层并没有配置免密登录)
完善docker->root->acs
apt-get install sudo
进入server1_docker
sudo apt-get install tmux;
装完tmux配置一下自己的tmux环境
退回AcTerminal
scp .bashrc .vimrc .tmux.conf server1_docker:
通过AcTerminal速度有几十兆 放到官方里就特别漫
初恋AcTerminal已经离我们远去了 到大学里创建一个和初恋完全相同的服务器
Docker用法
所有操作尽量在tmux里边执行 体验过一次就知道它的好处了
拉取的镜像
每个镜像都有两个部分构成 名称:版本/tag
docker pull ubuntu:20.04
是从docker的官方库里下载的
使用docker images
来查看已下载的Docker镜像有哪些
具体命令请查看讲义Docker教程
先删除后解压出来 查看是否可以释放出来
Docker基础概念
Docker会有很多镜像(image s) 模板 一个Image生成很多容器 用相同镜像生成的容器(container)都完全一样
每个容器都是一个就相当于完全独立的云服务器 Docker会做很多优化 像git一样进行压缩
由母模板改进的img不会单独存一份 而是相同的只存一份 容器修改完也可以生成一个镜像
迁移实际上是容器迁移 容器才是真正的服务器 生成一个镜像 是可以下载的压缩文件 可以传到其他服务器上
将这个镜像加载到docker里边 用镜像再生成一个新的容器
迁移是克隆一个容器 再将原来的杀掉
服务器配置
自己租的服务器都不一样轻量级也可以
不同运行环境都有都有相同配置
使用docker 我们使用acterminal未来统一服务器的环境
应用层/Docker层
开好几个Docker 容器 开发在Docker里边 在Acterminal统一发放镜像
cd /var/lib/acwing/
cd docker/ cd iamges/ (镜像)
docker_lession_1.0.tar 教学用的镜像
文件夹下接受 用这个来生成docker运行环境
把东西挂在tmux里边 就可以干别的事情 过几个小时一看就可以了
最好自己安装一遍Docker 添加当前用户的Docker至Docker用户组
sudo usermod -aG docker $USER
注意:直接复制此命令 $USER 不用改
终端与tmux
终端在里面输入命令,用户与计算机的临时的交互,称为一次”会话” session
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,
会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。
当窗口被意外终端 是找不回上一次执行的命令的.因为上一次 SSH 会话已经终止了,
里面的进程也随之消失了.Tmux 就是会话与窗口的”解绑”工具,将它们彻底分离.
-
单个窗口多个会话
-
窗口任意的水平垂直拆分
配置Dokcer
表头
Idea操 作 指 南:https://www.acwing.com/blog/content/25456/
每次都要点击的网址:https://www.acwing.com/blog/content/28250/
G i t B a s h : https://www.acwing.com/blog/content/22768/
WindowsIdea :https://www.acwing.com/blog/content/23868/
Linux讲义:https://www.acwing.com/file_system/file/content/whole/index/content/3074146/
Orz