掌握docker这几招,你也能搞云计算了

这篇具有很好参考价值的文章主要介绍了掌握docker这几招,你也能搞云计算了。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker的好处

容器技术出现十多年了,已经在测试和生产环境得到普遍应用。几个好处:

  • 便携性、隔离性
  • 封装性,可复用
  • 方便做集群部署和资源调度

    所谓云计算,就是所有计算、服务、产品都云化,部署在云上,你只管使用就行,不用操心它怎么部署。怎么云化?虚拟化和docker化嘛。那还不会docker的小伙伴们还不赶紧普及一下docker。
    下面是本人以前记录的笔记,很基础,现在搬到CSDN上,也算是上云了吧。

玩转docker的基础几招

1. 构建一个docker镜像

只需要当前目录下存在Dockerfile文件即可:

docker build -t cms/python-docker:v1 . 

2. 运行一个容器

根据已知镜像,拉起一个新的容器:

docker run -d --name cmspy -v /dev/shm:/dev/shm -p 9080:80 -v /opt/CMS:/opt/CMS cms/python-docker:v1
  • -d: 以daemon方式运行,执行完后容器不退出
  • -p 和 -v 两个参数要记牢,都是宿主到容器的映射,一个是端口,一个是卷

3. 进入一个容器

一个容器运行起来后,我们要钻进去看个究竟,就用下面的命令:

docker exec -it <容器ID或名称> bash

docker exec 是一个有用的命令,完整了解一下:

docker exec
docker exec [OPTIONS] container_name COMMAND [ARG...]
OPTIONS说明:

-d,以后台方式执行命令;
-e,设置环境变量
-i,交互模式
-t,设置TTY
-u,用户名或UID,例如myuser:myusergroup

例子:

sudo docker exec myContainer bash -c "cd /home/myuser/myproject && git fetch ssh://gerrit_server:29418/myparent/myproject ${GERRIT_REFSPEC} && git checkout FETCH_HEAD";
sudo docker exec myContainer bash -c "cd /home/myuser/myproject;git fetch ssh://gerrit_server:29418/myparent/myproject ${GERRIT_REFSPEC};git checkout FETCH_HEAD";

再免费赠送实际场景中的一个例子,例如我在Jenkins中每天自动运行远程服务器上容器中的脚本:

## 先拉最新代码
ssh -p 22 liu@111.112.235.88 "sudo docker exec -u liuhu cmspy bash -c 'cd /home/liuhu/cmspy && git pull origin master'"
## 再重启进程
ssh -p 22 liu@111.112.235.88 "sudo docker exec cmspy bash -c 'supervisorctl restart cmspy-crawler'"

这两条命令放在Jenkin的job脚本中,助你成功。

4. docker cp

容器宕掉了,重启也失败,咋办?
遇到这种情况,是不是窝火?不要紧,两招救你。
一、把相应文件拷到宿主机上

docker cp <containerID>:/xxx/xxx .

改巴改巴再拷进去:

docker cp yourfile <containerID>:/xxx/xxx/yourfile

文件和目录都可以采用这种方式随意copy进出

二、上述办法还不奏效,那说明容器的启动文件有问题,那就把启动文件copy出来,修改,在启动脚本第一行,加上

sleep 9999999

如果是别的语言的脚本,也如法炮制。sleep机制总归是有的。
copy回去,再重启就不会退出了。

5. 容器备份和导出

保存容器为镜像:

docker commit -a "my first commit" -m "headful chrome docker" d479afb70a20 cms/headful-chrome:v2

容器导出:

docker export 7691a814370e > ubuntu.tar

容器导入:

cat ubuntu.tar | docker import - test/ubuntu:v1.0

6. 查看命令

查看所有镜像:

docker images

查看所有容器:

docker ps -a

查看某个镜像和容器:

docker inspect <镜像或容器的ID或名称> 

7. 删除

删除镜像:
docker rmi <镜像ID>
删除容器
docker rm <容器ID>

其它

镜像重命名:

docker tag OldName:tag NewName:tag

容器重命名:

docker rename OldName:tag NewName:tag

alpine镜像和容器

alpine 镜像是被高度裁剪过的镜像,里面yum, apt, apt-get都没有,它的包管理器是apk。

