Docker基础扫盲版——看懂瞬间入门

发布时间:2024年01月04日

01. Docker简介

Docker - 容器虚拟化技术,解决了运行环境和配置问题的软件容器。
环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。

一次镜像,处处运行。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

1.1 Docker 安装

Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上。
image.png

Linux 配置Docker

参考:https://blog.csdn.net/m0_63099094/article/details/121178929
systemctl status docker 查看docker 服务状态 or ps -ef | grep docker
systemctl start docker 启动 docker
docker version / docker -v 查看版本

测试是否成功 docker run hello-world (本地没有这个景象,是从仓库拉取的)
image.png

1.2 Docker 基本组成
镜像、容器、仓库。
先从本地拉镜像,本地没有,从仓库找。

1.2.1 镜像
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。
相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

1.2.2 容器
1 从面向对象角度
Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台

2 从镜像容器角度
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

1.2.3 仓库
仓库(Repository)是集中存放镜像文件的场所。

类似于
Maven仓库,存放各种jar包的地方;
github仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。

02. Docker 命令

systemctl status docker or ps -ef | grep docker查看docker 服务状态
systemctl start docker启动 docker
docker version查看版本
docker run hello-world启动 hello-world 镜像
镜像命令
docker images列出本地主机上的镜像
docker search 某个XXX镜像名字查找镜像(在 docker hub上)
docker search --limit 5 redis查找点赞数前5 的redis 镜像
docker pull 某个XXX镜像名字拉取镜像(从 docker hub 上)
docker pull redis:6.0.8拉取 redis 6.0.8 版本的镜像
docker system df查看镜像/容器/数据卷所占的空间
docker rmi 某个XXX镜像名字ID删除镜像
docker rmi feb5d9fea6a5删除 hello-world 镜像
docker rmi -f feb5d9fea6a5强制删除镜像,当镜像在使用时候会删除不了
docker rmi -f ${docker images -qa}删除全部, docker images -qa 是查处所有的镜像id
docker image ls -f dangling=true查看所有的虚悬镜像
docker image prune删词所有的虚悬镜像 docker rmi -f 就行
容器命令
docker run -it ubuntu /bin/bash启动容器(前台交互式启动)
docker run -it --name=myu1 ubuntu bash启动 ubuntu 容器,并且重名为 myu1
exitrun -it 进去,退出容器容器停止。
Ctrl + P + Qrun -it 进去,退出容器容器不停止
docker run -d redis:6.0.8启动容器(后台守护式启动)
docker logs 容器ID查看容器日志
docker exec -it 容器ID /bin/bash进入容器,exit 退出,不会停止。
docker ps查看所有正在运行的容器
docker ps -a查看所有正在运行的+ 历史运行的容器
docker ps -l查看最近创建的容器(正在运行+ 历史运行)
docker ps -n 2查看最近2个创建的容器(正在运行+ 历史运行)
docker ps -q查看所有正在运行的容器 id。
docker start 容器ID 或容器名启动已停止运行的容器(docker ps -n 10 查看容器ID)
docker restart容器ID 或容器名重启容器
docker stop容器ID 或容器名停止容器
docker kill容器ID 或容器名强制停止容器
docker rm 容器ID删除容器(正在运行的无法删除,需stop后才可以)
docker rm -f 容器ID强制删除容器
docker rm -f $(docker ps -a -q)强制删除所有容器
docker top 容器ID查看容器内运行的进程,进程号、端口号等。
docker inspect 容器ID查看容器内部细节
docker cp 容器ID:容器内路径目的主机路径从容器内拷贝文件到主机上
docker export 927e21b06561 > /root/exportUbutun.tar导出容器到主机上。
cat exportUbutun.tar | docker import - cg/ubuntu:1.0导入导出的容器cg 随便写,1.0 版本号随便写
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]docker commit -m=“vim cmd add ok” -a=“cg” 927e21b06561 cg/myubuntu:1.1
容器卷命令
docker inspect 803b5d9531c0查看容器挂载


网络命令
docker network ls查看 docker 网络列表
docker network create test_network创建网络
docker network inspect test_network查看网络源数据
docker network rm test_network删除网络
docker inspect 容器名 | tail -n 20查看容器网络
docker-compose
docker-compose --version查看 docker-compose 版本


2.1容器命令详解

2.1.1 docker run -it

docker run -it ubuntu /bin/bash

i:interactive,t:tyy(伪终端)
进入了 ubuntu 系统,并且以终端形式打开的。
ps -ef 可以看到 ubuntu 系统的/bin/bash 已运行。
image.png

docker ps 查看所有正在运行的容器
image.png
可以看到IMAGE ubuntu 镜像正在运行,CONTAINER ID 容器ID,和上面 root@778248e34084 是一样的。

docker run -it --name=myu1 ubuntu bash,又启动了一个容器,这次NAMES 为 myu1,前面返回了容器ID 就是正常启动了。新开一个终端查看 docker ps。
image.pngimage.png
进入了 ubuntu 命令行模式后,输入exit 即可退出,或者关闭 xshell选项卡也可以退出,容器停止。
Ctrl + P + Q退出容器不停止。

2.2.1 docker run -d

上面 run -it 都是前台交互式启动, 后台守护式启动 run -d,比如 redis。
image.png

docker logs 容器ID,查看日志,比如redis
image.png

docker exec -it acb16932c06b /bin/bash 进入容器。 一般用 -d 后台启动,然后 exec 进入对应容器实例。
image.png

2.2.3 从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径目的主机路径
image.png

docker export 927e21b06561 > /root/exportUbutun.tar 导出容器到主机上
image.png
image.png
cat exportUbutun.tar | docker import - cg/ubuntu:1.0 导入导出的容器,进入到这个容器 a.txt 还在。
image.png

2.2.4 复制容器生成一个新的镜像

docker commit 提交容器副本使之成为一个新的镜像
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
docker commit -m=“vim cmd add ok” -a=“cg” 927e21b06561 cg/myubuntu:1.1
image.png


文章来源:https://blog.csdn.net/weixin_46913665/article/details/135390779
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。