首页 > 其他分享 >docker基础知识

docker基础知识

时间:2023-12-10 09:22:53浏览次数:30  
标签:容器 image 基础知识 镜像 docker root Docker

目录

1.docker简介

dockeri就是一个【软件】,支持在win、mac、linux系统上进行安装。
可以在一台电脑上根据模版创建出多个隔离的环境,相比其他方式而言极大的节省资源Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多

1.为什么要创建隔离的环境?

​ 假设你先在有一个centos7.6系统运行程序,而这个程序需要依赖[ubuntu系统的服务A]+[centos7.9的服务B]

  • 传统的方式:买新服务器
  • 虚拟化方式:在原来的NB服务器上利用虚拟化技术创建虚拟机(vmware、kvm等),用虚拟机做隔离去跑新的业务。
  • docker的方式:利用docker软件创建一个新的容器,用容器去做隔离区跑新的业务。
2.为什么dockeri可以比虚拟机极大的节省资源?
  • 虚拟机的方式,是在电脑完整的创建一个操作系统(程序需要的系统)。
  • docker的方式,创建的容器不是完整的操作系统,而是充分利用宿主机内核+进程,只是创建了一些必备的资源(程序需要的系统环境)。
image-20231207101534338
3.docker基础概念
  • dockerfile(脚本源码
  • 镜像(Image):Docker 镜像(Image),用于创建 Docker 容器的模板,比如 Ubuntu 系统。(可执行程序)
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是独立运行的一个或一组应用,是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。(运行进程
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

(1)镜像(Image)

Docker 镜像Image),就相当于是一个 root 文件系统,比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统

  • Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。
  • image 文件可以看作是容器的模板,Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
  • [root@localhost new]# docker pull python:3.10 ,命令执行后,镜像文件都会存放在 Docker 引擎的默认目录中,通常是 /var/lib/docker 目录。

实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上形成你的 image。

$ docker search   #搜索镜像

# 将 image 文件从仓库抓取到本地
$ docker image pull library/hello-world   #由于 Docker 官方提供的 image 文件,都放在library组里面,默认省略
$ docker image pull hello-world

# 本机看到这个 image 文件
$ docker images  #自动检索系统根目录

# 运行这个 image 文件
$ docker container run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

#安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统
#$ docker container run -it ubuntu bash  
(2)容器(Container)
  • image 文件生成的容器实例,本身也是一个文件,称为容器文件。
  • 关闭容器并不会删除容器文件,只是容器停止运行而已。
# 列出本机正在运行的容器
$ docker ps  #检索系统的进程,没有具体位置

# 启动/停止容器
$ docker run -it -d  nginx:latest 
$ docker run -it -d -p 8888:8000 nginx:latest  /bin/bash
  • -p参数:容器的 3000 端口映射到本机的 8000 端口。
  • -d参数: 默认服务在后台运行
  • -it参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
  • nginx:latest:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
  • /bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。

2.docker 使用

不懂就:

docker search python(其他仓库镜像centos、Ubuntu等)
docker build(或者其他命令run\pull ) --help
1.docker 安装
#CentOS系统
#配置repo源
[root@localhost ~]# curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum clean all & yum makecache

#查看docker可下载版本
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r

#最新版
[root@localhost ~]# yum install -y docker-ce
#指定版本
[root@localhost ~]# yum install -y docker-ce-23.0.6


# Ubuntu系统
root@iZ8vbdn64nyz3h1qvey2rbZ:~# apt update
root@iZ8vbdn64nyz3h1qvey2rbZ:~# apt install docker.io  #执行此命令需要使用sudo或以root身份运行,即进入~

[root@localhost ~]# systemctl status docker
[root@localhost ~]# systemctl start docker

配置docker镜像加速:

#先创建文件夹
mkdir -p /etc/docker
#镜像加速
vi /etc/docker/daemon.json
{ "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://xqybwad5.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
     ]
}

#重新加载配置文件
systemctl daemon-reload
#重新启动docker
systemctl restart docker
#检查加速器是否生效
docker info
2.docker 命令

Docker 命令大全 | 菜鸟教程 (runoob.com)

docker search 查询镜像
runoob@runoob:~$ docker search 
docker pull 拉取镜像

​ 之前说过,docker中image的概念就类似于“可执行程序”,我们可以从哪里下载到别人写好的应用程序呢?很简单,那就是APP Store,即应用商店。与之类似,既然image也是一种“可执行程序”,那么有没有"Docker Image Store"呢?答案是肯定的,这就是Docker Hub,当然也可以存到本地,使用文件传递

# 获取镜像(这里使用的是ubantu15.10版本,不加后面数字默认拉取最新版本)   
runoob@runoob:~$ docker pull ubuntu:15.10  

docker images 查看镜像

List images:用于列出本地主机上已经下载的 Docker 镜像。它可以显示镜像的名称、标签、大小和创建时间等信息。该命令常用于查看本地主机上可用的镜像列表,以及占用的磁盘空间大小

root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
pysrv        latest    b8fdd4955e69   14 hours ago   1.36GB
python       3.10      748d669298ac   6 weeks ago    1e+03MB

