转载https://blog.csdn.net/wzsy_ll/article/details/82866627

1、为什么使用Docker(本人)

最近总是频繁的在新服务器发布项目, 每次发布都需要布置项目所需要的环境特别麻烦,而且还有一台机器需要两个环境的状况

例如:发布java web 项目而言 需要下载安装jdk 和tomcat 安装Docker后只需要几个命令就轻松搞定,还有两个环境的问题,我们有一台服务器需要发布两个java web项目 而有一个项目必须使用jdk1.7 而另一个必须用jdk1.8,这个使用Docker都可以轻松解决

2、Docker介绍

Docker里面有三个概念分别是:

镜像,仓库,容器

经过简单的安装我对这三个概念的理解大致如下:

以下为本人个人观点仅供参考!

容器:就说运行java web项目,首先需要有运行环境,而这个容器就是我们的运行环境

镜像:我把镜像理解为我们的操作系统,这个操作系统(镜像)运行起来后才会有我们程序运行的环境(容器)

仓库:这个仓库也就是我们下载操作系统(镜像)的地方,里面有各式各样的操作系统(镜像),redis,tomcat的镜像等等

接下来进行Docker的安装和简单的使用来体验一下使用Docker是不是很方便

3、Docker安装与启动

因为第一次使用Docker也不清楚哪个版本比较好,所以按照官网的提示安装了最新版本(以下内容来自官网,本人亲测安装成功)

1)Docker安装所需要CentOS7以上才可以安装

2)  安装所需的软件包

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
 

3)  设置 stable 镜像仓库:

  1.  
    $ sudo yum-config-manager \
  2.  
    --add-repo \
  3.  
    https://download.docker.com/linux/centos/docker-ce.repo

4)  启用 edge 和 testing 镜像仓库:

  1.  
    $ sudo yum-config-manager --enable docker-ce-edge
  2.  
    $ sudo yum-config-manager --enable docker-ce-testing

5)  更新yum软件包索引:

$ sudo yum makecache fast
 

6)  安装Docker最新版本:

$ sudo yum install docker-ce
 

7)启动Docker:

$ sudo systemctl start docker
 

8)验证是否启动成功:

$ sudo docker run hello-world
 

4、Docker常用命令以及使用图解

1、拉取镜像

docker pull 镜像地址
 

阿里docker镜像地址:

https://dev.aliyun.com/search.html

以拉取tomcat镜像为例,点击搜索

这个也就是带有tomcat环境的操作系统,这个是完整的命令直接复制就行

docker pull registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
 

因为tomcat需要java环境所以下载会有一点慢

等待下载完成...

2、查看所有镜像

docker images
 

上图可以看到两个镜像,第一个是我们测试Docker是否成功安装的  第二个使我们下载好的tomcat镜像

3、运行镜像

docker run -d -p 本机端口:容器端口 镜像名称

-d:镜像在后台运行

-p指定本机与容器内部交互的端口 -P是随机开放一个端口与容器内部ID映射(这里不做演示)

运行tomcat镜像,我们把本机的80端口映射到容器的8080端口

docker run -d -p 80:8080 registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
 

我们访问一下看tomcat是否成功启动

tomcat主页已经显示证明服务正常启动了

4、查看正在运行的容器

docker ps 
 

5、进入到容器内部

docker exec -it 容器ID bash   (下面是我的容器ID 每个容器ID是不一样的 使用docker ps 查看一下)

docker exec -it a1a4eaba7dd4 bash
 

退出容器:输入exit

6、文件传输

如果我们想获取容器内tomcat的日志文件怎么办呢

容器 -----> 本机

docker cp ID全称:容器文件路径 本地路径

docker cp a1a4eaba7dd44db8a23701c2f7825a506381c7c889bb0702dd747ad521a809d0:/usr/tomcat/logs/catalina.out /usr/local/Docker/catalina.out
 

本机 -----> 容器 (这个就不演示了都差不多)

docker cp 本地文件路径 ID全称:容器路径

7、停止容器

docker stop 容器ID

docker stop a1a4eaba7dd4
 

我们再访问一下:

下面两个命令一会儿会说到:

8、删除容器

docker rm 容器id

9、删除镜像

docker rmi 镜像id

5、构建镜像并发布自己的项目

1、在/usr/local下创建Docker文件夹(随便的一个空的文件夹)

2、上传war包到这个文件夹

war包下载地址:https://pan.baidu.com/s/1R2d_C98A-EzlEibChQ1p7A 提取码: fuf4

3、创建Dockerfile文件

touch Dockerfile
 

3、编辑Dockerfile

vi Dockerfile
 

4、写入以下内容

  1.  
    #该镜像的父镜像 为 tomcat 镜像 这样我们就有了tomcat的环境
  2.  
    from registry.cn-hangzhou.aliyuncs.com/shuodao/tomcat-8.5.27
  3.  
     
  4.  
    #复制当前文件夹下的 war包 到镜像中tomcat的webapps目录
  5.  
    COPY TestDocker.war /usr/tomcat/webapps
  6.  
     
  7.  
    #去除容器内部中文乱码问题
  8.  
    ENV LANG C.UTF-8

5、构建镜像(还是在Docker文件夹 也就是Dockerfile所在文件夹)

docker build -t 镜像名称(镜像名称必须为小写):镜像版本 .

注意后面的点要加上,这个代表Dockerfile的所在目录

docker build -t docker-test:latest .
 

使用docker images 查看一下我们构建的镜像

运行镜像

docker run -d -p 80:8080 docker-test
 

像本文刚开始提到的,每个项目都需要有自己的运行环境,我们可以为每个项目都配置一个属于自己的镜像

6、删除镜像和容器

当我们有废弃的镜像和容器时,不使用需要删除

我们需要注意的一点是:

镜像启动后会产生容器,如果不先删除容器,镜像是无法删除的

例如:

我们停掉刚才的容器,删除我们的镜像

正确的步骤:

首先我们需要先删除容器:

查看所有状态的容器(包括已经被停止调的容器)

docker ps -a
 

先删除容器:

docker rm 87c728718a7b
 

再查看一下发现容器已被删除:

接下来删除镜像:

docker rmi  48dc9dfde4d8
 

CentOS7 下Docker最新入门教程 超级详细 (安装以及简单的使用)的更多相关文章

  1. centos7下docker的安装教程

    Centos7下docker安装教程以及踩过的那些坑 推荐在Centos下安装docker,在windows下安装docker可能会遇到很多的问题,而且docker官方推荐使用linux环境来使用do ...

  2. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...

  3. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的 ...

  4. RabbitMQ入门教程(一):安装和常用命令

    原文:RabbitMQ入门教程(一):安装和常用命令 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  5. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置

    图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...

  6. 前端组件化Polymer入门教程(1)——初识&&安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

  7. 全面的Docker快速入门教程

    前言: 都2021年了,你还在为了安装一个开发或者部署环境.软件而花费半天的时间吗?你还在解决开发环境能够正常访问,而发布测试环境无法正常访问的问题吗?你还在为持续集成和持续交付(CI / CD)工作 ...

  8. CentOS7下Docker的安装与使用

    前言 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...

  9. CentOS 6.4 服务器版安装教程(超级详细图解)

    附:CentOS 6.4下载地址 32位:http://mirror.centos.org/centos/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1to2.torre ...

随机推荐

  1. Codeforces Global Round 11 D. Unshuffling a Deck(构造/相邻逆序对)

    题目链接:https://codeforces.com/contest/1427/problem/D 题意 给出一个大小为 \(n\) 的排列,每次操作可以将 \(n\) 个数分为 \(1 \sim ...

  2. AtCoder Beginner Contest 177

    比赛链接:https://atcoder.jp/contests/abc177/tasks A - Don't be late #include <bits/stdc++.h> using ...

  3. fiddler抓包+安卓机 完成手机app抓包的配置 遇到的一些问题

    fiddler抓包+安卓模拟器完成手机app抓包的配置:fiddler抓包+雷电模拟器 完成手机app抓包的配置 其实在安卓真机上弄比在虚拟机上弄更麻烦一点,它们的步骤都差不多一样,就是在安卓真机上弄 ...

  4. 2019牛客暑期多校训练营(第九场) D Knapsack Cryptosystem

    题目 题意: 给你n(最大36)个数,让你从这n个数里面找出来一些数,使这些数的和等于s(题目输入),用到的数输出1,没有用到的数输出0 例如:3  4 2 3 4 输出:0 0 1 题解: 认真想一 ...

  5. CentOS 6 修改/etc/security/limits.conf不生效办法

    我们使用CentOS系统,在部署新的服务经常会遇到 打开最大文件数限制 too many open files的警告,通常我们只需要修改/etc/security/limits.conf该文件,增加两 ...

  6. kubernetes实战-交付dubbo服务到k8s集群(一)准备工作

    本次交付的服务架构图:因为zookeeper属于有状态服务,不建议将有状态服务,交付到k8s,如mysql,zk等. 首先部署zk集群:zk是java服务,需要依赖jdk,jdk请自行下载: 集群分布 ...

  7. HashMap三百问

    文章目录: 一.JDK1.7之HashMap 二.JDK1.8之HashMap 三.Hashtable JDK1.7之HashMap 1. 定义 HashMap实现了Map接口,继承AbstractM ...

  8. 记一次 Raven2 渗透(phpmailer漏洞+UDF提权)

    目录: 1. 寻找IP 2.dirb目录爆破 2.PHPMailer漏洞反弹得到shell 3.python版本的exp修改 4.查看wordpress的wp-config.php配置文件得到数据库账 ...

  9. 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题

    题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...

  10. js 深入原理讲解系列-事件循环

    js 深入原理讲解系列-事件循环 能看懂这一题你就掌握了 js 事件循环的核心原理 不要专业的术语,说人话,讲明白! Q: 输出下面 console.log 的正确的顺序? console.log(' ...