Docker-1

概述

https://yeasy.gitbook.io/docker_practice/container

Docker 是一个开源的容器化平台,它允许开发者打包应用及其所有依赖项到一个轻量级、可移植的容器中,从而简化了部署和管理应用程序的过程。

核心概念:

  1. 容器(Containers)
    • 容器是 Docker 的核心概念。它是一个标准化的单元,用于软件开发,包含应用程序及其所有依赖。
    • 容器是轻量级的,因为它们共享宿主机的操作系统内核,但运行在隔离的环境中。
  2. 镜像(Images)
    • 镜像是一个轻量级、只读的模板,用于创建 Docker 容器的实例。
    • 镜像包含运行容器所需的所有内容——代码、运行时、库、环境变量和配置文件。
  3. Dockerfile
    • Dockerfile 是一个文本文件,包含了一系列指令,用于自动构建 Docker 镜像。
    • 它定义了创建镜像所需的步骤和顺序。
  4. Docker Hub 和仓库
    • Docker Hub 是 Docker 的公共仓库,用于存储和分享镜像。
    • 用户可以从 Docker Hub 下载公共镜像,或上传自己的镜像。

特点和优势:

  1. 便携性

    • 由于 Docker 容器包含应用程序及其所有依赖,它可以在任何支持 Docker 的环境中无缝运行。
  2. 轻量级

    • 容器利用宿主机的内核,不需要像虚拟机那样模拟整个操作系统,这使得它们非常轻量级和高效。
  3. 隔离性

    • 每个容器在运行时都处于隔离的环境中,确保了进程和资源的隔离。
  4. 可伸缩性和模块化

    • Docker 支持微服务架构,使得应用程序可以被拆分成较小、独立的服务,从而提高可伸缩性和灵活性。
  5. 快速部署

    • Docker 容器可以在几秒钟内启动,大大加快了开发和部署过程。

应用场景:

  • 开发和测试:Docker 提供了一致的环境,保证开发、测试和生产环境的一致性。
  • 微服务架构:Docker 支持微服务架构的快速部署和扩展。
  • 持续集成/持续部署(CI/CD):Docker 可以与 CI/CD 工具链集成,自动化软件发布过程。
  • 云计算和虚拟化:Docker 可以在私有云、公共云和混合云环境中部署。

Docker 的出现极大地改变了软件开发和部署的方式,它的轻量级特性和便携性解决了“在我的机器上可以运行”的问题,并加速了从开发到生产的软件交付过程。

Quick Start

安装

macOS通过 Homebrew 安装桌面版

brew install --cask docker

配置

基本是开箱即用的,但是可能从 docker hub 上拉取镜像的时候会比较慢,可以配置加速器

加速器配置方式:

Settings -> Docker Engine,会有一个json用于配置

1
2
3
4
"registry-mirrors": [
"url1",
"url2"
]

镜像加速器参照https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6

配置完成后,点击 Apply & Start,重启后生效。

Hello World

执行命令

1
docker run ubuntu:15.10 /bin/echo "Hello world"

会输出Hello World

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

命令可以解释为:运行一个 ubuntu:15.10 的容器,执行命令 /bin/echo “Hello World”

Docker会先在本地仓库查找镜像是否存在,如果不存在就会从 Docker Hub 下载公共镜像。

(如果没有指定15.10版本,则默认寻找最新版本 latest)

容器使用

docker pull IMAGE 从docker hub 拉取镜像

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

1
2
3
4
5
6
7
8
9
常用OPTIONS:
-i 交互式操作,容器不会自动关闭?
-d 后台启动,返回容器ID
--name 起名字
-t 直接进入终端
-p 端口映射 宿主机端口:CONTAINER PORT
-P 随机绑定端口号

COMMAND:镜像可以指定默认CMD,如果run的时候有指定,会覆盖掉默认CMD

docker ps:查看当前运行中的容器

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker stop CONTAINER 停止容器

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

和run的格式差不多

docker rm -f CONTAIL ID 删除容器

docker container prune 清理所有终止状态的容器


Docker-1
https://yzaf.top/2023/docker/docker-1/
作者
why
发布于
2023年12月4日
许可协议