微服务之Docker知识点总结(二)

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务之Docker知识点总结

3.设置Docker开机自启动


查看已启动的服务


systemctl list-units --type=service


查看是否设置开机启动


systemctl list-unit-files | grep enable


设置开机启动


systemctl enable docker.service


关闭开机启动


systemctl disable docker.service


三. 使用Docker


1.镜像操作


镜像名称


首先来看下镜像的名称组成:


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

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

如图:


500de4763d83440f98ab2c8de7ee205d.png


这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。


镜像命令


常见的镜像操作命令如图:


02ad3ca9085b449c877cce9697a86829.png


我们还可以通过 docker search [镜像名称] 来查询镜像


下面我们通过一个案例来实际操作这些命令:


需求一:从DockerHub中拉取一个nginx镜像并查看


1)首先去镜像仓库搜索nginx镜像,比如DockerHub或者daocloud (建议后者,前者太卡)


da0d0f9e060142a9838cd908d468268a.png

3a4c0e068a8045cdaea8524f0babd61d.png


如果你要用阿里的镜像加速,依次运行如下命令:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://l8zasouv.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2)拉取1.9.1版(用的DaoCluod的源):


docker pull daocloud.io/library/nginx:1.9.1


4b1c93a252bb4defb3f46c8d18c5fb0c.png

ce05224b54164cba9076f8ea6a20b6e3.png


3)通过命令:docker images 查看拉取到的镜像


docker images


8388d9e4af52415e8a5e540ff97c1dc9.png


需求二:保存、导入镜像。利用docker save将nginx镜像导出磁盘,然后再通过load加载回来


1)利用docker xx --help命令查看docker save和docker load的语法


例如,查看save命令用法,可以输入命令:


docker save --help


e5f805e014484b0ca081ab50c1a5b969.png


命令格式:


docker save -o [保存的目标文件名称] [镜像名称]


2)使用docker save导出镜像到磁盘

运行命令:


docker save -o nginx.tar daocloud.io/library/nginx:1.9.1


b23ddd11602f4708a93a5ffe3915f12d.png


3)使用docker load加载镜像

先删除本地的nginx镜像:


docker rmi daocloud.io/library/nginx:1.9.1


然后运行命令,加载本地文件:


docker load -i nginx.tar


结果:

7aaa9f7867c24685ac970d5a0cc511c6.png

2200ee0a20a240469bae0b340af42fdc.png


2.容器操作


容器相关命令:


7b3b0bbb54fa4dbda012407bb780512b.png


容器保护三个状态:


运行:进程正常运行

暂停:进程暂停,CPU不再运行,并不释放内存

停止:进程终止,回收进程占用的内存、CPU等资源

其中:


docker run:创建并运行一个容器,处于运行状态


docker pause:让一个运行的容器暂停


docker unpause:让一个容器从暂停状态恢复运行


docker stop:停止一个运行的容器


docker start:让一个停止的容器再次运行


docker rm:删除一个容器


docker容器设置自动启动: 启动时加–restart=always

下面一个例子:


docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v /alidata/iDocker


–restart=有以下的参数值:

Flag Description

no 不自动重启容器. (默认value)

on-failure 容器发生error而退出(容器退出状态不为0)重启容器

unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器

always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器


3.案例一 :创建并运行一个容器


创建并运行nginx容器的命令:


docker run --name 容器名称 -p 80:80 -d daocloud.io/library/nginx


命令解读:


docker run :创建并运行一个容器

–name : 给容器起一个名字,比如叫做abc

-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

-d:后台运行容器

nginx:镜像名称,例如nginx

这里的-p参数,是将容器端口映射到宿主机端口。


默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。


现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:


a46be03650df4146b0e0ef7c82e03165.png

5f1ab187a0aa43208d95989e3b9c9bb1.png


2e7e96b8de78489391316a3a4c69a8d5.png


4.案例二 :进入容器,修改文件


需求:进入Nginx容器,修改HTML文件内容,添加“害恶细君欢迎您”


提示:进入容器要用到docker exec命令。


步骤

1)进入容器。进入我们刚刚创建的nginx容器的命令为:


docker exec -it nginx bash


命令解读:


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


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


nginx :要进入的容器的名称


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


2)进入nginx的HTML所在目录 /usr/share/nginx/html


容器内部会模拟一个独立的Linux文件系统,看起来如同一个linux服务器一样:


2dfaf47e418d4aeb9736e808981e00c1.png


nginx的环境、配置、运行文件全部都在这个文件系统中,包括我们要修改的html文件。


查看DockerHub网站中的nginx页面,可以知道nginx的html目录位置在/usr/share/nginx/html


我们执行命令,进入该目录:


cd /usr/share/nginx/html


查看目录下文件:


954c67eebb0a47a4ad553083012aae0b.png


3)修改index.html的内容


容器内没有vi命令,无法直接修改,我们用下面的命令来修改:


sed -i -e 's#Welcome to nginx#害恶细君欢迎您!#g' -e 's#<head>#<head><meta charset="utf-


在浏览器访问自己的虚拟机地址,例如我的是:http://192.168.172.130/,即可看到结果:


13ccbda4a5384bbab86db9e5f78f524b.png


输入exit可以退出docker的终端。

相关文章
|
1月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
6天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
30 1
|
14天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
57 7
|
13天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
50 6
|
17天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
61 2
|
1月前
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
|
1月前
|
开发者 Docker 微服务
利用Docker Compose优化微服务架构
在微服务架构中,Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,通过YAML文件配置服务、网络和卷,实现一键创建和启动。这不仅确保了开发、测试和生产环境的一致性,还简化了团队协作和维护工作,大幅提升了开发效率。本文将详细介绍Doker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化微服务架构。
|
2月前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1