一、基础环境说明

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的更多相关文章

  1. 云原生学习笔记(3)——Kubernetes基本概念

    学习地址:https://developer.aliyun.com/lesson_1651_13078?spm=5176.270689.1397405.6.716ef5f8Q9z1z3#_13078 ...

  2. .NET团队送给.NET开发人员的云原生学习资源

    企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...

  3. .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总

    系列目录     [已更新最新开发文章,点击查看详细] .NET Core 启动于2016年,跟K8S同年诞生,既拥有着悠久的历史积累,又集成了当下最新的设计理念,加上.NET团队持续对容器技术的官方 ...

  4. DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  5. DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  6. 云原生学习筑基 ~ 组网必备知识点 ~ DNS服务

    @ 目录 一.为啥写这篇文章? 二.DNS的作用 三.域 四.DNS工作原理 五.搭建DNS服务器 5.1.Bind 5.2.系统环境准备 5.3.安装 5.4.查看bind的相关文件 5.5.查看b ...

  7. Docker学习笔记2: Docker 概述

    一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and  Run Any App ,AnyWhere" , ...

  8. Docker学习笔记之docker volume 容器卷的那些事(一)

    预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...

  9. Docker学习笔记之Docker的数据管理和存储

    0x00 概述 数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重.特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能.我们知道,在 Doc ...

  10. Docker学习笔记之Docker 的简历

    0x00 概述 在了解虚拟化和容器技术后,我们就更容易理解 Docker 的相关知识了.在这一小节中,我将介绍关于 Docker 的出现和发展,Docker 背后的技术.同时,我们将阐述 Docker ...

随机推荐

  1. [Qt基础内容-08] Qt中MVC的M(Model)

    Qt中MVC的M(Model)简单介绍 Qt有自己的MVC框架,分别是model(模型).view(视图).delegate(委托),这篇文章,简单的介绍以下Qt中有关model(模型)的类以及一些基 ...

  2. flink-cdc同步mysql数据到hive

    本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...

  3. 《Java基础——循环语句》

    Java基础--循环语句       1. while语句: 规则: 1. 首先计算表达式的值. 2. 若表达式为真,则执行循环语法,直至表达式为假,循环结束.   格式: while(表达式) 语句 ...

  4. HCIA-STP原理与配置

    STP协议生成树协议: 为了保证网络可靠,所以在组网时需要设置冗余链路和设备,从而在物理结构上形成结构,又因为交换机的工作特点导致二层网络中产生广播风暴和MAC地址表震荡现象,影响用户体验. 广播风暴 ...

  5. 依赖项安全检测新利器:Scorecard API

    Scorecard 是 OpenSSF 旗下的开源项目,用于评估开源软件风险,本文由该项目的主要贡献者 Naveen 撰写. 现代软件是建立在数百个甚至数千个第三方开源组件之上的,这些通常被称为依赖项 ...

  6. service服务使用CoreDNS提供的域名地址访问

    普通的 Service:会生成 servicename.namespace.svc.cluster.local 的域名,会解析到 Service 对应的 ClusterIP 上,在 Pod 之间的调用 ...

  7. ProxySQL(4):多层配置系统

    文章转载自:https://www.cnblogs.com/f-ck-need-u/p/9280793.html ProxySQL中的库 使用ProxySQL的Admin管理接口连上ProxySQL, ...

  8. Windows界面个人常用快捷键

    分享一下个人常用快捷键. 说明:字母排序规则遵循字母表(a->z) 快捷键 介绍 windows+d 由当前应用直接返回桌面,再按一次回到应用 windows+e 打开文件资源管理器 windo ...

  9. 驱动开发:通过ReadFile与内核层通信

    驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如 ...

  10. PHP全栈开发(八):CSS Ⅶ 表格 style

    表格默认是没有边框的,因此,我们在设置表格格式的时候,首先要设置的是表格边框的样式,也就是 table{ border-style:solid; } 设置完表格表格的样式之后,可以设置表格边框的粗细程 ...