Docker:复习安装使用

docker:差不多就是服务器的虚拟机。
环境:Ubuntu20.04LTS(腾讯云的)
docker:

概念

镜像(image)和容器(container)

  1. 镜像相当于一个模板,同一个镜像生成的容器环境一样。
  2. 每一个容器相当于一个完全独立的云服务器。
  3. 迁移docker的时候,实际上迁移的是容器。

安装

[官网](https://docs.docker.com/engine/install/linux-postinstall/)


另外建议用一个普通用户进行操作,不要root。

  1. 安装环境之前,需要更新一下软件sudo apt-get update

  2. 更新环境之后,在安装一个tmuxsudo apt-get install tmux(tmux一些个性设置,可以去百度搜索一下更改下)

  3. 打开官网,翻到如下位置,复制粘贴4个命令即可。

  4. 第一步sudo apt-get update,这个前面已经弄过,跳过

注意从这一步开始安装,就要开一个tmux,在这里安装,防止掉线或者闪退可以再次恢复进程。

  1. 第二步:

如果需要输入y的地方直接输入y即可。

sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
  1. 第三步
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 第四步
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 第五步
    sudo apt-get update
  2. 第六步
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  3. 到这里就安装完成了,输入命令docker --version即可查看是否安装成功


首要设置

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

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

  • 配置之后:

还是权限拒绝,这个时候exit退出ssh连接,然后在ssh登录即可。(如果你不是ssh登录的,退出重登即可。让服务器刷新配置。)



使用

镜像(images)


  1. 安装完docker之后,我们首先需要拉取一个镜像,先开一个指定名称docker_test的tmuxtmux new -s docker_test , 拉取镜像docker pull ubuntu:20.04

有关tmux的几个简单命令,贴在这里:

  1. tmux a -t 名字 :进入指定的session
  2. tmux ls 列出所有的session
  3. tmux new -s 名字 :创建指定名字的session
  4. 在tmux里面复制:
  • 选中:先ctrl+a然后按一下 [ ;鼠标再选中。
  • 粘贴:先ctrl+a然后按 ] ;即可出现内容。
  1. docker images 可以查看所有的镜像

  2. docker image rmi ubuntu:20.04删除镜像,如果不让删除,可以在rmi后面加个-f

  3. docker save -o ubuntu_20_04.tar ubuntu:20.04:将镜像ubuntu:20.04导出到本地文件ubuntu_20_04.tar中

  4. docker load -i ubuntu_20_04.tar:将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来

可以看到镜像成功加载出来。所以,迁移到别的服务器也是同理,把文件先传到指定的服务器,然后再加载即可

  1. 补充一个命令:
//【】中的内容是可选项
docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个container的镜像
  1. 重命名镜像
docker tag 镜像id 重命名后的名字
# 然后将原来的image名称删除
docker rmi 原镜像名


容器(container)

  1. 首先用docker ps -a查看本地的所有容器(第一次当然没有了。。。只不过是讲一下这个命令-_- )

如果不加-a是显示所有正在运行的容器,两个不一样。

  1. docker [container] create -it ubuntu:20.04:利用镜像ubuntu:20.04创建一个容器(未运行)。

  2. docker [container] start CONTAINER:启动容器, 参数CONTAINER可以是id,也可以是names

相关命令:

  1. docker stop停止容器
  2. docker restart重启容器
  3. docker [contaienr] run -itd ubuntu:20.04:创建并启动一个容器(ps:加-d是不进入容器,如果是-it那就回创建启动并进入容器)
  4. docker kill 容器id:杀死容器
  1. docker [container] attach CONTAINER:进入容器(只能进入正在运行的容器)

docker exec -i -t 容器id /bin/bash:这个命令也可以进入容器(上面那个命令不行的时候可以试试这个)

  1. 先按Ctrl-p,再按Ctrl-q可以挂起容器

如果直接ctrl + d退出:这个容器就会关闭

可以看到,d退出后,再运行命令查看运行的容器已经没有了

  1. docker [container] exec CONTAINER COMMAND:在容器中执行命令

  2. docker [container] rm CONTAINER:删除容器(删除只能删除未运行的,-rm删除容器 , rmi删除镜像,注意区别 )

删除正在运行的就会报错:

  1. docker container prune:删除所有已停止的容器(前面的【container】参数可以省略,但这里删除所有就不能省略)

  2. docker export -o xxx.tar CONTAINER:将容器CONTAINER导出到本地文件xxx.tar中

  3. docker import xxx.tar image_name:tag:将本地文件xxx.tar导入成镜像,并将镜像命名为image_name:tag(下面图片实例中没有命名)

PS: 将容器导出,实际上也是将该容器的image导出
镜像和容器导出的区别:
export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
save/load会保存完整记录,体积更大

  1. docker rename CONTAINER1 CONTAINER2:重命名容器

  2. docker和本地之间的文件复制(复制目录也是一样,不需要加-r):docker cp xxx CONTAINER:xxx 或 docker cp CONTAINER:xxx xxx

从容器中复制到本地也是一样,只需要把容器路径和本地路径调换一下

  1. 补充:docker stats:查看所有容器的统计信息,包括CPU、内存、存储、网络等信息

Ctrl + c退出

  1. docker logs 容器id(或者容器的名字也可以):查看指定容器的日志信息
    docker logs 容器id -f:持续输出日志,不会退出,上面那个会输出之后就退出。



ssh连接docker

  1. 首先在云平台开放端口

  2. docker run -p 20000:22 --name java_test -itd my_docker_server:用my_docker_server镜像创建并运行java_test容器

-p将容器的的22端口映射为本地的20000端口
java_test是容器的名字
my_docker_server是镜像的名字

  1. 进入容器内设置密码

  2. 设置后可以ssh root@ip地址 -p 20000登录了

如果是在云服务器上ssh登录docker,ip就是localhost
如果是自己电脑上ssh登录docker,跳过云服务器,ip就是云服务器的


docker根据Dockfile文件创建镜像和运行项目

  1. 在已有的项目下,Dockflie一般是在项目根目录,(项目根目录)执行docker build -t 设置的项目名 .:会在当前目录创建一个镜像
  2. docker run -p 80:80 -d 镜像名:运行镜像,第一个80是外面的端口,第二个80是docker的端口,映射。-d是在后台启动,去掉之后会在前台启动

参考acwing课程,若有侵权,联系删除。(本人已买课程,支持正版)

posted @   CodeWater  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示