安装Docker

cnblogs 2024-09-10 17:09:00 阅读 97

卸载旧版

<code>yum remove docker \

docker-client \code>

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

配置Docker的yum库

  • 首先要安装一个yum工具

yum install -y yum-utils

  • 安装成功后,执行命令,配置Docker的yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-re.repo

安装Docker

  • 最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  • 验证是否安装成功

docker -v

docker images

启动和校验

# 启动Docker

systemctl start docker

# 停止Docker

systemctl stop docker

# 重启

systemctl restart docker

# 设置开机自启

systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功

docker ps

配置镜像加速

  • 这里以阿里云镜像加速为例

注册阿里云证号

  • 首先访问阿里云网站 : https://www.aliyun.com/
  • 注册一个账号

开通镜像服务

  • 在首页的产品中,找到阿里云的内容镜像服务

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://....mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

镜像和容器

  • 当我们利用Docker安装应用时,Docker会自动下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系函数库。Docker会在运行镜像时创建一个隔离环境,称为容器。
  • 镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:hub.docker.com

命令解读

docker run -d \

--name mysql \

-p 3306:3306 \

-e TZ=Asia/Shanghai \

-e MYSQL_ROOT_PASSWORD=123 \

mysql

  • docker run: 创建并运行一个容器
  • -d是让容器在后台运行
  • --name mysql:给容器起个名字,必须唯一
  • -p 3306:3306: 设置端口映射(宿主机:容器内端口)
  • -e KEY=VALUE: 是设置环境变量
  • mysql: 指定运行的镜像的名字
  • 镜像命名规范
    • 镜像名称一般分两部分组成:[repository]:[tag].
    • 其中repository就是镜像名
    • tag是镜像的版本
  • 在没有指定tag时,默认是latest,代表最新版本的镜像

常见命令

  • Docker最常见的命令就是操作镜像、容器的命令,详见官方文档:https://docs.docker.com/

    li>

例子-nginx

  • 在DockerHub中搜索Nginx镜像,查看镜像的名称
  • 拉取Nginx镜像
    • docker pull nginx
  • 查看本地镜像列表
    • docker images
  • 保存镜像
    • docker save -o nginx.tar nginx:latest
  • 删除镜像
    • docker rmi nginx:latest
  • 读取镜像
    • docker load -i nginx.tar
  • 创建并运行Ngingx容器
    • docker run -d --name nginx -p 80:80 nginx
  • 查看容器
    • docker ps
    • docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
    • docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" -a
  • 停止容器
    • docker stop nginx
  • 再次启动容器
    • docker start nginx
  • 进入Nginx容器
    • docker exec -it nginx
  • 删除容器
    • docker rm nginx
    • docker rm nginx -f
  • 查看日志
    • docker logs -f nginx bash

命令别名

  • vi ~/.bashrc
    • alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'li>
    • alias dis='docker images'li>
  • source ~/.bashrc

数据卷

  • 数据卷(volume)是一个虚拟目录,是容器内容目录与宿主机目录之间映射的桥梁。
命令 说明 文档地址
docker volume create 创建数据卷
docker volume ls 查看所有数据卷
docker volume rm 删除指定数据卷
docker volume inspect 查看某个数据卷的详情
docker volume prune 清除数据卷
  • 在运行docker run命令时,使用-v 数据卷:容器内目录 可以完成数据卷挂载

  • 当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷

    • docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx.html nginx
    • docker run -d --name nginx -p 80:80 -v 数据卷:容器内目录 nginx
    • docker run -d --name nginx -p 80:80 -v 本地目录:容器内目录 nginx
      • 本地目录必须以:"/"或"./"开头,如果直接以名称开头,会被识别为数据卷而非本地目录
      • -v mysql:/var/lib/mysql会被识别为一个数据卷叫mysql
      • -v ./mysql:/var/lib/mysql 会被识别为当前目录下的mysql目录

自定义镜像

  • 镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是包上述文件打包的过程。
  • 入口(Entrypoint): 镜像运行入口,一般是程序启动的脚本和参数
  • 层(layer):添加安装包、依赖、配置等,每次操作都形成新的一层。
  • 基础镜像(BaseImage): 应用依赖的函数系统库、环境、配置、文件等。

Dockerfile

  • Dockerfile就是一个文本文件,其中包含一个一个的指令(Instruction),用指令来说明执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。
指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./jre11.tar.gz /tmp
RUN 执行Linux的shell命令,一般是安装过程的命令 RUN tar -zxvf /tmp/jre11.tar.gz && EXPORTS path=/tmp/jre11:$path
EXPOSE 指定容器运行时监听的端口,是给镜像使用者查看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar
  • 更多详细语法说明,请参考官网文档:https://docs.docker.com/engine/reference/builder

自定义镜像

  • 当编写好了Dockerfile,可以利用下面命令来构建镜像
    • docker build -t myImage:1.0 .
      • -t: 是给镜像起名,格式依然是repository:tag的格式,不指定tag时,默认为latest
      • .: 是指Dockerfile所在目录,如果就在当前目录,则指定为"."

网络

  • 加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:
命令 说明
docker network create 创建一个网络
docker network ls 查看所有网络
docker network rm 删除指定网络
docker network prune 清除未使用的网络
docker network connect 使指定容器连接加入某网络
docker network disconnect 使指定容器连接离开某网络
docker network inspect 查看网络详情信息

DockerCompose

  • Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署
  • docker compose [OPTIONS] [COMMAND]
类型 参数或指令 说明
Options -f 指定compose文件的路径和名称
-- -p 指定project名称
Commands up 创建并启动素有service容器
-- down 停止并移除所有容器、网络
-- ps 列出所有启动的容器
-- logs 查看指定容器的日志
-- stop 停止容器
-- start 启动容器
-- restart 重启容器
-- top 查看运行的进程
-- exec 在指定的运行中容器中执行命令


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。