此文章采取狂神说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. deepin20使用snap并设置代理

    snap下载 $ sudo apt update $ sudo apt install snapd https://snapcraft.io/docs/installing-snap-on-ubunt ...

  2. 小程序循环时的item问题

    平常在做小程序时,比如循环渲染数据时,如果有多个数据层次,一般都会这样 wx:for-item=item2,它的意思只是简单的起了一个wx:for循环值的别名,不是表示循环item2,index2同理 ...

  3. gorm中的scope

    作用域允许您重用常用逻辑,共享逻辑需要定义为类型 func(*gorm.DB) *gorm.DB 查询 func Scope1(db *gorm.DB) *gorm.DB { return db.Wh ...

  4. python操作MySQL--实例

    有一段时间,没更新,但这都不是自己懒惰的借口,希望自己能坚持下去: python可以操作MySQL 数据库,需要安装的是MySQL-python,并且实现读入excel表及生成excel 表,则需要x ...

  5. IDEA设置Maven

    1,在idea中设置maven,让idea和maven结合使用 idea中内置了maven,一般不使用内置,因为用内置修改maven的设置不方便 使用自己安装的maven,需要覆盖idea中默认的设置 ...

  6. Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization

    目录 Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization 1.Abstract 2.Intr ...

  7. CSS Modules 的六种用法

    一.局部作用域 二.全局作用域 三.定制哈希类名 四. Class 的组合 五.输入其他模块 六.输入变量

  8. JVM学习十二 - (复习)JVM内存结构

    JVM 内存结构 Java 虚拟机的内存空间分为 5 个部分: 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 JDK 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代.元 ...

  9. Jackson中处理map中的null key 或者null value 及实体字段中的null value

    1.map中有null key时的序列化  当有null key时,jackson序列化会报 Null key for a Map not allowed in JSON (use a convert ...

  10. NSLog输出格式及随机数

    NSLog输出格式及随机数 %@ 对象 %d, %i 整数 (%i和%d无差别,%i是老式写法,%d是新式写法而已.) %u 无符整形 %f 浮点/双字 %x, %X 二进制整数 %o 八进制整数 % ...