医院如何做网站策划,公司网站上荣誉墙怎么做,德洲网站建设,wordpress无法上传图片#x1f468;#x1f393;作者简介#xff1a;一位大四、研0学生#xff0c;正在努力准备大四暑假的实习 #x1f30c;上期文章#xff1a;首期文章 #x1f4da;订阅专栏#xff1a;Docker 希望文章对你们有所帮助 做项目的时候#xff0c;感觉很多地方的配置都特别… 作者简介一位大四、研0学生正在努力准备大四暑假的实习 上期文章首期文章 订阅专栏Docker 希望文章对你们有所帮助 做项目的时候感觉很多地方的配置都特别麻烦特别是搞微服务的时候环境配置更是恶心了Docker可以解决这些问题所以我速成了一波。Docker的学习不需要什么知识储备拿来做工具使用就行了。 在这边讲解一下Docker的基本机理然后使用Docker进行配置实例的应用MySQL、Tomcat、nginx、Redis。 一文学会Docker 初识DockerDocker概述安装Docker基于CentOs7Docker架构配置Docker镜像加速器 Docker命令服务相关命令镜像相关命令容器相关命令最重要 Docker容器数据卷数据卷概念与应用配置数据卷 Docker应用部署部署MySQL部署Tomcat部署Nginx部署Redis 初识Docker
Docker概述
我们写代码会接触到很多环境开发环境、测试环境、生产环境。 当代码在开发环境中进行开发的时候因为版本问题经常会在测试环境中报错处理起来较为复杂Docker就是来解决这种问题的。 DockerDocker是一个开源的应用容器引擎基于Go语言实现可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中并发布到任何流行的Linux机器上。 总结docker是一种容器技术解决软件跨环境迁移的问题。
安装Docker基于CentOs7
docker官网Docker官网 打开Linux命令行自行安装docker
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包 yum-util 提供yum-config-manager功能另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker出现输入的界面都按y可能会安装失败因为是从GitHub上面获取的可以多安装几次
yum install -y docker-ce
# 5、 查看docker版本验证是否验证成功
docker -vDocker架构 Image镜像相当于root文件系统由仓库提供 container容器一个镜像对应多个容器相当于面向对象程序语言中类与对象的关系镜像是静态的定义容器是镜像运行时的实体。容器可以被创建、启动、停止、暂停等 repository仓库一个代码控制中心用来保存镜像 配置Docker镜像加速器
国外速度比较慢我们选择国内的阿里云的镜像加速器打开阿里云官网 阿里云 搜索容器镜像服务将下列命令行复制到Linux中每个人的网址都是不一样的 用cat命令可以查看 如果要换源就把这里的网址换一下就好了。
Docker命令
服务相关命令 启动dockersystemctl start docker 关闭dockersystemctl stop docker 重启dockersystemctl restart docker 开机自启dockersystemctl enable docker 查看docker状态systemctl status docker 镜像相关命令
1、查看镜像查看本地所有的镜像 docker images docker images -q # 查看所有镜像id 2、搜索镜像从网络中查找需要的镜像 docker search 镜像名称 3、拉取镜像从Docker仓库下载镜像到本地镜像名称格式为 名称:版本号如果版本号不指定则是最新的版本。如果不知道镜像版本可以去docker hub搜索对应镜像查看。 docker pull 镜像名称 4、删除镜像 docker rmi 镜像id 容器相关命令最重要
1、查看容器 docker ps # 查看正在运行容器 docker ps -a # 查看所有容器 2、创建及进入容器docker run 参数 参数说明 -i保持容器运行通常与-t同时使用加入it以后容器创建后自动进入容器中退出容器后容器自动关闭 -t为容器重新分配一个伪输入终端通常与-i同时使用 -d以守护模式运行容器。创建一个容器在后台运行要用docker exec进入容器。退出后容器不会关闭 -it创建的容器为交互式容器-id创建的为守护式容器 –name为创建的容器命名 3、启动容器 docker start 容器名 4、停止容器 docker stop 容器名 5、删除容器 docker rm 容器名 6、查看容器信息 docker inspect 容器名 Docker容器数据卷
数据卷概念与应用
Docker的问题 Docker容器删除后在容器中产生的数据也会随之销毁 Docker容器和外部机器不能直接交换文件只能与宿主机进行 容器之间不能进行数据交互 而数据卷可以解决这些问题
数据卷 1、是宿主机中的一个目录或文件 2、当容器目录与数据卷目录绑定后对方的数据会立即同步 3、一个数据卷可以被多个容器同时挂载 4、一个容器也可以被挂载多个数据卷
数据卷的作用 1、容器数据持久化 2、外部机器与容器间接通信 3、容器之间数据交换
配置数据卷
创建启动容器时使用-v参数设置数据卷 docker run … –v 宿主机目录(文件):容器内目录(文件) ... 注意 1、目录必须是绝对路径 2、若目录不存在会自动创建 3、可挂载多个数据卷
Docker应用部署
部署应用的步骤 1、搜索镜像 2、拉取镜像 3、创建容器 4、操作容器中的应用
部署MySQL
我们知道外部机器是无法直接与宿主机内的容器交互的但是外部机器可以与宿主机交互宿主机可以与其内部的容器交互。 举例一个解决方案对于端口为3306的MySQL我们可以将其与宿主机的3307端口交互外部机器只需要与3307交互这样外部机器即可间接访问容器的服务。 这种操作成为端口映射 1、搜索mysql镜像
docker search mysql2、拉取mysql镜像
docker pull mysql:5.63、创建容器设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysqldocker run -id \
-p 3307:3306 \
--namec_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD123456 \
mysql:5.6-p 3307:3306将容器的 3306 端口映射到宿主机的 3307 端口。 -v $PWD/conf:/etc/mysql/conf.d将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录 -v $PWD/logs:/logs将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录 -v $PWD/data:/var/lib/mysql 将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录 -e MYSQL_ROOT_PASSWORD123456初始化 root 用户的密码。 4、守护者模式进入容器操作MySQL
docker exec –it c_mysql /bin/bash上述4步执行完毕
5、使用外部机器连接容器中的MySQL 剩下的自行去验证就行。
部署Tomcat
1、搜索tomcat镜像
docker search tomcat2、拉取tomcat镜像
docker pull tomcat3、创建容器设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcatdocker run -id --namec_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat **-p 8080:8080**将容器的8080端口映射到主机的8080端口 **-v $PWD:/usr/local/tomcat/webapps**将主机中当前目录挂载到容器的webapps 4、使用外部机器访问tomcat 先使用vim编辑一点信息
mkdir test
cd test
vim index.html接着本地访问网址192.168.177.130:8080/test/index.html
部署Nginx
1、搜索nginx镜像
docker search nginx2、拉取nginx镜像
docker pull nginx3、创建容器设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.confuser nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for;access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}docker run -id --namec_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx-p 80:80将容器的 80端口映射到宿主机的 80 端口。 -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录 -v $PWD/logs:/var/log/nginx将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录 4、外部机器访问nginx
部署Redis
1、搜索Redis镜像
docker search redis2、拉取Redis镜像
docker pull redis:5.03、创建容器设置端口映射
docker run -id --namec_redis -p 6379:6379 redis:5.04、使用外部机器连接redis
./redis-cli.exe -h 192.168.177.130 -p 6379