image-20231208122830043

输出详情介绍:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小
docker build 构建镜像

Build an image from a Dockerfile:当我们写完dockerfile交给docker“编译”时使用这个命令,那么client在接收到请求后转发给docker daemon,接着docker daemon根据dockerfile创建出“可执行程序”image。

image-20231208163719406
docker start 启动容器
root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker start <容器 ID>
docker stop 停止容器
root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker stop <容器 ID>
docker exec 进入容器
# 进入容器
root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker exec -it <容器 ID> /bin/bash
root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker exec -it <容器 ID> bash
docker run 运行容器

Create and run a new container from an image:有了“可执行程序”image后就可以运行程序了,接下来使用命令docker run,docker daemon接收到该命令后找到具体的image,然后加载到内存开始执行,image执行起来就是所谓的container。

root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker run -it -d --name ubuntu-test ubuntu /bin/bash
image-20231208163824784
docker ps 查看容器

List containers:用于列出正在运行的 Docker 容器。它可以显示容器的 ID、名称、状态、所使用的镜像等信息。该命令常用于查看正在运行的容器,以及查看容器的状态和端口映射等详细信息

root@iZ8vbdn64nyz3h1qvey2rbZ:/project# docker ps

image-20231208122810059

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

标签:容器,image,基础知识,镜像,docker,root,Docker
From: https://www.cnblogs.com/DQ-MINE/p/17892183.html

相关文章

  • linux基础知识
    目录1.linux了解(1)界面基础2.文件管理(1)文件目录查看(2)文件目录管理ls:列出目录cd:切换目录pwd:显示目前所在的目录mkdir/rm:新建与删除文件夹(3)rz/sz:文件上传与下载(4)unzip:文件解压与压缩(5)文件内容查看1)cat:由第一行开始显示文件内容2)nl:由第一行开始显示文件内容,并显示行号(6)echo......
  • Docker的常用命令
    docker命令有很多,总的分为以下几大类:容器生命周期管理—docker[run|start|stop|restart|kill|rm|pause|unpause]容器操作运维—docker[ps|inspect|top|attach|events|logs|wait|export|port]容器rootfs命令—docker[commit|cp|diff]镜像仓库—docker[login|pu......
  • Docker - Remove build cache
    dockerbuilderpruneRemovebuildcacheUsagedockerbuilderpruneDescriptionRemovebuildcacheOptionsOptionShortDefaultDescription--all-a Removeallunusedbuildcache,notjustdanglingones--filter  Providefiltervalues(e.g. unt......
  • How to Use Docker and NS-3 to Create Realistic Network Simulations
    https://insights.sei.cmu.edu/blog/how-to-use-docker-and-ns-3-to-create-realistic-network-simulations/ HowtoUseDockerandNS-3toCreateRealisticNetworkSimulationsALEJANDROGOMEZMARCH27,2023Sometimes,researchersanddevelopersneedt......
  • 3-运行第一个docker image-hello world
    CentOS7.9下安装完成docker后,我们开始部署第一个dockerimage-helloworld1.以root用户登录CentOS7.9服务器,拉取centos7images命令:dockerpullhello-world[root@centos79~]#dockerpullhello-worldUsingdefaulttag:latestlatest:Pullingfromlibrary/hello-world2db29......
  • Docker入门教程
    什么是DockerDocker是开源的应用容器引擎。Docker可以让你将所有应用软件以及它的以来打包成软件开发的标准化单元。Docker容器将软件以及它运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管是在什么样的运行环境,总是能以相同的方式运行。就好像......
  • Docker build 无法解析域名
    ###报错Dockerbuild无法解析域名报错:ERROR[2/12]RUNcurl-o/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo解决Dockerbuild无法解析域名#追加到etc/docker/daemon.json,注意JSON的格式{"dns":["8.8.8.8","114.114.1......
  • 记一次docker buildx build 推送到本地私有仓库出现 connection refused 的问题
    想在本地编译多个架构的基础镜像,这样后续有其他业务使用的时候,不必从头开始编译。使用传统的dockerbuild-tImageName:tag方式,只能编译和主机相同架构的镜像。而dockerbuildxbuild不支持将编译好的镜像放置在本地docker中,只能以文件的形式放在本地。因此需要在本地搭建......
  • Docker 入门指南:轻松驾驭容器技术
    什么是Docker?Docker是一种容器技术,可以让你的应用程序在任何地方运行,无论是在你的开发机、测试环境还是生产服务器。这就像是一个神奇的魔法箱,把你的应用程序和它所需的一切打包在一起,确保它可以在任何地方一键运行。为什么使用Docker?跨平台性:Docker能够确保你的应用程序在不......
  • Docker - Build an application to an image
    Dockerfile:#BuildstageFROMgolang:1.21.5-alpine3.18ASbuilderWORKDIR/appCOPY..RUNgoenv-wGOPROXY=https://goproxy.io,directRUNgobuild-omainmain.go#RunstageFROMalpine:3.18WORKDIR/appCOPY--from=builder/app/main.COPYapp.env......