首先通过ssh进入云服务器。如何ssh进入云服务器。
简单讲解一下docker中镜像和容器,打个比方,镜像相当于印钱的那个模板,容器相当于从模板上拓下来的钱,不同的模板可以印出不同的钱。但容器被修改后也可以变成新的镜像,再印出对应的初始时相同的容器。
因为docker很多命令需要sudo权限,所以需要将当前用户添加进docker用户组中,命令,如下,然后输入用户密码,
sudo usermod -aG docker $USER
从docker官网通过 pull 拉取一个镜像,我通过拉取乌邦图20.04为例,命令如下,如果提示没有权限,要么命令加上sudo,要么执行上一步,后面就可都避免权限不足
docker pull unbuntu:20.04
docker images
如果要删除镜像,表示删除ubuntu:20.04这个镜像
docker image rm ubuntu:20.04
(没有则5,6,7忽略)如果本地已经有了其他服务器上的docker镜像文件,那么直接在本地执行命令,把文件传到云服务器上,然后重新进入服务器,家目录下就能看到 docker文件名
scp 文件名 服务器别名:
然后把将镜像从文件中加载出来,那么镜像存在了,可以用 docker images 查看
docker load -i 文件名
相反的,如果需要把服务器上的docker镜像导出到本地或迁移到其他服务器,则在服务器终端中使用命令,就可以成功导出镜像文件,导出后的文件名为自定义,
docker save -o 导出后的文件名 ubuntu:20.04
但此文件是仅自己可读写,所以需要修改权限,让其他人也能读,命令
chomd +r 导出后的文件名
然后就可以通过把镜像文件迁移到其他服务器上或本地,在其他服务器上通过第 5,6 步 生成新的镜像。
有了docker镜像,就可以使用命令创建容器了。在阿里云服务器中执行命令,这个命令有非常多的参数,感兴趣可以去官网查看
docker create -it ubuntu:20.04
此时就创建好了 unbuntu:20.04的服务器容器,可以通过命令 docker ps -a 查看所有容器,但他没有运行,然后需要下面命令运行容器。
补充:
也可以通过 docker rm 容器id或者名称 命令删除容器,但不能删除在运行的容器,删除之前需要关闭容器,docker container prune 删除所有已停止的容器
docker start 容器id或者名称
id和名称在 docker ps -a 命令显示的容器列表中的id和name,再通过此命令的status就能看到容器的启动情况,此外 docker stop 容器id或者名称 命令可以关闭容器,docker restart 容器id或者名称 可以重启容器,docker run -itd ubuntu:20.04 也可以直接创建并启动容器
运行容器之后,进入容器,只能进入已经运行的容器,进入之后会在root用户的根目录下,跟一个新的服务器一模一样
docker attach 容器id或者名称
退出但挂起容器需要两段操作,先按Ctrl+p,再按Ctrl+q,如果直接退出且关闭容器,则Ctrl+d
容器需要是运行状态
docker exec 容器id或者名称 命令
比如,docker exec 82e84dbce483 ls ,就可以查看82e84dbce483这个容器中根目录下的所有文件。
docker export -o xxx.tar 容器id或者名称
将容器导出到本地文件xxx.tar中 ,然后使用命令 chmod +r xxx.rar 加上可读权限,然后就可以先scp 传到本地,再通过 scp 命令传到其他服务器上,注意此时相当于导出的是容器的镜像,其他服务器是接受的也是次容器的镜像文件。然后其他服务器 docker export docker文件名 就可以获得此docker文件的镜像,大家会发现此步骤跟 上述 5,6,7步骤中的save和load命令非常相似,但两则有一点区别,对容器的导出和导入就是export和import(但其实导入导出的都是容器的模板也是镜像),直接对镜像的导出和导入就是save和load,但export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态,甚至连容器的名字都会被删掉,save/load会保存完整记录,体积更大
容器需要启动,然后 docker attach 容器id或者名称 进入容器,然后执行 top 命令查看当前容器存在的进程,
可以在在云服务器使用命令 docker top 容器id或者名称 查看容器存在进程,两个方法效果基本一样
也可以在云服务器使用命令 docker stats 查看所有容器的资源占用情况
docker cp xxx 容器id或者名称:xxx
docker cp 容器id或者名称:xxx xxx
xxx为文件路径或文件名
镜像生成容器后,容器名是随机的,这时候就可以修改容器名
docker rename 容器旧名 容器新名
比如修改容器内存大小。修改完后可进入容器使用top查看
该命令可以修改的东西非常多,cpu周期,cpu使用数量,内存大小等等,可查看官网
docker update 容器id或者名称--memory 500MB