一、基础环境说明

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. Linux云主机安全入侵排查步骤

    导语 经常有用户报障系统被植入恶意程序,如挖矿软件.ddos攻击病毒.syn映射攻击病毒等,可以按照以下流程为用户排查入侵病毒类型: 一.定位病毒进程 对于用户反馈云主机性能卡顿,CPU和内存占用较高 ...

  2. 【loj2538】 【PKUWC 2018】Slay the Spire dp

    我们不难发现,假设抽了x张攻击牌,y张强化牌,那么肯定是打出尽可能多张的强化牌后,再开始出攻击牌(当然最少要一张攻击牌) 我们设G(i,j)表示:所有(抽到的攻击牌牌数为i,打出的攻击牌牌数为j)的方 ...

  3. C#,使用FindWindow和FindWindowEx查找窗体和控件

    函数: // Find Window // 查找窗体 // @para1: 窗体的类名 例如对话框类是"#32770" // @para2: 窗体的标题 例如打开记事本 标题是&q ...

  4. Exchange如何将邮件转发给外部邮件地址

    Exchange如何将邮件转发给外部邮件地址 最近遇到一个需求.一位已经离职的员工需要将后续的邮件转发给他自己的私人邮箱.安全,行政的审核通过后,这个问题就到了技术部门了. Exchange可以很方便 ...

  5. .Net7 内容汇总(1)

    .Net7 RC1发布 在9月14号,.Net7 RC1正式发布了. 按照微软的说法 This is the first of two release candidates (RC) for .NET ...

  6. 【项目实战】CNN手写识别

    由于只需要修改之前基于ANN模型代码的模型设计部分所以篇幅较短,简单的加点注释给自己查看即可 视频链接:https://www.bilibili.com/video/BV1Y7411d7Ys?p=10 ...

  7. harbor高可用部署

    文章转载自:https://blog.csdn.net/networken/article/details/119704025 harbor高可用简介 harbor目前有两种主流的高可用方案: 多ha ...

  8. Elasticsearch:同步 MongoDB 数据到 Elasticsearch

    转载自:https://elasticstack.blog.csdn.net/article/details/114639152 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写 ...

  9. Docker镜像仓库Harbor之Swagger REST API整合配置

    转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...

  10. 2022美团Java后端开发春招实习面经

    2022美团Java后端开发春招实习面经 一面 1.讲一下计算机网络的五层架构,每层分别有什么协议 ​ 五层架构:应用层.运输层.网络层.数据链路层.物理层 ​ 2.什么是 Http 协议,各种 Ht ...