当前位置: 首页 > news >正文

Docker和DockerCompose基础教程及安装教程

Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

CentOS Docker 安装

使用官方安装脚本自动安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

启动 Docker。

sudo systemctl start docker

将Docker服务设置为开机启动.

sudo systemctl enable docker

Docker三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 镜像加速

Mac端配置

  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://ustc-edu-cn.mirror.aliyuncs.com",
    "https://ghcr.io",
    "https://mirror.baidubce.com"
  ]

在这里插入图片描述

命令配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hub-mirror.c.163.com", "https://ustc-edu-cn.mirror.aliyuncs.com", "https://ghcr.io", "https://mirror.baidubce.com", "https://kuamavit.mirror.aliyuncs.com", "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

检查加速器是否生效

$ docker info
 Registry Mirrors:
  https://hub-mirror.c.163.com/
  https://ustc-edu-cn.mirror.aliyuncs.com/
  https://ghcr.io/
  https://mirror.baidubce.com/

Docker 使用

Docker 容器使用

获取镜像

$ docker pull ubuntu

启动容器

$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

查看所有容器

$ docker ps -a

查看正在运行容器

$ docker ps

启动已停止容器

$ docker start b750bbbcfd88 

后台运行容器

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

停止容器

$ docker stop <容器 ID>

重启容器

$ docker restart <容器 ID>

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

attach 命令(不推荐)

$ docker attach 1e560fca3906 

注意: 如果从这个容器退出,会导致容器的停止。

exec 命令(推荐)

$ docker exec -it 243c32535da7 /bin/bash

注意: 如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因。

更多参数说明请使用 docker exec --help 命令查看。

导出容器快照

如果要导出本地某个容器,可以使用 docker export 命令。

$ docker export 1e560fca3906 > ubuntu.tar

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

此外,也可以通过指定 URL 或者某个目录来导入,例如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

删除容器使用 docker rm 命令:

$ docker rm -f 1e560fca3906

数据拷贝

Docker cp 命令

**docker cp 😗*用于容器与主机之间的数据拷贝。

语法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

  • **-L 😗*保持源目标中的链接
实例

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/runoob 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp  96f7f14e99ab:/www /tmp/

运行WEB应用

运行WEB应用

docker pull training/webapp  # 载入镜像

docker run -d -P training/webapp python app.py

docker run -d -p 5000:5000 training/webapp python app.py  # 指定映射端口

参数说明:

  • **-d:**让容器在后台运行。
  • **-P:**将容器内部使用的网络端口随机映射到我们使用的主机上。

查看 WEB 应用容器

使用 docker ps 来查看我们正在运行的容器:

docker ps

查看端口映射

通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

docker port bf08b7f2cd89

查看 WEB 应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

docker logs -f bf08b7f2cd89

-f:docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

查看WEB应用程序容器的进程

docker top redis-test

检查 WEB 应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker inspect redis-test

停止 WEB 应用容器

docker stop redis-test

重启WEB应用容器

docker start redis-test

docker restart redis-test  # 重启正在运行的容器

移除WEB应用容器

docker rm redis-test 

Docker 镜像使用

列出镜像列表

 songfayuan@songfayuandeMacBook-Pro  ~  docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
tomcat                       latest    b0e0b0a92cf9   2 weeks ago     680MB
redis                        latest    7faaec683238   3 weeks ago     113MB
nginx                        latest    87a94228f133   3 weeks ago     133MB
activiti/activiti-keycloak   latest    4f29e5564672   10 months ago   779MB
kibana                       7.2.0     3e581a516dcd   2 years ago     890MB
elasticsearch                7.2.0     0efa6a3de177   2 years ago     861MB

各个选项说明:

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

获取镜像

docker pull ubuntu:13.10

查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

docker search httpd

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

拖取镜像

docker pull httpd

下载完成后,我们就可以使用这个镜像了。

docker run httpd

删除镜像

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world

创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 1、从已经创建的容器中更新镜像,并且提交这个镜像
  • 2、使用 Dockerfile 指令来创建一个新的镜像

本地加载镜像

要从本地加载 Docker 镜像,你可以使用以下命令:

docker load < image.tar

其中 image.tar 是包含 Docker 镜像的文件路径。这将从指定的文件中加载镜像,并将其添加到本地的 Docker 镜像列表中。

导出镜像

要导出 Docker 镜像到本地文件,可以使用以下命令:

docker save -o image.tar image_name

其中 image_name 是要导出的 Docker 镜像的名称。该命令将镜像打包为一个 tar 文件,并将其保存到本地的文件系统中。你可以指定任意的输出文件名,例如 image.tar

请注意,加载和导出 Docker 镜像都需要在拥有 Docker 守护进程的主机上执行。

Docker Dockerfile

Docker应用

Docker安装Elasticsearch

docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

Docker 命令大全

https://www.runoob.com/docker/docker-command-manual.html

Docker Compose

安装docker-compose

github上下载docker-compose二进制文件安装
  • 下载最新版的docker-compose文件
sudo curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  • 测试安装结果
[root@MiWiFi-R4A-srv ~]# docker-compose -v
Docker Compose version v2.21.0

docker-compose -h

查看帮助
docker-compose -h

docker-compose up

在后台启动所有服务

docker-compose up -d

docker-compose stop

docker-compose stop 停止正在运行的容器,可以通过docker-compose start 再次启动

docker-compose stop [options] [SERVICE...]

选项包括 -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)

docker-compose down

停止和删除容器、网络、卷、镜像

docker-compose down [options]

选项包括:

  • –rmi type,删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像
  • -v, –volumes,删除已经在compose文件中定义的和匿名的附在容器上的数据卷
  • –remove-orphans,删除服务中没有在compose中定义的容器 docker-compose down 停用移除所有容器以及网络相关

相关文章:

  • dify中使用NL2SQL
  • Java直通车系列15【Spring MVC】(ModelAndView 使用)
  • 计算机视觉|从0到1揭秘Diffusion:图像生成领域的新革命
  • SpreadVue实现内置excel在线编辑并保存为后端可以接受的json格式
  • Centos操作系统大全(附ISO镜像下载)
  • 电商项目-秒杀系统(五) 秒杀下单接口限流
  • 使用Modelsim手动仿真
  • 题目 3217 ⭐成绩统计⭐【滑动窗口 + 二分搜索】蓝桥杯2024年第十五届省赛
  • 大白话 CSS 中transform属性的常见变换类型(平移、旋转、缩放等)及使用场景
  • 管理 SELinux 安全性
  • 正则表达式详解
  • android13打基础: timepicker控件
  • Vue 3 ref(new Map()) 无法触发watch
  • 力扣35.搜索插入位置-二分查找
  • Linux网络配置(超详细)
  • 「Java EE开发指南」如何用MyEclipse构建一个Web项目?(二)
  • Go权限管理库Casbin和身份验证库jwt-go初试
  • 【2025】Electron + React 架构筑基——从零到一的跨平台开发
  • 电子学会—2024年12月青少年软件编程(图形化)四级等级考试真题——趣味点阵屏
  • 当中国“智算心跳”与全球共振:九章云极DataCanvas首秀MWC 2025
  • 有网站怎么做seo推广/百度入口网站
  • 网站怎么验证用户是否登陆/外链交换平台
  • 晋江网站建设公司哪家好/发免费广告电话号码
  • 自己怎样给网站做推广/营销方法有哪几种
  • 网站建设视频教程bt/湖南平台网站建设制作
  • 怎样做网站seo优化/seo快速排名源码