微服务之Docker

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:

依赖关系复杂,容易出现兼容性问题

开发、测试、生产环境有差异

 

Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像

Docker应用运行在容器中,使用沙箱机制,相互隔离

 

Docker如何解决开发、测试、生产环境有差异的问题

Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包

Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行

Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行

 

 

 

 

镜像和容器

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

 

Docker和DockerHub

DockerHub:DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。

 

Docker的安装以及基本操作

Docker的卸载

如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

Docker的安装

首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast
然后输入命令:
yum install -y docker-ce

启动,停止与重启Dokcer服务

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

输入命令可查看docker版本

docker -v

镜像相关命令

镜像名称一般分两部分组成:[repository]:[tag]。

在没有指定tag时,默认是latest,代表最新版本的镜像

 

 

 

 

 

 

 

 

 

容器相关命令

 

 

 

 

 

 进入docker容器修改内容

步骤一:进入容器。进入我们刚刚创建的nginx容器的命令为:

docker exec -it mn bash

命令解读:

docker exec :进入容器内部,执行一个命令

-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

mn :要进入的容器的名称

bash:进入容器后执行的命令,bash是一个linux终端交互命令

 

创建一个支持数据持久化的redis容器

步骤一:到DockerHub搜索Redis镜像 步骤二:查看Redis镜像文档中的帮助信息 步骤三:利用docker run 命令运行一个Redis容器

docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes

 

数据卷

 

 

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

 

数据卷操作的基本语法如下:

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

docker volume [COMMAND]

create 创建一个volume

inspect 显示一个或多个volume的信息

ls 列出所有的volume

prune删除未使用的volume

rm删除一个或多个指定的volume

 

 

 挂载数据卷

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录

docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \

docker run :就是创建并运行容器

-- name mn :给容器起个名字叫mn

-v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

-p 8080:80 :把宿主机的8080端口映射到容器内的80端口

nginx :镜像名称

 

 

 

 

 

 

 

 

posted @ 2022-11-26 13:57  无火祭祀场  阅读(76)  评论(0)    收藏  举报