DevOps利器之一Docker

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、背景

本篇文章主要阐述Docker在DevOps中的应用与价值Docker部署与安装因为搭建DevOps流程中所应用的工具及框架都部署到Docker所以首先介绍Docker为后续做准备。

Docker的主要目标是BuildShip and Run Any App,Anywhere也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理使用户的APP可以是一个WEB应用或数据库应用等等及其运行环境能够做到一次封装到处运行。将应用运行在 Docker 容器上面而 Docker 容器在任何操作系统上都是一致的这就实现了跨平台、跨服务器。只需要一次配置好环境换到别的机子上就可以一键部署好大大简化了操作解决了运行环境和配置问题软件容器方便做持续集成并有助于整体发布的容器虚拟化技术。

二、Docker在DevOps中的作用与价值

  • 工具链的标准化和快速部署。将实现DevOps所需的多种工具或软件进行Docker化后可在任意环境实现一条或多条工具链的快速部署。

  • 开发、测试和生产环境的统一化和标准化。镜像作为标准的交付件可在开发、测试和生产环境上以容器来运行最终实现三套环境上的应用以及运行所依赖内容的完全一致。

  • 易于构建、迁移和部署。Dockerfile实现镜像构建的标准化和可复用镜像本身的分层机制也提高了镜像构建的效率。使用Registry可以将构建好的镜像迁移到任意环境而且环境的部署仅需要将静态只读的镜像转换为动态可运行的容器即可。

  • 在微服务世界中可能会使用Java构建一些微服务使用Python构建一些微服务以及使用JavaScript构建一些微服务。不同的微服务将具有不同的构建和部署方式使用Docker你可以构建微服务的镜像-不管它们的语言如何。你可以在任何基础架构上以相同方式运行这些镜像。

  • Docker使DevOps变得容易。

三、Docker 安装与部署基于Ubuntu

参考官方文档安装https://docs.docker.com/engine/install/ubuntu/

1、卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

如果没卸载干净需要删除文件路径/var/lib/docker 默认安装路径我的路径是/usr/bin/docker,用docker version检查docker是否卸载成功如果是赶紧的系统则调过这一步。

2、设置仓库

    • 更新apt包索引并安装包以允许apt通过HTTPS使用存储库

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    • 添加Docker的官方GPG密钥

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    • 使用以下指令设置稳定版仓库

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3、安装docker

    • 更新 apt 包索引

sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
    • 安装Docker Engine、containerd和Docker Compose

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    • 通过运行hello world映像验证Docker Engine安装是否成功

sudo docker run hello-world

打印出下面信息说明安装成功

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:aa0cc8055b82dc2509bed2e19b275c8f463506616377219d9642221ab53cf9fe
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

四、Docker 常用命令

1、总览

命令

说明

docker version

查看docker的版本信息

docker info

查看docker详细的信息

docker --help

docker的帮助命令可以查看到相关的其他命令

docker images

列出本地主机上的镜像

docker search 镜像名称

从 docker hub 上搜索镜像

docker pull 镜像名称

从docker hub 上下载镜像

docker rmi 镜像名称

删除本地镜像

docker run [OPTIONS] IMAGE [COMMAND]

创建并启动一个容器

docker ps [OPTIONS]

查看当前正在运行的容器有哪些

exit

容器停止退出

ctrl+p+q

容器不停止退出

docker start 容器ID或者容器名称

启动容器

docker restart 容器id或者名称

重启容器

docker stop 容器ID或者名称

停止容器

docker kill 容器ID或者名称

强制停止容器

docker rm 容器ID

删除容器

docker rm -f $(docker ps -qa)

删除容器

docker ps -a -q | xargs docker rm

删除容器

docker top 容器ID

查看容器中运行的进程

docker inspect 容器ID

查看容器的细节

exec

在容器中打开新的终端,并且可以启动新的进程

attach

直接进入容器启动命令的终端不会启动新的进程

docker cp 容器ID:容器内路径 目的地路径

文件复制

docker logs -t -f --tail 3 容器ID

查看运行的日志

docker top 容器ID

查看容器中运行的进程

2、docker images

选项

说明

REPOSITORY

表示镜像的仓库源

TAG

镜像的标签

IMAGE ID

镜像ID

CREATED

镜像创建时间

SIZE

镜像大小

参数

说名

-a

列出本地所有的镜像

-q

只显示镜像ID

--digests

显示镜像的摘要信息

--no-trunc

显示完整的镜像信息

3、 Docker rmi

删除方式

命令

删除单个

docker rmi -f 镜像ID

删除多个

docker rmi -f 镜像1:TAG 镜像2:TAG

删除全部

docker rmi -f $(docker images -qa)

4、docker run [OPTIONS] IMAGE [COMMAND]

options

说明

--name

"容器新名字": 为容器指定一个名称

-d

后台运行容器并返回容器ID也即启动守护式容器

-i

以交互模式运行容器通常与 -t 同时使用

-t

为容器重新分配一个伪输入终端通常与 -i 同时使用

-P:

随机端口映射

-p

指定端口映射有以下四种格式 ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

docker run -it Ubuntu /bin/bash

5、docker ps [OPTIONS]

OPTIONS

说明

-a

列出当前所有正在运行的容器+历史上运行过的

-l

显示最近创建的容器。

-n

显示最近n个创建的容器。

-q

静默模式只显示容器编号。

--no-trunc

不截断输出。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker