此文章采取狂神说Java

https://space.bilibili.com/95256449


Docker学习网址:

Docker官网:https://www.docker.com/

Docker中文官网:https://www.dockerchina.cn/

Docker菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html


Docker的优势:

  1. 更高效的利用系统资源
  2. 更快速的启动时间
  3. 一致的环境
  4. 持续交付和部署
  5. 更轻松的迁移
  6. 更轻松的维护和扩展

容器和虚拟机的比较:

与传统的虚拟机相比,Docker优势体现启动速度快、占用体积小


Docker服务器与客户端

Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一个宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。


Docker镜像与容器

镜像是构建Docker的基石,用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。例如:

  • 添加一个文件
  • 执行命令窗口
  • 打开一个窗口

Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或者多个进程。我们可以认为,进项是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。容器基于镜像启动,一旦容器启动完成后,我们就可以登录倒容器中安装自己需要的软件或者服务,所以Docker容器就是:

  • 一个镜像格式
  • 一些列标准操作
  • 一个执行环境

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。和集装箱一样,Docker在执行操作时,并不关心容器中到底装了什么,他不管是web服务器,还是数据库或者是应用程序服务器什么的,所有的容器都按照相同的方式将内容“装载”进去。


Registry(注册中心)

Docker用Registry来保存用户构建对象。Registry分为公共和私有两种,Docker公司运营公共的Registry叫做Docker Hub。用户可在Docker Hub注册账号,分享并保存自己的镜像(在Docker Hub下载镜像巨慢,可以自己构建私有的Registry)。


安装Docker

  1. yum包更新到最新
 $ yum update
  1. 安装Docker,出现输入的界面都按y
 $ yum install docker
  1. 检测Docker安装是否成功并查看Docker版本
 $ docker -v

Docker的启动与停止

 # 启动docker
$ systemctl start docker # 查看docker是否启动成功
$ systemctl status docker # docker 帮助文档
$ docker help # 停止docker(容器)
$ systemctl stop docker # 开机默认启动Docker
$ systemctl enable docker

Docker常用命令

镜像相关命令

 # 查看镜像
$ docker images
  • REPOSITORY:镜像
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

这些镜像都是存储在Docker宿主机的/var/lib/docker目录下


搜索镜像

如果你需要从网络中查找需要的镜像

 # docker search  镜像名称
$ docker search nginx
  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自定构建,表示该镜像由Docker Hub自动构建流程创建的

拉取镜像

 # docker pull  镜像名称
$ docker pull nginx

删除镜像

按镜像ID删除镜像

 # docker rmi 镜像ID
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest c919045c4c2b 40 hours ago 142 MB
[root@192 ~]# docker rmi c919045c4c2b
Untagged: docker.io/nginx:latest
Untagged: docker.io/nginx@sha256:1c13bc6de5dfca749c377974146ac05256791ca2fe1979fc8e8278bf0121d285
Deleted: sha256:c919045c4c2b0b0007c606e763ed2c830c7b1d038ce878a3c0d6f5b81e6ab80b
Deleted: sha256:397dbc5767fa9031bfbe1523c4f0de80ad7ce8103b8cc2b58e6f36554c7f93eb
Deleted: sha256:347cfffd04bb8392ba1999a911a3d9b5c2327a8b516a943d17965b41c88e1216
Deleted: sha256:1b611a5b7c5d88f05e9eedeec09ba67bb81821a18dd21c6a0644a2e5017ac524
Deleted: sha256:78dd14d2a308dfd875fc3baae9b8b2e1a15c7fbee828cdbdd8e55b18c64c6128
Deleted: sha256:f5d1b591ffdcdfd05874cf66cb351506c6ef683cb58d2883bde24819b5a4f37d
Deleted: sha256:1401df2b50d5de5a743b7bac3238ef3b7ce905ae39f54707b0ebb8eda3ab10bc
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@192 ~]#

删除所有镜像

 $ docker rmi `docker images -q`

容器相关命令

查看所有容器

 $ docker ps -a

查看最后一次运行的容器

 $ docker ps -l

查看停止的容器

 $ docker ps -f status=exited

创建与启动容器

创建容器常用的参数说明

创建容器命令:

 $ docker run
  • -i:表示运行容器

  • -t:表示容器启动后进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端

  • --name:为创建的容器命名

  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录活或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上

  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)

  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

1.交互式方式创建容器

 $ docker run -it --name=容器名称 镜像名称:标签/bin/bash

这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态

退出当前容器

 $ exit

2.守护式创建容器

 $ docker run -di --name=容器名称 镜像名称:标签

登录守护容器方式

 $ docker exec -it nginx /bin/bash   #镜像名称或者镜像ID

查看容器内容

 $ ll   #或者ls

启动容器:

 $ docker start 容器名称或者容器ID

查看日志

docker logs [ID或者名字] 可以查看容器内部的日志内容

docker logs ID或者名字

文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

$ docker cp 需要拷贝的文件或目录 容器名称:容器目录

也可以将文件从容器内拷贝出来

$ docker cp 容器名称:容器目录 需要拷贝的文件或目录

查看容器IP地址

我们可以通过以下命令查看容器运行的各个数据

 $ docker inspect 容器名称或者容器ID

也可以执行下面的命令直接输出IP地址

 $ docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称或者ID

删除容器

删除镜像是rmi,删出容器是rm

$ docker rm 容器名称或者ID

镜像操作

mysql部署

1.查看可用MySQL版本

MsSQL镜像库地址:https://hub.docker.com/_/mysql?tab=tags

