一、基础环境说明

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. Docker 入门指南

    Docker 入门指南 目录 基础概念 安装教程 基本操作 常用安装 构建操作 容器编排 壹.基础概念 什么是Docker? Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装 ...

  2. Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式

    一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...

  3. PLM产品生命周期管理,包含哪些阶段?

    PLM:Product Lifecycle Management=产品生命周期管理.产品的整个生命周期包括:投入期.成长期.成熟期.衰退期.结束期.PLM系统使企业可以把多年积累的所有产品相关数据放到 ...

  4. Twikoo私有化部署教程--迁移腾讯云

    目录 备份数据 私有化部署 创建容器 导入数据 重新配置twikoo面板设置 引入前端CDN Nginx https反代http 作者:小牛呼噜噜 | https://xiaoniuhululu.co ...

  5. 使用Jumpserver堡垒机管理MySQL应用

    第一步,添加系统用户 资产管理,系统用户,创建<数据库协议>MySQL 用户名和密码填写实际可以访问数据库的用户名和密码 第二步,添加应用 应用管理,数据库 主机和端口填写可以访问数据库的 ...

  6. 13. Fluentd输出插件:in_forward用法详解

    in_forward插件通常用于从其他节点接收日志事件,这些节点包括其他Fluentd实例.fluent-cat命令行或者Fluentd客户端程序.这是目前效率最高的日志事件接收方法. in_forw ...

  7. Maven+SpringMVC+Dubbo 简单的入门demo配置

    转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...

  8. 国产电脑可较为流畅运行的Windows系统

    系统是Windows2003,内置了WPS和IE8,使用QEMU TCG运行,速度慢,凑合能用. 使用前先sudo apt install qemu-system-x86,把压缩包中的2003.qco ...

  9. 独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图

    前言 此文我首发于CSDN(所以里面的图片有它的水印) 趁着隔离梳理一下之前做的一个有用的功能:在浏览器中去切割多分辨率瓦片图 这是一个有趣的过程,跟我一起探索吧 阅读本文需具备前置知识:对krpan ...

  10. 前端微信登录获取code,userInfo,openid

    getUser(e) { wx.getUserProfile({ desc: '用户完善会员资料', success: res => { let userInfo = res.userInfo; ...