云原生学习笔记-1-docker
一、基础环境说明
1、操作系统:Centos7.6;1master;2node
2、docker版本:docker-ce 19.03.8-3
二、docker安装
1、使用阿里镜像仓库,mirror.aliyun.com
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
[root@Master ~]# yum list docker-ce.x86_64 --showduplicates | sort -r #查看所有可安装dock包,显示详细版本号
[root@Master ~]# yum install docker-ce-19.03.8-3.el7 docker-ce-cli-19.03.8-3.el7 container.io #安装指定版本的docker-ce及其它组件
[root@Master ~]# systemctl start docker.service
[root@Master ~]# systemctl enable docker #启动docker服务,并加入开机启动
2、配置镜像加速器服务
阿里云--控制台--产品与服务--容器与镜像服务,导入个人加速器
二、docker-使用
1、常用命令
[root@Master ~]# docker pull busybox #下载镜像,默认下载最新版本,latest
[root@Master ~]# docker pull redis:5.0.12-alpine3.13 #下载指定版本的镜像
[root@Master ~]# docker images #查看所有已经下载的镜像
[root@Master ~]# docker rm a7aebae01283 #删除指定容器,已经运行的
[root@Master ~]# docker rmi 7614ae9453d1 #删除容器,可以使用名称+标签的方式进行删除
[root@Master ~]# docker rmi -f $(docker images -aq) #删除所有镜像
[root@Master ~]# docker tag busybox:latest mybusy:v1 #修改镜像名,或tag
[root@Master ~]# docker ps #查看所有已经运行的容器,-a 查看已经运行过的容器,
[root@Master ~]# docker create --name myredis -p 6379:6379 redis:latest #创建一个容器,-p:指定容器与主机的暴露端口,前为主机的端口
[root@Master ~]# docker start myredis #启动容器
[root@Master ~]# docker pause myredis #容器暂停
[root@Master ~]# docker unpause myredis #恢复暂停的容器
[root@Master ~]# docker stop nginx #停止容器
[root@Master ~]# docker run --name nginx1 -it -p 8:80 busybox:latest #启动并直接进入容器内部
[root@Master ~]# docker run --name nginx -d -p 80:80 nginx:latest #使容器后台启动
[root@Master ~]# docker logs nginx #打印容器日志;-f追踪日志
2、进入容器-exec
[root@Master ~]# docker exec -it nginx /bin/bash #进行容器,使用bash
[root@Master ~]# docker inspect nginx #查看容器的详情
[root@Master ~]# docker image inspect nginx #查看镜像的详细信息
3、文件复制-cp
[root@Master ~]# docker cp index.html nginx:/usr/share/nginx/html/ #将宿主机文件复制到容器内
[root@Master ~]# docker cp nginx:/usr/share/nginx/html/index.html ./index.html #将容器内的文件复制到宿主机
[root@Master ~]# docker diff nginx #对比容器内的文件系统结构是否发生改变:A:添加,D:删除,C:更改
4、docker commit
[root@Master ~]# docker commit nginx nginx1:v1 #将nginx容器修改后生成新的镜像;-a:提交的作者、-m:提交的日志
[root@Master ~]# docker commit -a "jhuaping" -m "test commit" nginx nginx-test:v1
5、推送镜像到docker仓库
[root@Master ~]# docker login #登录自己的docker仓库
#上传前需要将docker镜像改为仓库的镜像名一至才可上传
[root@Master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jhuaping/nginx-test V1 63166b78fccd 7 minutes ago 141MB
[root@Master ~]# docker tag nginx-test:V1 jhuaping/nginx-test:V1 #将镜像上传到镜像仓库
#阿里个人镜像仓库:容器镜像服务/实例列表/镜像仓库/个人实例:点击新建的仓库可看到上推送与摘取的方案
https://cr.console.aliyun.com/repository/cn-chengdu #阿里地址:浏览器访问
6、镜像的导入、导出
[root@Master ~]# docker export -o mynginx.tar nginx #将nginx容器导出为nginx.tar文件
[root@Master ~]# docker import mynginx.tar mynginx:v2 #将导出的mynginx.tar 导入为镜像
[root@Master ~]# docker save -o mynginx.tar nginx:latest #将nginx:latest镜像保存为文件
[root@Master ~]# docker load -i busybox.tar #保存的文件导入为镜像
#推荐使用,先用docker commit将容器提交为镜像,然后使用docker save 将镜像保存为文件、再使用docker load导入为镜像
7、docker 数据卷的挂载-v
#三种挂载方式:使用dockerfiile自动启动容器自动挂载;自行创建目录,启动容器时手动挂载;将数据挂载在内存中(不使用)
[root@Master ~]# docker run --name mynginx -d -v /nginxfile:/usr/share/nginx/html:ro -p 80:80 nginx #启动容器并指定将容器的目录挂载到宿主机的指定目录,ro以只读的方式挂载,默认为rw读写方式挂载
[root@Master ~]# cd /nginxfile/
[root@Master nginxfile]# vim index.html
[root@Master nginxfile]# cat index.html
<h1>
this is mynginx IP:192.168.100.1
</h1>
#注意:经过-v挂载后,容器的该目录会与挂载的宿主机目录一至,会清除容器该目录本身的数据。如果宿主机的该目录是空目录那么,挂载后容器的该目录一定是空目录
[root@Master ~]# docker run --name mynginx1 -d -p 81:80 -v nginx:/usr/share/nginx/html nginx:latest #以卷的形式挂载,html为卷名称而不是路径。以卷形式挂载的docker会自动管理,会将容器该目录本身有的数据同步到卷内
[root@Master ~]# docker inspect mynginx1 #通过inspect进行挂载详细查看,具体查看mounts部分
[root@Master ~]# docker volume ls #可通过docker volume命令进行相关查看。
[root@Master ~]# docker volume inspect nginx #通过inspect命令可看卷的详细信息
8、docker卷管理
[root@Master _data]# docker run --name nginx1 -d -p 8181:80 -v /usr/share/nginx/html nginx #会自动创建一个挂载卷,因未定义名称,会自行使用uuid为卷名
[root@Master _data]# docker run --name nginx2 -d -p 8182:80 -v nginx:/usr/share/nginx/html nginx
#会创建一个以nginx为名称的挂载卷,宿主机所在目录为/var/lib/docker/volumes/nginx/_data。可使用inspect查看详细信息
[root@Master _data]# docker volume ls #查看所有卷,也可使用inspect查看郑的详细信息
[root@Master _data]# docker volume create nginx #创建一个名为nginx的挂载卷,可以供后面使用
[root@Master nginxfile]# docker volume rm nginx #删除卷
[root@Master ~]# docker run -d --name nginx2 -p 8082:80 -v /nginxfile/html/:/usr/share/nginx/html --restart=always nginx #--always:开启自动启动容器
[root@Master ~]# docker update mynginx --restart always #更新mynginx容器开机自动启动
9、Dockerfile
创建一个Dockerfile
[root@Master dockerfile]# vim Dockerfile
#这是我的Dockerfile,以#号做为注释符
FROM alpine
#给镜像添加标签,一般是维护者
LABEL maintainer=“jianghuaping”
#运行的指令,安装了软件,修改了文件,默认是id=0的用户,也就是root;这个是基础系统的root,这里为alpine的root用户
#表示镜像构建过程中运行的命令,而不是每次启动时支持的命令
RUN echo "this is test Dockerfile"
#镜像每次启动时执行的命令;如果命令很长,可以使用sh文件,让镜像启动时执行sh文件;也可以直接在CMD位置写出需要执行的镜像即可
CMD ping www.baidu.com
[root@Master dockerfile]# docker build -t mytest:v1 -f Dockerfile . #根据Dockerfile创建一个镜像;.表示当前目录
Sending build context to Docker daemon 2.56kB
Step 1/4 : FROM alpine
latest: Pulling from library/alpine
59bf1c3509f3: Pull complete
Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300
Status: Downloaded newer image for alpine:latest
---> c059bfaa849c
Step 2/4 : LABEL maintainer=“jianghuaping”
---> Running in 1f893fe46650
Removing intermediate container 1f893fe46650
---> d1282d743892
Step 3/4 : RUN echo "this is test Dockerfile"
---> Running in 12c3842e2ca5
this is test Dockerfile
Removing intermediate container 12c3842e2ca5
---> ff0fde7ba8a9
Step 4/4 : CMD ping www.baidu.com
---> Running in 9e6867484d87
Removing intermediate container 9e6867484d87
---> 52c1491f901c
Successfully built 52c1491f901c
Successfully tagged mytest:v1
云原生学习笔记-1-docker的更多相关文章
- 云原生学习笔记(3)——Kubernetes基本概念
学习地址:https://developer.aliyun.com/lesson_1651_13078?spm=5176.270689.1397405.6.716ef5f8Q9z1z3#_13078 ...
- .NET团队送给.NET开发人员的云原生学习资源
企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...
- .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方 ...
- DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- 云原生学习筑基 ~ 组网必备知识点 ~ DNS服务
@ 目录 一.为啥写这篇文章? 二.DNS的作用 三.域 四.DNS工作原理 五.搭建DNS服务器 5.1.Bind 5.2.系统环境准备 5.3.安装 5.4.查看bind的相关文件 5.5.查看b ...
- Docker学习笔记2: Docker 概述
一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and Run Any App ,AnyWhere" , ...
- Docker学习笔记之docker volume 容器卷的那些事(一)
预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...
- Docker学习笔记之Docker的数据管理和存储
0x00 概述 数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重.特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能.我们知道,在 Doc ...
- Docker学习笔记之Docker 的简历
0x00 概述 在了解虚拟化和容器技术后,我们就更容易理解 Docker 的相关知识了.在这一小节中,我将介绍关于 Docker 的出现和发展,Docker 背后的技术.同时,我们将阐述 Docker ...
随机推荐
- Docker 入门指南
Docker 入门指南 目录 基础概念 安装教程 基本操作 常用安装 构建操作 容器编排 壹.基础概念 什么是Docker? Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装 ...
- Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式
一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...
- PLM产品生命周期管理,包含哪些阶段?
PLM:Product Lifecycle Management=产品生命周期管理.产品的整个生命周期包括:投入期.成长期.成熟期.衰退期.结束期.PLM系统使企业可以把多年积累的所有产品相关数据放到 ...
- Twikoo私有化部署教程--迁移腾讯云
目录 备份数据 私有化部署 创建容器 导入数据 重新配置twikoo面板设置 引入前端CDN Nginx https反代http 作者:小牛呼噜噜 | https://xiaoniuhululu.co ...
- 使用Jumpserver堡垒机管理MySQL应用
第一步,添加系统用户 资产管理,系统用户,创建<数据库协议>MySQL 用户名和密码填写实际可以访问数据库的用户名和密码 第二步,添加应用 应用管理,数据库 主机和端口填写可以访问数据库的 ...
- 13. Fluentd输出插件:in_forward用法详解
in_forward插件通常用于从其他节点接收日志事件,这些节点包括其他Fluentd实例.fluent-cat命令行或者Fluentd客户端程序.这是目前效率最高的日志事件接收方法. in_forw ...
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- 国产电脑可较为流畅运行的Windows系统
系统是Windows2003,内置了WPS和IE8,使用QEMU TCG运行,速度慢,凑合能用. 使用前先sudo apt install qemu-system-x86,把压缩包中的2003.qco ...
- 独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图
前言 此文我首发于CSDN(所以里面的图片有它的水印) 趁着隔离梳理一下之前做的一个有用的功能:在浏览器中去切割多分辨率瓦片图 这是一个有趣的过程,跟我一起探索吧 阅读本文需具备前置知识:对krpan ...
- 前端微信登录获取code,userInfo,openid
getUser(e) { wx.getUserProfile({ desc: '用户完善会员资料', success: res => { let userInfo = res.userInfo; ...