可以通过Sort by 查看其他版本的MySQL,默认是罪行版本 mysql:latest

还可以用 docker 命令来查看其他版本

 $ docker search mysql

2.拉取 MySQL 镜像

拉取官方的最新版本的镜像

 $ docker pull mysql:latest  #:latest可以省略,官方默认latest

3.查看本地镜像

使用命令来查看是否已经安装了 mysql

 $ docker images

4.创建守护方式

 $ docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

5.进入mysql容器

 $ docker exec -it mysql /bin/bash

6.用mysql打开客户端

 $ mysql -uroot -proot --default-character-set=utf-8
# 登录mysql
$ mysql -u root -p

7.打开操作

#用show databases打开
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.10 sec)

8.退出当前镜像

 $ exit   #或者Ctrl+D

9.停止当前镜像

 $ docker stop 镜像名称或者镜像ID

Nginx部署

创建Nginx容器

 $ docker rum -di --name=mysql -p 80:80 nginx

创建nginx的配置目录

 $ docker cp nginx:etc/nginx  /usr/local/mydata/nginx/

关闭容器

 $ docker stop nginx

删除容器

 $ docker rm nginx

通过容器挂载,挂在nginx

 $ docker rum -di --name=nigin -p 80:80 -v /usr/local/mydata/conf/:/etc/nginx  nginx

ContOS 7安装Docker使用及部署MySQL和Nginx的更多相关文章

  1. Nginx系列(8)- Nginx安装 | Docker环境下部署

    Docker环境下部署Nginx https://www.cnblogs.com/gltou/p/15186971.html

  2. Docker部署Mysql, Tomcat, Nginx, Redis

    1. Mysql部署 问题及解决方案 容器内的网络和外部机器不能直接通信 外部机器和宿主机可以直接通信 宿主机和容器可以直接通信 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射 ...

  3. docker中如何部署mysql

    这篇博文讲很详细了. 链接

  4. 在Centos7中安装Docker并实例化Mysql

    首先 本文是一篇安装流程,从初始的Centos7安装Docker后实例化一个Mysql的整个流程,其中会包含一些需要注意的疑点和坑. 实例化的Mysql是将数据和配置保存在宿主机. 注意,在安装Doc ...

  5. 阿里云docker部署mysql

    看完我的上一个博客之后,对centos系统应该有一定的了解,话不多说,接下来我们来在docker容器中部署mysql. 1.下载mysql镜像,因为本人用的5.7版本,你也可以下载最新版,都是可以的 ...

  6. 通过 Docker 部署 Mysql 8.0 主从模式

    文章转载自:http://www.mydlq.club/article/106/ 系统环境: Mysql 版本:8.0.23 Docker 版本:19.03.13 一.为什么需要 Mysql 主从复制 ...

  7. docker微服务部署之:四、安装docker、docker中安装mysql和jdk1.8、手动构建镜像、部署项目

    docker微服务部署之:三,搭建Zuul微服务项目 1.Centos7安装Docker 详见:Centos7安装Docker 2.Docker中安装jdk1.8 详见:使用Docker构建jdk1. ...

  8. 在Centos上安装docker,部署mysql数据库

    何为docker? Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 本机环境 24小时不关机的Centos ...

  9. ubuntu docker安装与部署java,mysql,nginx镜像

    docker 安装与部署java,mysql,nginx docker 配置 安装docker $ sudo apt-get remove docker docker-engine docker.io ...

随机推荐

  1. 【刷题-LeetCode】123 Best Time to Buy and Sell Stock III

    Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the price of ...

  2. 【记录一个问题】golang中的time.Now()非常慢

    对一个代码做profile: 总函数调用 29.74s 20.25s 153: timestamp := time.Now().Unix() 这样的一行占了20.25秒. 我知道linux下 time ...

  3. ipython notebook教程

    一.简介 Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含代码.方程式.可视化和文本的文档.它的用途包括:数据清理和转换.数值模拟.统计建模.数据可视化.机器学习等等 ...

  4. 【自写信息搜集工具】ThunderSearch开发原理解析

    前段时间结合zoomeye的开发文档做了个简易的信息搜集工具ThunderSearch[项目地址 / 博客地址],这次来讲讲具体的实现原理和开发思路 首先要能看懂开发文档,https://www.zo ...

  5. 学习JAVAWEB第十一天

    今天以及明天做登录案例,复习所学知识.

  6. HTML 基础3

    表格 示例1: <h4>水平表头+普通边框</h4> <table border="1"> <caption>caption标签展示 ...

  7. Java BigDecimal 的舍入模式(RoundingMode)详解

    BigDecimal.divide方法中必须设置roundingMode,不然会报错. ROUND_UP:向正无穷方向对齐(转换为正无穷方向最接近的所需数值) ROUND_DOWN:向负无穷方向对齐 ...

  8. SpringBoot+MyBatis通过ScriptRunner读取SQL文件

    @Component public class InitDBTables implements CommandLineRunner { @Autowired DataSource dataSource ...

  9. Google hacker

    转载请注明来源:https://www.cnblogs.com/hookjc/ Google Hacking其实并算不上什么新东西,在早几年我在一些国外站点上就看见过相关的介绍,但是由于当时并没有重视 ...

  10. 在view中实现UIViewController的跳转 By H.L

    view中是不能进行UIViewController的push,pop等操作的,若进行跳转操作,一般是用代理,block,通知等实现,那如何实现在ViewController的subView中实现跳转 ...