Docker概述

1 Docker概述

我们写的代码会接触到好几个环境:开发环境、测试环境以及生产环境等等。多种环境去部署同一份代码,由于环境原因往往会出现软件跨环境迁移的问题(也就是**“水土”不服**)

针对这种问题如何解决?我们可以将工程及此工程依赖的所有软件打包到一个容器中统一部署

1.1 docker概念

  • Docker 是一个开源的应用容器引擎
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
  • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
  • 容器是完全使用沙箱机制,相互隔离
  • 容器性能开销极低。
  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

1.2 安装docker

1.2.1 安装docker

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,

基于CentOS7 安装Docker。官网:https://www.docker.com

环境要求:centos7的虚拟机(账号:root 密码:itcast )

安装docker (NAT模式-联网)

# 1、yum 在线安装 
yum install docker -y 
#2、启动docker
systemctl start docker   启动
systemctl stop docker    停止
systemctl restart docker  重启
#3、查看docker状态
systemctl status docker

1.2.2 docker架构

1.2.3 docker的使用流程

1.配置docker镜像加速

2.从docker仓库下载镜像到宿主机  docker仓库地址:https://hub.docker.com/

3.通过镜像启动生成容器环境

1)配置镜像加速

默认情况下,从docker hub(https://hub.docker.com/)上下载docker镜像太慢。一般都会配置镜像加速器:

  • Docker镜像源地址
    (1)官方镜像:https://registry.docker-cn.com
    (2)网易镜像:http://hub-mirror.c.163.com
    (3)清华大学:https://mirrors.tuna.tsinghua.edu.cn/
    (4)搜狐镜像:http://mirrors.sohu.com/
    (5)阿里镜像:阿里镜像需要登录阿里云控制台获取,每个账号有唯一镜像加速地址。在控制台—>镜像容器服务---->镜像中心:镜像加速服务 下获取。
    ————————————————
    版权声明:本文为CSDN博主「metgo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/metgo/article/details/107167856
修改文件并配置

在linux中打开:/etc/docker/daemon.json文件,并导入镜像地址

直接 vi /etc/docker/daemon.json

中科大镜像地址
{
 "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

操作文本命令

i : 进入编辑文本
退出 先按esc  在一起按shift+: 在下方弹出的命令行中输入wq 保存并退出
重新启动docker–docker相关的命令
#重启
systemctl restart docker
#查看docker信息
docker info

#启动docker服务:
systemctl start docker 
#停止docker服务:
systemctl stop docker 
#重启docker服务:
systemctl restart docker
#查看docker服务状态:
systemctl status docker 
#设置开机启动docker服务:
systemctl enable docker

2)从docker仓库下载镜像到宿主机–镜像相关的命令

#1 查看镜像: 查看本地所有的镜像
docker images

#2 搜索镜像:从网络中查找需要的镜像
docker search 镜像名称

#3 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号
如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
地址:https://hub.docker.com/
docker pull 镜像名称:版本号  /  docker pull 镜像名称(默认的版本号是latest)
		docker pull mysql:5.7  /  docker pull mysql

#4 删除镜像: 删除本地镜像
docker rmi 镜像id # 删除指定本地镜像

docker 安装版本解决方式
1.CentOS安装Docker要求

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

如果安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2.安装docker
首先安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

设置docker镜像源,一起复制即可

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

下载docker客户端

yum install -y docker-ce

3)通过镜像启动生成容器环境(重点)–容器相关命令

#查看容器
docker ps # 查看正在运行的容器
docker ps -a #查看所有容器,包括未运行的容器

#创建并启动容器  
docker run -id --name=自定义容器名称 -p 映射端口:镜像端口 镜像名称 
run:启动
-id/-di:  创建容器
--name:  为创建的容器起别名
-p: 端口映射

#停止容器
docker stop 容器名称
#删除容器(容器是停止状态才能删除)
docker rm 容器名称

#启动容器
docker start 容器名称

启动nginx

命令:docker run -di --name=mynginx1 -p 81:80 nginx

设置网络

如果各位运行完容器后会出现以下信息,那么需要设置一下网络配置

解决办法:
#编译配置文件
vi /etc/sysctl.conf
#在末尾添加这段代码
net.ipv4.ip_forward=1 

#重启network服务
systemctl restart network 
#重启docker(容器就关闭了)
systemctl restart docker
#启动容器
docker start 容器名称 

启动MySql

命令:docker run -di --name=mymysql1 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

问题思考:

Docker 容器删除后,在容器中产生的数据也会随之销毁,如何能做到容器删除 数据不删除

数据卷(linux中的文件夹)

什么是数据卷

数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步,一个数据卷可以被多个容器同时挂载,一个容器也可以挂载多个数据卷。

数据卷作用

容器数据持久化、容器之间数据交换

配置数据卷

创建启动容器时,使用 –v 参数 设置数据卷

#启动容器,挂载数据卷 注意冒号前后不能有空格
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...

#先在root目录先创建一个文件夹 ,因为要做数据卷映射
cd ~
mkdir data
#启动容器,挂载数据卷
docker run -di --name=自定义容器名称 -p 33307:3306 -v /root/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 
 

查看mysql的日志会发现有权限不足的问题:docker logs my_mysql

–privileged :容器内的root拥有真正的root权限.否则,容器内的root只是外部的一个普通用户权限

docker run -id --name=my_mysql777 --privileged=true -p 33307:3306  -v /root/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 

删除当前数据库容器

#先停止
docker stop my_mysql
#再删除
docker rm my_mysql

测试创建一个新的数据库容器挂在数据卷 查看是否有travel数据:有!

1、创建其他用户
(1)首先进入mysql
docker exec -it zjfz-mysql /bin/bash
(2)然后进入docker内部,按照正常的操作登录mysql即可。
mysql -u root -p
(3)输入密码:123456,然后就可以按照下面命令一步步创建新用户了
CREATE DATABASE test; -- 创建新数据库 test
CREATE USER 'perpson'@'%' IDENTIFIED BY '123456';  -- 创建新用户 mima 及密码 123456
GRANT ALL ON test.* TO `perpson`@`%`; -- 为 mima 用户设置 test 的权限
flush privileges; -- 刷新用户权限
exit; -- 退出
(4)这时,就可以用新用户登录mysql了
mysql -u person -p

启动tomcat

需求: 在Docker容器中部署Tomcat,并通过外部机器访问Tomcat部署的项目。

创建启动容器

docker run -di --name=mytomcat1 -p 8081:8080 tomcat:8.5

问题:发现访问不到页面

查看tomcat容器所在的目录

docker exec -it my_tomcat1 /bin/bash

发现webapp下没有任何页面

#退出
exit

将资料中的页面放入数据卷中(/root/webapps) 进行挂在

docker run -id --name=mytomcat1 --privileged=true -v /root/webapps:/usr/local/tomcat/webapps -p 8081:8080 tomcat:8.5

直接把要部署的资源直接放到宿主机的 /root/webapps文件夹中即可

启动Redis

创建启动容器

docker run -di --name=myredis1 -p 63779:6379 redis
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值