Alpine Linux is the go-to distribution for use in docker containers. And if you happen to follow any online tutorials on using Docker for setting up your containers, it is very much possible that you had used the alpine linux image (without realizing it) and are now trying to use the package manager of some other distribution.

In Alpine Linux, the package manager is called apk, while in Debian-based distributions like Ubuntu, the package manager is called apt.

apk update && apk upgrade

运行上述命令就会安装上许多基础工具,如lsof。
安装软件采用:

apk add <program_name>

更新和删除某个包:

apk add -u <package_name_1> <pakage_name_2> ……
apk del <package_name>

根据alpine镜像构建自己的镜像:

FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add <package_name>

网络问题

查看桥接模式下的所有网络:

docker network inspect bridge

...
           "f9575d8c4f6070da8b9fbb8c2524ae4837c12a94ac0310dde7c93daf3337c6c6": {
                "Name": "k8s_POD_grafana-55f67dc7c8-9d5vf_prophet_971f0f71-31fa-47f9-857a-b7e6ddca95be_2",
                "EndpointID": "3cc3a6caba59e5e21953fcbfc23e1a265b9adfb5dfae13ae15ca7582246a58f9",
                "MacAddress": "02:42:0a:f4:c0:0d",
                "IPv4Address": "10.244.192.13/21",
                "IPv6Address": ""
            },
            "fce7b55b783031bb7b21e663d079c8fc01cb8fbe0c6a5b51aaef55c09680e781": {
                "Name": "k8s_POD_abtest-manager-6d897df946-ql2g8_prophet_1ed95389-fed8-4d89-9c02-331b689edb74_2",
                "EndpointID": "c8781810bef94fd63bb8dd63c80f1a0b6b7fef38a5dea1cf486ab7a6f11196fd",
                "MacAddress": "02:42:0a:f4:c0:1d",
                "IPv4Address": "10.244.192.29/21",
                "IPv6Address": ""
            },
            "fd47a419724609ae922a6743487eca3a2c965b8260f8b882899a44970e68d93c": {
                "Name": "k8s_POD_mysql-master-6d9749bc5c-pdwjr_prophet_daab0220-2c50-4877-93f3-5593b80b1a33_2",
                "EndpointID": "ebaa346ed71e9e6a8d938fd899e2baee1671dfeb2e1415ee2379d44c93bcadeb",
                "MacAddress": "02:42:0a:f4:c0:13",
                "IPv4Address": "10.244.192.19/21",
                "IPv6Address": ""
            }
            ...

可以看到每个容器分配的IP地址,这些IP地址在同一个网段,正常情况下容器之间按照这个分配的IP访问即可。宿主机的主机号默认为1, 即 10.244.192.1

同一宿主机上不同docker容器的通信

link方式

docker network ls

–link im_mysql:local_mysql

docker network create -d bridge network1
在两个容器中:

docker network connect network1 container1
docker network connect network1 container2
然后,在其中一个容器中ping另一个容器,测试是否能连通:
ping container2

常见问题

重启容器服务

如果服务器上需要这样的重启功能,可以有两种方法进行设置:
1.容器还没有创建,在运行容器的时候加入–restart=always参数
docker run -id --restart=always -p 9999:9999 -v xxxx:xxxx 镜像名称:tag
1
2.容器已经运行的情况,运行以下命令:
docker update --restart=always 容器名字或者容器ID
1
想立即生效就重启docker systemctl restart docker, 不然就等到它下次重启自动生效

其他:如果想停止自动启动,运行以下命令:
docker update --restart=no 容器名字或者容器ID

容器资源监控

CPU占用前五名:

docker stats --no-stream|awk ‘{print $3," "$1,$2}’|sort -h |tail -n 5
内存占用前五名:
docker stats --no-stream|awk ’ {print $4," "$1,$2}’ |sort -h |tail -n 5文章来源地址https://www.toymoban.com/news/detail-657145.html

