基本介绍
- 开源的应用容器引擎,基于Go语言开发
- 容器是完全使用沙箱机制的,容器开销极低
- Docker就是容器化技术的代名词
- Docker也具备一定的虚拟化职能
- 提供最标准的应用打包流程
基本架构
docker为CS架构
C指的是客户端
S是服务端
客户端将命令行内的内容发送给服务端,服务端执行命令
名词介绍
docker buIid docker build
是 Docker 中的一个命令,用于构建镜像。
docker pull 下载镜像
docker run 创建容器并运行容器
仓库(repository):Docker hub 存放在镜像的地方,国内可以配置镜像加速下载
镜像(image):是一个模块,可基于此模板运行出多个容器
容器(container):通过镜像创建的独立运行的一个或者一组应用
Docker: 是一个容器引擎,用于管理容器的生命周期
容器: 用于运行一个软件的容器,这个容器里面准备了软件运行所需要的一系列依赖
镜像:容器的安装包,容器中需要哪些内容,以及对应的配置信息全部打包在这里面,要运行一个容器,必须要现有一个镜像
仓库(可当作软件商店):用于存放各种镜像
安装方式
安装时要区分企业版和社区版
企业版为:EE 社区版为: CE 社区版和企业版区别在于少很多插件相对于来讲简单许多
官方网址 :docker.com 官方文档:docs.docker.com
好的,以下是在不同的 Linux 环境下安装 Docker 的命令和解释。使用 Typora 编辑器打开此文本可以得到更好的阅读体验。
CentOS
CentOS 是一种基于 Red Hat Enterprise Linux (RHEL) 源代码的企业级 Linux 发行版。在 CentOS 上安装 Docker 可以通过以下步骤完成:
-
首先,卸载旧版本的 Docker(如果有的话),并更新系统软件包:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum update -y
-
安装 Docker CE:
sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl start docker
-
验证 Docker 是否已正确安装:
sudo docker run hello-world
Ubuntu
Ubuntu 是一种开源的 Debian 操作系统分支,基于 Debian 开发,并拥有自己的软件包格式和发布计划。在 Ubuntu 上安装 Docker 可以通过以下步骤完成:
-
首先,卸载旧版本的 Docker(如果有的话),并更新系统软件包:
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update
-
安装 Docker CE:
sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker
-
验证 Docker 是否已正确安装:
sudo docker run hello-world
Debian
Debian 是一种普及度非常高的 Linux 发行版,以其稳定性和安全性著称。在 Debian 上安装 Docker 可以通过以下步骤完成:
-
首先,卸载旧版本的 Docker(如果有的话),并更新系统软件包:
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update
-
安装 Docker CE:
sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker
-
验证 Docker 是否已正确安装:
sudo docker run hello-world
Fedora
Fedora 是一种面向桌面和服务器应用的基于 Linux 的操作系统,由 Red Hat 公司赞助支持。在 Fedora 上安装 Docker 可以通过以下步骤完成:
-
首先,卸载旧版本的 Docker(如果有的话),并更新系统软件包:
sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo dnf -y install dnf-plugins-core
-
设置 Docker CE 的镜像仓库:
sudo dnf config-manager \ --add-repo \ https://download.docker.com/linux/fedora/docker-ce.repo
-
安装 Docker CE:
sudo dnf install docker-ce docker-ce-cli containerd.io sudo systemctl start docker
-
验证 Docker 是否已正确安装:
sudo docker run hello-world
基本命令以及解释
镜像操作
搜索镜像
使用 docker search
命令搜索 Docker Hub 上的镜像。
docker search [OPTIONS] TERM
OPTIONS
:可选参数,具体介绍见下表。TERM
:指定要搜索的镜像名称。
参数 | 说明 |
---|---|
–filter | 根据条件过滤结果 |
–format | 指定输出格式 |
–limit | 最多返回多少条搜索结果 |
–no-trunc | 不截断输出 |
例如:
docker search -f stars=3 ubuntu
下载镜像
使用 docker pull
命令下载指定的镜像。
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS
:可选参数,具体介绍见下表。NAME
:指定要下载的镜像名称。TAG
:可选参数,指定要下载的镜像的标签,默认为latest
。DIGEST
:可选参数,指定要下载的镜像的摘要值。
参数 | 说明 |
---|---|
-a/–all-tags | 下载指定镜像的全部标签 |
–disable-content-trust | 禁用镜像校验,默认启用 |
例如:
docker pull ubuntu:18.04
查看本地镜像
使用 docker images
命令查看本地已有的镜像。
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS
:可选参数,具体介绍见下表。REPOSITORY
:可选参数,指定要查看的镜像名称。TAG
:可选参数,指定要查看的镜像的标签。
参数 | 说明 |
---|---|
-a/–all | 列出所有镜像,包括中间层镜像 |
–digests | 显示镜像摘要信息 |
–format | 指定输出格式 |
–no-trunc | 不截断输出 |
–quiet | 只显示镜像 ID 和标签,不显示额外信息 |
例如:
docker images -a ubuntu
删除本地镜像
使用 docker rmi
命令删除本地镜像。
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS
:可选参数,具体介绍见下表。IMAGE
:指定要删除的镜像,可以同时删除多个镜像。
参数 | 说明 |
---|---|
-f/–force | 强制删除 |
–no-prune | 不删除被依赖的镜像 |
例如:
docker rmi -f ubuntu:18.04
容器操作
运行容器
使用 docker run
命令运行一个容器。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS
:可选参数,具体介绍见下表。IMAGE
:指定要使用的镜像。COMMAND
:可选参数,指定在容器内执行的第一条命令。ARG
:可选参数,指定命令的参数。
参数 | 说明 |
---|---|
-d/–detach | 在后台模式运行 Docker 容器 |
-i/–interactive | 以交互模式运行 Docker 容器 |
-t/–tty | 分配一个虚拟终端 |
-p/–publish | 容器端口号映射到主机端口号 |
-P/–publish-all | 将所有容器端口号映射到主机端口号 |
-v/–volume | 给容器添加数据卷 |
–name | 指定容器名称 |
–rm | 容器退出时自动删除 |
–restart | 容器重启策略 |
例如:
docker run -it --name myubuntu ubuntu /bin/bash
列出所有运行中的容器
使用 docker ps
命令列出所有正在运行中的容器。
docker ps [OPTIONS]
OPTIONS
:可选参数,具体介绍见下表。
参数 | 说明 |
---|---|
-a/–all | 列出所有运行过的容器 |
-f/–filter | 根据条件过滤结果 |
-n/–last | 显示最后创建的 N 个容器 |
-q/–quiet | 只显示容器 ID |
例如:
docker ps -a
列出所有容器
使用 docker ps -a
命令列出所有容器,无论其是否正在运行。
docker ps -a
进入容器
使用 docker exec
命令进入正在运行的容器。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS
:可选参数,具体介绍见下表。CONTAINER
:指定要进入的容器。COMMAND
:指定在容器内执行的命令。ARG
:命令的参数。
参数 | 说明 |
---|---|
-d/–detach | 分离模式,即在后台运行命令 |
-i/–interactive | 以交互模式运行 Docker 容器 |
-t/–tty | 分配一个虚拟终端 |
例如:
docker exec -it myubuntu /bin/bash
停止容器
使用 docker stop
命令停止正在运行的容器。
docker stop CONTAINER [CONTAINER...]
CONTAINER
:指定要停止的容器,可以同时停止多个容器。
例如:
docker stop myubuntu
启动容器
使用 docker start
命令启动已停止的容器。
docker start [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS
:可选参数,具体介绍见下表。CONTAINER
:指定要启动的容器,可以同时启动多个容器。
参数 | 说明 |
---|---|
-a/–attach | 附着模式,即在控制台输出容器的日志信息 |
例如:
docker start myubuntu
删除容器
使用 docker rm
命令删除已经停止的容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS
:可选参数,具体介绍见下表。CONTAINER
:指定要删除的容器,可以同时删除多个容器。
参数 | 说明 |
---|---|
-f/–force | 强制删除 |
-v/–volumes | 同时删除容器关联的数据卷 |
例如:
docker rm myubuntu
查看容器日志
使用 docker logs
命令查看容器的日志。
docker logs [OPTIONS] CONTAINER
OPTIONS
:可选参数,具体介绍见下表。CONTAINER
:指定要查看日志的容器。
参数 | 说明 |
---|---|
-f/–follow | 随着容器的输出持续打印日志信息 |
–tail | 从日志末尾开始显示指定条数的日志,默认为全部 |
例如:
docker logs -f myubuntu
其他操作
端口映射
使用 -p
参数将主机的端口映射到容器的端口上。
docker run [OPTIONS] -p HOST_PORT:CONTAINER_PORT IMAGE
OPTIONS
:可选参数,具体介绍见上表。HOST_PORT
:主机端口号。CONTAINER_PORT
:容器端口号。IMAGE
:指定要使用的镜像。
例如:
docker run -d -p 8080:80 nginx
指定容器名
使用 --name
参数指定容器的名称。
docker run [OPTIONS] --name CONTAINER_NAME IMAGE
OPTIONS
:可选参数,具体介绍见上表。CONTAINER_NAME
:指定容器的名称。IMAGE
:指定要使用的镜像。
例如:
docker run --name mynginx nginx
退出时删除容器
使用 --rm
参数在容器退出时自动删除该容器。
docker run [OPTIONS] --rm IMAGE [COMMAND] [ARG...]
OPTIONS
:可选参数,具体介绍见上表。IMAGE
:指定要使用的镜像。COMMAND
:可选参数,指定在容器内执行的命令。ARG
:命令的参数。
例如:
docker run --rm ubuntu /bin/bash
容器重启策略
使用 --restart
参数指定容器的重启策略。
docker run [OPTIONS] --restart=POLICY IMAGE
-
OPTIONS
:可选参数,具体介绍见上表。 -
POLICY
:指定容器的重启策略。可选值包括:- no:容器退出时不重启;
- on-failure:容器非正常退出(退出状态码非 0)时重启;
- unless-stopped:容器退出时总是重启。
例如:
docker run -d --restart always nginx
当然,下面是关于容器环境变量及参数的常用命令及其参数的详细解释。
容器环境变量
设置容器环境变量
使用 -e
参数设置容器的环境变量。
docker run [OPTIONS] -e key=value IMAGE
OPTIONS
:可选参数,具体介绍见上表。key
:环境变量名称。value
:环境变量的值。IMAGE
:指定要使用的镜像。
例如:
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
查看容器环境变量
使用 docker inspect
命令查看容器的详细信息,其中包括容器的环境变量。
docker inspect [OPTIONS] CONTAINER
OPTIONS
:可选参数,具体介绍见上表。CONTAINER
:指定要查看信息的容器。
例如:
docker inspect mymysql | grep Environment
容器参数
使用容器参数
使用 --
参数将命令行参数传递给容器内部运行的程序。
docker run [OPTIONS] IMAGE [COMMAND] -- [ARG...]
OPTIONS
:可选参数,具体介绍见上表。IMAGE
:指定要使用的镜像。COMMAND
:可选参数,指定在容器内执行的第一个命令。ARG
:命令的参数。
例如:
docker run --rm -it ubuntu /bin/bash --version
这个命令会启动一个新的 Ubuntu 容器,并在容器内运行 /bin/bash
命令,同时将 --version
参数传递到 /bin/bash
命令中去。
给容器指定参数
使用 docker run
命令的最后一个参数可以是容器要执行的命令及其参数。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS
:可选参数,具体介绍见上表。IMAGE
:指定要使用的镜像。COMMAND
:可选参数,指定容器要执行的命令。ARG
:命令的参数。
例如:
docker run --rm -it ubuntu /bin/bash --version
这个命令会启动一个新的 Ubuntu 容器,并在容器内执行 /bin/bash --version
命令。
限制容器内存大小
docker run -d -m value --cpus 1 IMAGE
-m
:限制内存大小。value
:最小单位为kb,最大单位为GIMAGE
:指定要使用的镜像。--cpus
:指定使用多少个CPU。
数据卷
Docker 中的数据卷是用来存储容器数据的一种机制,可以将主机或其他容器中的目录或文件挂载到容器内部。
主机挂载类型(Bind mounts)
使用方法
$ docker run -v HOST_PATH:CONTAINER_PATH IMAGE_NAME
其中:
HOST_PATH
:主机上的目录或文件路径。CONTAINER_PATH
:容器内部的目录或文件路径。IMAGE_NAME
:运行容器的镜像名称。
示例
将主机上的 /data
目录挂载到容器内部的 /app/data
目录:
$ docker run -v /data:/app/data nginx
匿名挂载类型(Anonymous volumes)
将一个匿名的数据卷挂载到容器内部。
使用方法
$ docker run -v CONTAINER_PATH IMAGE_NAME
其中:
CONTAINER_PATH
:容器内部的目录或文件路径。IMAGE_NAME
:运行容器的镜像名称。
示例
将一个匿名的数据卷挂载到容器内部的 /app/data
目录:
$ docker run -v /app/data nginx
具名挂载类型(Named volumes)
将一个具名的数据卷挂载到容器内部。
使用方法
$ docker volume create VOLUME_NAME
$ docker run -v VOLUME_NAME:CONTAINER_PATH IMAGE_NAME
其中:
VOLUME_NAME
:数据卷的名称。CONTAINER_PATH
:容器内部的目录或文件路径。IMAGE_NAME
:运行容器的镜像名称。
示例
创建一个名为 mydata
的数据卷,并将其挂载到容器内部的 /app/data
目录:
$ docker volume create mydata
$ docker run -v mydata:/app/data nginx
以上就是 Docker 数据卷的介绍和使用方法,通过使用数据卷,我们可以方便地实现 Docker 容器中的数据持久化、共享和备份等需求,并提高应用程序的可靠性和可维护性。
很抱歉我的回答没有表达清楚三种类型数据卷的利害关系和使用场景,下面进行补充说明。
主机挂载类型(Bind mounts)
优点:
- 可以将主机上的文件或目录直接挂载到容器内部。
- 不需要事先创建数据卷,配置灵活。
缺点:
- 降低了容器的可移植性:由于容器依赖于主机文件系统的路径,这种方式在不同主机上可能会出现问题。
应用场景:
- 开发和测试环境中经常使用,可以通过挂载宿主机上的代码和配置文件到容器内部,加快开发和测试的效率。
匿名挂载类型(Anonymous volumes)
优点:
- 自动在 Docker 主机上创建一个匿名的数据卷,并将其挂载到容器内部。
- 不需要手动在主机上创建数据卷,操作简单。
缺点:
- 数据卷的生命周期与容器绑定,容器删除后数据卷也会随之丢失。
- 在创建的时候不方便管理和重用。
应用场景:
- 适合一些临时的数据存储,例如日志文件和缓存等。
具名挂载类型(Named volumes)
优点:
- 可以提高容器的可移植性,数据卷名称与容器解耦,可以在多个容器之间重用。
- 方便管理和维护,可以通过 Docker CLI 进行管理操作。
- 支持自定义配置,例如读写权限和存储驱动等。
缺点:
- 需要手动创建数据卷,操作相对麻烦。
应用场景:
- 适合生产环境中使用,可以方便地管理数据卷的生命周期和配置信息。
Docker的 volume
命令用于在容器和主机之间创建一个数据卷,用于更好地管理容器中的数据。下面是常用的一些参数及其用法:
创建数据卷:
使用 docker volume create
命令可以创建一个新的数据卷,具体命令格式如下:
docker volume create [OPTIONS] [VOLUME]
其中,OPTIONS
参数表示选项,例如 --driver
等,VOLUME
参数表示数据卷的名称。
列出数据卷:
使用 docker volume ls
命令可以列出所有的数据卷,具体命令格式如下:
docker volume ls [OPTIONS]
其中,OPTIONS
参数表示选项,例如 -q
可以只显示数据卷的名称。
删除数据卷:
使用 docker volume rm
命令可以删除指定的数据卷,具体命令格式如下:
docker volume rm [OPTIONS] VOLUME [VOLUME...]
其中,OPTIONS
参数表示选项,例如 -f
可以强制删除数据卷,VOLUME
参数表示要删除的数据卷的名称。
查看数据卷信息:
使用 docker volume inspect
命令可以查看指定的数据卷的详细信息,具体命令格式如下:
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
其中,OPTIONS
参数表示选项,例如 -f
可以指定返回值的格式,VOLUME
参数表示要查看信息的数据卷的名称。
使用数据卷:
使用 docker run
命令可以在容器中挂载指定的数据卷,具体命令格式如下:
docker run [OPTIONS] -v VOLUME:CONTAINER_PATH IMAGE [COMMAND] [ARG...]
其中,OPTIONS
参数表示选项,例如 -d
可以后台运行容器,-p
可以指定端口映射等。VOLUME:CONTAINER_PATH
表示将数据卷挂载到容器中,IMAGE
参数表示容器所使用的镜像,COMMAND
和 ARG
表示容器启动时执行的命令和参数。
以上就是一些常用的 docker volume
命令及其用法,具体可以根据情况进行选择和使用。