首页 > 其他分享 >Docker基础

Docker基础

时间:2023-08-02 16:25:19浏览次数:33  
标签:容器 宿主机 基础 镜像 挂载 Docker docker

Docker 是一种流行的开源容器化平台,用于打包、分发和运行应用程序及其依赖项。通过使用 Docker,开发者可以将应用程序及其所需的环境(操作系统、软件库等)打包为一个独立的容器,使其可以在不同的环境中运行。

以下是 Docker 的一些关键概念和功能:

  1. 容器:Docker 使用容器来封装应用程序及其依赖项。容器是一个独立、轻量级和可移植的运行环境,包含了应用程序的代码、运行时环境和系统工具。每个容器都是相互隔离的,可以独立运行,并且与宿主机和其他容器隔离开来,提供了安全性和可移植性。

  2. 镜像:Docker 镜像是容器的基础组件,是一个只读的文件,包含了完整的运行时环境和应用程序的代码。开发者可以根据自己的需求创建镜像,也可以从 Docker Hub 等镜像仓库获取已有的镜像。镜像是用于创建容器的模板,可以被共享和复用。

  3. 镜像仓库:镜像仓库是用于存储和分享 Docker 镜像的地方。其中最知名的是 Docker Hub,它是一个公共的镜像仓库,并提供了大量的官方和社区维护的镜像。除了 Docker Hub,还有其他私有和第三方的镜像仓库可供选择。

  4. 容器编排:Docker 提供了容器编排工具,如 Docker Compose 和 Kubernetes,用于管理和编排多个容器的运行。这些工具可以定义容器之间的关系、协作和扩展策略,简化了复杂应用程序的部署和管理。

  5. 跨平台性:Docker 可以在不同的操作系统和硬件平台上运行,包括 Linux、Windows 和 macOS。这使得开发者可以在开发环境中构建和测试容器,然后将其轻松地部署到生产环境中。

通过使用 Docker,开发者可以实现更加快速、高效和一致的应用程序交付和部署。Docker 的容器化方法可以降低开发和运维的成本,并提供更好的可伸缩性和可移植性,使得应用程序的部署和管理变得更加灵活和可靠。

一、 Docker安装

1.1 卸载旧版本(如果安装过旧版本的话)

1 yum remove docker  docker-common docker-selinux docker-engine

1.2 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

1 yum install -y yum-utils device-mapper-persistent-data lvm2

1.3 设置yum源

1 #阿里镜像
2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.4 查看docker版本,选择安装的版本

yum list docker-ce --showduplicates | sort -r

1.5 安装docker

1 $ yum install docker-ce  #由于repo中默认只开启stable仓库
2 $ yum install <FQPN>  # 例如:yum install docker-ce-17.12.0.ce

如果安装失败,或者已经安装过了,可以暴力卸载

1 yum remove docker docker-common docker-selinux docker-engine -y
2 /etc/systemd -name '*docker*' -exec rm -f {} ;
3 find /etc/systemd -name '*docker*' -exec rm -f {} \;
4 find /lib/systemd -name '*docker*' -exec rm -f {} \;

1.6 启动docker

1 $ systemctl start docker
2 $ systemctl enable docker

=>Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

1.7 查看docker版本

1  docker -v

 

二、Docker镜像

2.1 查看镜像(所有镜像)

1 docker images

2.2 从源拉取镜像(docker images OPTIONS)

docker pull centos

如果出现异常

Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

则配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://[your mirrors].mirror.aliyuncs.com"]#你的阿里云加速地址
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

如果还不行添加host解释

先找到ip

dig @114.114.114.114 registry-1.docker.io

 配置其中一个IP地址

2.3 删除镜像

docker ps -a #运行过的容器

docker images # 查看镜像

docker rm id # 先删除容器
docker rmi image # 再删除镜像
 

 

三、Docker容器

容器是镜像的运行实例。当使用镜像创建容器时,Docker 会在镜像上创建一个可写的可执行环境,使得镜像能够运行为一个独立的进程。

3.1 创建/运行容器

1 docker run -d --name=demo 镜像名称 # 指定名称,运行完毕自动退出
2 docker run -it centos 交互式运行

每run一次都会创建一个新的容器

3.2 运行或停止现有容器

1 --启动和停止容器
2 docker start 容器ID
3 docker stop 容器ID

3.3 进入正在运行的容器

1 #docker exec [OPTIONS] CONTAINER_ID COMMAND [ARG...]
2 docker exec -it df5010c03ece /bin/bash

3.4 退出docker容器

1 exit

只是退出交互模式,但是容器还是正常运行,要停止容器,使用docker stop container_id

3.5 挂载

挂载(Mounting)是一种将宿主机的文件系统或目录与容器中的文件系统或目录进行连接的方法通过挂载,容器可以与宿主机或其他容器之间实现文件的共享和数据的持久化,方便实现跨容器或跨主机的数据交互和共享。