到了这里,关于掌握docker这几招,你也能搞云计算了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信发视频怎么不压缩画质?试试这几招

    微信是我们常用的社交工具了,很多朋友都会用它跟好友分享视频,但想必大家都知道,微信为了节省宽带和存储空间,会自动对上传的视频进行压缩处理,甚至过大的视频会被限制发送,怎么才能让微信不自动压缩画质呢?下面就给大家分享下方法~ 首先就是直接利用微信

    2024年02月06日
    浏览(304)
  • 电脑上怎么进行pdf合并?这几招分分钟解决

    电脑上怎么进行pdf合并 ? 在现代办公中,PDF文件已经成为了我们处理文档的常用格式之一。有时候,我们需要将多个PDF文件合并成一个文件,以方便阅读或打印。那么,如何在电脑上进行PDF合并呢?下面就给大家介绍几种简单易行的方法,让你轻松搞定PDF合并。 方法一:使

    2024年01月20日
    浏览(43)
  • 当Mysql缓慢时,这几招可解燃眉之急

    第一步定位问题源: 常见的以查询Mysql性能问题的方法 1.大部分的性能问题都是查询过慢的问题,可以查询慢sql日志。 通过慢查询日志定位那些执行效率较低的SQL语句,用–log-slow-queries[= file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文

    2024年02月03日
    浏览(37)
  • Adobe 观察 |最低工资标准来了,学会这几招,让加薪更简单

    最新调整后的全国各地区最低工资标准情况来了! 人力资源和社会保障部新发布的数据显示, 截至今年4月1日,共有15个地区第一档月最低工资标准在2000元及以上,分别是上海(2590元)、深圳(2360元)、北京(2320元)、广东(2300元)、江苏(2280元)、浙江(2280元)、河北

    2023年04月24日
    浏览(39)
  • 数学建模模板(让你也能写论文的模板)

    内容要点按顺序排列就行。 对问题的简洁交代,用1~2句话说明原问题中要解决的问题,一般可根据参赛题目给出论断。 句型:本文研究XX问题。 针对什么问题,从怎样的角度进行考虑的,考虑的关键因素是什么,是怎样处理的,建立了什么模型(在数学上属于什么类型),

    2024年02月04日
    浏览(55)
  • 实不相瞒——看完你也能(10分钟内)手撸一个低代码框架

    工作中又遇到了低代码的研发工作,所以借此机会向大家分享下我的所思所考,大多数公司后期为了应对重复的中后台项目或H5等页面,为了更好的降本增效,低代码似乎成为了自研公司的前端团队的一把杀手锏。 或许很多程序员工作中用不到低代码平台,但是个人认为玩转

    2024年02月02日
    浏览(41)
  • 【C语言】从零开始学数组,让你也能写出三子棋和扫雷

    💓博客主页:江池俊的博客 ⏩收录专栏:C语言初阶之路 👉其他专栏:数据结构探索 💻代码仓库:江池俊的代码仓库 🎪 社区:GeekHub社区 (欢迎大家加入与我一起探讨学习经验) 🍁 如果觉得博主的文章还不错的话,请点赞👍收藏🌟 三连支持一下博主💞 目录 一、一维数

    2024年02月14日
    浏览(41)
  • 云服务器部署开源ChatGLM-6B,让你也能拥有自己的ChatGPT

    一、背景 最近GPT不仅发布了GPT-4,而且解除封印可以联网了。不得不赞叹AI更新迭代的速度真快,都跟不上节奏了。但是大家也注意到了吧,随着GPT的每次更新,OpenAI对其开放使用的限制也越来越大。之前国内网随便访问GPT3,现在动不动就封号 所以,今天就来教大家部署国内

    2024年02月12日
    浏览(58)
  • GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

    GaiaX跨端模板引擎,是在阿里优酷、淘票票、大麦内广泛使用的Native动态化方案,其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》,带大家看看过去三年GaiaX的发展过程。 在“GaiaX开源解读系列之第一篇:《GaiaX开源解读 | 基于优酷业务特色的跨平台技术》”中

    2023年04月08日
    浏览(37)
  • 【C++】五一假期,我学会了C++类和对象 ( 看完这篇你也能学会 ~ )

      🧑‍🎓 个人主页:简 料   🏆 所属专栏:C++   🏆 个人社区:越努力越幸运社区   🏆 简       介: 简料简料,简单有料~在校大学生一枚,专注C/C++/GO的干货分享,立志成为您的好帮手 ~ C/C++学习路线 (点击解锁) ❤️ C语言 ❤️ 初阶数据结构与算法 ❤️ C++ ❤️

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包