挂载分别有

  1. 宿主机目录挂载:将宿主机上的目录直接挂载到容器中。这样容器就可以访问宿主机上的文件系统,并进行读写操作。宿主机目录挂载可以通过 -v--volume 参数来实现,例如:

    1 docker run -v /host/path:/container/path image_name
  2. 匿名卷挂载:使用匿名卷(Anonymous Volume)进行挂载,即在容器创建时自动生成一个匿名卷,并将它挂载到容器的指定路径。匿名卷会存储在 Docker 主机的默认卷存储位置中。匿名卷挂载可以通过 -v--volume 参数来实现,例如:

    1 docker run -v /container/path image_name
  3. 命名卷挂载:可以通过命名卷(Named Volume)进行挂载,命名卷是用户显式创建的具有唯一名称的卷。它们可以用于容器间共享数据,并提供了更好的可维护性和可扩展性。命名卷挂载可以通过 --mount 参数来实现,例如:

    1 docker run --mount source=my_volume,target=/container/path image_name
  4. 共享卷挂载:通过与其他容器共享卷(Shared Volume)进行挂载,多个容器可以同时访问和修改这些卷中的数据。共享卷挂载可以通过 --volumes-from 参数来实现,例如:

    1 docker run --volumes-from container_name image_name

将mysql挂载到宿主机

1 #拉取mysql镜像
2 docker pull mysql:5.7
3 #将mysql挂载到宿主机的/usr/local/docker-mysql目录下
4 docker run -p 3307:3306 --name docker-mysql -v /usr/local/docker-mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root.123 -d mysql:5.7
5 43ed051a5021b45e1e78c7f1f43a21c49bb473782093c1fde403bd7115f8d9c9
3307为宿主机的端口映射到docker的3306端口,-v可以配置多个文件挂载。挂载之后,即便删除了容器,但挂载的内容仍然在宿主机上,再次挂载相同的目录时,之前的内容依旧在。

 

标签:容器,宿主机,基础,镜像,挂载,Docker,docker
From: https://www.cnblogs.com/lfhappy/p/17600875.html

相关文章

  • 盘点一个Python递归的基础题目
    大家好,我是皮皮。一、前言前几天在Python黄金群【维哥】问了一个Python递归的基础问题,一起来看看吧。看上去代码没多少哈,但是韵味无穷。二、实现过程很多初学者遇到这个问题,很容易把答案说成是3,2,2这样,其实正好相反,这里【巭孬嫑勥烎】给了一个解释。这么一看好像还是不太好......
  • C#基础之Response.ContentType响应内容类型[通俗易懂]
    3、设置响应内容类型改为json类型,效果如下  Response.ContentType1、文本格式:html、xml、txtResponse.ContentType=“text/html“;Response.ContentType=“text/xml”;Response.ContentType=“text/plain”;2、图片格式Response.ContentType=“image/jpg”;R......
  • 视频大时代下基础架构的演进
    过去十年,随着端上算力和通讯能力的提升,我们见证了一个业务玩法日趋复杂、用户覆盖遍及全球的视频大时代的诞生。近几年,多个市值千亿以上的泛视频公司得到广泛关注,其背后支撑业务高速迭代、承载核心技术的视频基础架构也慢慢浮出水面。视频基础架构包含哪些核心能力,在过去和现在经历......
  • Python | 基础语法
    1.字面量字面量:在代码中,被写下来的固定的值1.1Python常用的6种值(数据)的类型类型描述说明数字整数(int)、浮点数(float)、复数(complex)、布尔(bool)字符串描述文本的一种数据类型由任意数量的字符组成列表有序的可变序列元组有序的不可变序列可......
  • 个人VSCode Vim基础配置文件
    基础配置项vscode-vim插件由于是一款模拟器,所以它的配置文件是放在settings.json文件中,而不是vimrc文件中,个人也并不推荐将配置放在vimrc文件中,因为这会导致多端同步变的复杂,尽管这款插件可以支持从vimrc文件中读取配置。下面是一些我会在使用vscode-vim插件时配置的vim选项,直接......
  • ArkUI 组件基础 指南
    ArkTs基础指南常用组件组件组件是构建页面的核心,每个组件通过对数据和方法的简单封装,实现独立的可视、可交互功能单元。组件之间相互独立,随取随用,也可以在需求相同的地方重复使用。基础组件Blank、Button、Checkbox、CheckboxGroup、DataPanel、DatePicker、Divider......
  • 线性代数 | 机器学习数学基础
    前言线性代数(linearalgebra)是关于向量空间和线性映射的一个数学分支。它包括对线、面和子空间的研究,同时也涉及到所有的向量空间的一般性质。本文主要介绍机器学习中所用到的线性代数核心基础概念,供读者学习阶段查漏补缺或是快速学习参考。线性代数行列式1.行列式按行(列)展开......
  • Docker部署Nginx
     docker安装nginx1.下载nginx镜像dockerpullnginx2.创建nginx挂载目录    mkdir-p/usr/local/nginx/{conf,html,log,ssl}3.启动nginx容器,用于copy一些文件放在步骤2的目录下     dockerrun--namenginx-p80:80-dnginx4.将nginx容器下文件,copy到步......
  • docker-学习记录
    1、地址视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?p=6帮助文档:https://docs.docker.com/万能命令【帮助命令】dockerrun--help2、只显示镜像IDdockerimages-q3、搜索下载镜像dockersearchmysqldockerpullmysql4、docker的递归命令dockerrmi-f$(......
  • Docker安装Jenkins
    一、前言Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在docker中进行搭建。......