首页 > 其他分享 >docker部署

docker部署

时间:2023-06-21 13:33:32浏览次数:29  
标签:容器 部署 宿主机 -- mysql 镜像 docker

docker

docker是一个开源的应用容器引擎,用于开发应用、交付(shipping)应用、运行应用,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到云服务器的Linux上。

docker容器是轻量级的虚拟机,可以将操作系统底层虚拟机化,而虚拟机则是虚拟化硬件

docker行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

优点:更快速的启动时间 统一环境,统一配置,可移植性

安装docker

去阿里云购买云服务器, 云服务器自带centos系统


1.如果你之前装过docker需要卸载  
卸载命令:
yum remove docker docker-common  docker-selinux docker-engine
rm -rf /var/lib/docker


# 新的安装:
1.首先安装docker相关依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.创建docker文件仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.使用阿里云下载docker
sudo yum install docker-ce -y

安装完毕 检查是否安装成功 docker -v
Docker version 23.0.3, build 3e7cbfd

常用命令

# 查看是否启动
systemctl status docker

# 启动docker
systemctl start docker

# 停止docker
systemctl stop docker

# 重启docker
systemctl restart docker

# 查看docker状态
systemctl status docker

# 开机自启动
systemctl enable docker

# 查看docker概要
docker info


# 远程仓库下载镜像 仓库地址:https://hub.docker.com
# 需要的软件都可以在这上面下载

镜像相关命令

# 1 查找镜像
建议去hub.docker.com 直接搜,更直观

# 2 下载镜像,指定标签 tag
docker pull redis
docker pull centos:7
docker pull mysql:5.7
docker pull python:3.8
如果不指定标签,会下载最新

# 3 查看本地镜像
docker images

# 4 删除镜像
	docker rmi -f 镜像ID   # 强制 删除一个镜像

容器相关命令

# 把镜像运行成容器,并且一个一个镜像,可以运行出多个容器

# 查看正在运行的容器
	docker ps
# 查看所有容器
	docker ps -a
# 查看最后一次运行的容器
 	docker ps -l
  
  
  
 # 创建容器/运行容器
-如果容器没有创建,直接执行run,就会创建并运行,所以你只需要会run就行了
  -run 的时候,有很多参数
  -i:表示运行容器
  -t:表示容器启动后会进入容器命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)
  --name :为创建的容器命名,如果不写,随机生成一个名字
  -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
		

# 创建容器
docker run -it --name=mycentos centos:7
# 容器名为mycentos 使用的镜像是centos:7


# 退出并关闭该容器
exit


# 进入某个容器
docker exec -it 容器id /bin/bash
# 直接就可以进入这个容器的终点 可以操作该容器了


# 启动容器
docker start 容器名/容器i

# 停止容器
docker stop 容器id号/容器名称


# 重启容器
docker restart 容器id号/容器名称

# 删除容器  需要先停止后删除
docker rm 容器id号/容器名称


# 直接让某个容器执行命令 
docker exec 容器id 命令


# 查看某个容器运行日志
docker logs 容器id

# 查看容器下的进程
docker top 容器id

# 查看容器内的详细信息
docker inspect 容器id

# 查看某个容器的ip地址
 sudo docker inspect 容器名 | grep "IPAddress"



# 文件拷贝  容器内文件复制到宿主机上
 docker cp  20fd8:/django_file /home/django_file
 docker cp 容器id:容器目录 需要拷贝的文件或目录
# 将id为20fd8容器里面的根目录下的django_file文件,复制到宿主机home文件下

docker cp ./django_file 20fd894a3f20:/home/django_file
docker cp 宿主机文件路径 容器名称:容器文件路径
# 宿主机文件复制到容器上



容器目录映射

 -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  
# 将宿主机的目录映射到容器中 在创建容器的时候
docker run -it --name=moon11 -v /moon:/mymoon centos:7
# 把宿主机根目录下的moon 映射到 moon11容器的根目录下的mymoon中

eg:
docker run -it --privileged=true -v /host_data:/docker_data
--name=u1 myubuntu1.1
# 宿主机根目录下的host_data文件夹映射到容器内根目录docker_data
# 容器名称叫 u1 用的镜像是myubuntu1.1

这样两个目录双向绑定 任意端修改都会同步


'''
也可以设定读写权限 默认是又可以读又可以写 
-v /host_data:/docker_data:ro
如果加 ro 就是只可以读 容器内不能写数据 只能读宿主机对于目录数据
'''


容器端口映射/继承映射

在容器中启动一个mysql5.7 让容器里3306端口 监听宿主机的3306
docker run -id --name=mysql -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# 创建一个容器叫mysql 映射宿主机的3306 到 自己的3306 mysql密码为123456
# -e MYSQL_ROOT_PASSWORD=123456  这个参数只针对mysql
# 访问宿主机的80端口 相当于访问这个容器的 3306端口


#  netstat -nlp |grep 80  查看本机80端口占用情况


然后就可以在本机上 直接用navicat 连接容器内的数据
连接地址是服务器的公网地址  用户root 密码123456 即可

然后你就可以在mysql这个容器中使用 mysql了

继承映射

docker run -it --privileged=true -v /host_data:/docker_data
--name=u1 myubuntu1.1

1.创建了容器 u1 并做了目录映射

2.创建容器 u2 继承u1的目录映射规则
docker run -it --privileged=true --volumes-from u1 --name=u2 myubuntu1.1
# docker run -it --privileged=true --volumes-from父类 --name=u2 myubuntu1.1
# 这个时候u2容器就也有对于的文件夹和数据

mysql/redis/nginx部署

mysql部署只需3步

1.宿主机内先创建文件夹
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
2.宿主机创建配置文件并写入内容
vim /home/mysql/my.cnf
my.cnf文件内容:

[client]
port=3306
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

3.创建一个mysql容器 并将数据文件映射到宿主机上
docker run -id -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name dockermysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 将 宿主机文件目录与容器内部文件目录映射 
# 这样容器内的mysql数据也会同步保存在宿主机上
# 如果容器被删除 直接同样的命令可以再创建一个相同的容器并还有数据


4.这样你就可以在在容器中 创建表 创建库 数据都会在宿主机上
即使你的容器被删除了,你只需要再次启动一个容器,数据目录映射相同就可以了

部署nginx

1.宿主机:
# 在根目录下创建文件夹
mkdir html
cd html
上传shopweb项目


2.创建容器 并关联对应目录

docker run -id --name=nginx -p 80:80 
-v /html/shopweb:/usr/share/nginx/html nginx

# shopweb(就是我的静态html文件夹)
# 这样访问宿主机的80端口 会直接显示容器内html文件内容


进入到容器的指定位置查看配置
cd /etc/nginx/conf.d/
通过查看得知
server {
    listen       80;
    # 监听了80端口
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        # 执行目录/usr/share/nginx/html
        index  index.html index.htm;
      # 执行的文件index.html
    }
  
 所以我们只需要把我们的文件映射到/usr/share/nginx/html到这里即可
 -v /html/shopweb:/usr/share/nginx/html



以后再上线前端内容,比如已经打包好了的vue代码,我们直接传到宿主机下的html文件中即可 完成

部署redis

1.宿主机下载redis镜像
docker pull redis

2.宿主机创建文件夹 mkdir /home/redisdata

3.编写配置文件 vim /home/redis.conf
bind 0.0.0.0
daemonize no
protected-mode no
requirepass 111222
# requirepass是redis的密码



4.创建容器 并运行redis 
docker run -id  -p 6379:6379 --name redis -v /home/redis.conf:/etc/redis/redis.conf -v /home/redisdata:/data redis  redis-server /etc/redis/redis.conf


5.这样访问 远程连接宿主机地址的 6379端口 就是访问容器内的redis了
 

容器保存为新镜像

作用:比如我们拉取了centos:7的镜像,然后运行成了容器,我们在容器中装了python3.8 我们可以把这个容器再做成镜像
接下来以后,公司人都可以用这个镜像了

docker run -id --name centos_vim centos:7
1.运行一个centos:7的容器

docker exec -it a6e240 /bin/bash
yum install vim -y
yum install python3.8 -y
2.在容器中装vim + python3.8


3.再把容器保存为镜像
docker commit 容器id/名称 镜像名字:版本
# docker commit d8d4c4d2e1e9 moon1:1.1
# 这样就将一个容器打包成了镜像


'''
接下来比如把之前装有vim和python的容器删除了 
再基于新的镜像创建容器 容器中就直接有了vim和python和其他所有
刚刚操作的文件了
最开始我们拉下来的centos:7这个镜像也可以删除了
'''


镜像打包备份

docker save -o centos_vim_image.tar centos_vim_image
# 把宿主机上的centos_vim_image镜像打包成一个压缩包

然后可以传给他其他人
docker load -i centos_vim_image.tar

将本地镜像上传到私有仓库

将本地生成的镜像上传到docker官方私有仓库

1.下载registry镜像
docker pull registry

2.然后百度即可


第二种: 使用 harbor 专业私有仓库服务
可视化界面 可百度了解

dockerfile

Dockerfile的命令

	FROM 基础镜像 	       #基于哪个基础镜像来构建
  
  MAINTAINER lqz 	      # 声明镜像的创建者
  
  EXPOSE 8080           # 需要暴露的端口
  
  ENV key value 	      # 设置环境变量 (可以写多条)
  
  RUN command 	        # 是Dockerfile的核心部分(可以写多条)
  
  ADD source_dir/file dest_dir/file 	
  #将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
  
  COPY source_dir/file dest_dir/file 	
  # 和ADD相似,但是如果有压缩文件并不能解压
  
  WORKDIR  	
  # 设置工作目录,运行起这个容器,进入容器就是到这个目录

示例:构建一个带vim的centos镜像

1.vim Dockerfile
# 在宿主机上面创建一个Dockerfile文件

# Dockerfile文件内写入:
FROM centos:7
MAINTAINER lqz
ENV name lqz
RUN yum install vim -y 
RUN mkdir /python
RUN touch /python/ss.py
RUN echo 'print(1)' >/lqz/ss.py
WORKDIR /python
      
      
2.基于dockerfile构建出一个镜像
docker build -t='centos_vim' .
# 这个.代表的是当前路径下的dockerfile文件


# 基于这个镜像运行容器
 docker run -id --name xx centos_lqz_vim
# 进入到容器
docker exec -it xx /bin/bash
# 验证vim,和文件夹,文件是否存在
  

示范:使用dockerfile部署django项目

1.在python项目的根目录下编写 Dockerfile文件

2.编写dockerfile文件
FROM python:3.8
MAINTAINER moon.wu
WORKDIR /project
COPY ./requirements.txt /project/requirements.txt
RUN pip install -r requirements.txt
CMD ["python","manage.py","runserver","0.0.0.0:8080"]
# 一定要是双引号
# 说明:基于python:3.8基础镜像 在镜像内根目录下创建project 文件夹
# 把当前目录下的requirements.txt拷贝到容器内/project/requirements.txt
# 容器运行命令 pip install -r requirements.txt
# 当执行容器 run 命时 执行 "python","manage.py","runserver","0.0.0.0:8080"


3.把带有dockerfile的项目提交到git

4.在服务器上把代码拉下来

5.然后在项目目录中 执行命令 构建镜像
docker build -t='python_django' .

6.运行镜像 做成容器
docker run -id --name=django_books -v /python_project/docker_books-master:/project -p 8080:8080 python_django

7.部署成功 访问服务器 8080端口即可
# 记得服务器开启8080端口访问

'''
以后代码更新后
只需要在服务器上 再去拉取代码即可
'''

docker-compose

安装下载

1.官方下载地址:https://github.com/docker/compose/releases
选择:linux-x86_64版本

2.下载完成后把文件上传到
服务器的/usr/local/bin目录下,重命名为docker-compose

3.添加执行权限
sudo chmod +x /usr/local/bin/docker-compose


4.测试是否安装成功
docker-compose --help

举例:flask+redis项目部署

标签:容器,部署,宿主机,--,mysql,镜像,docker
From: https://www.cnblogs.com/moongodnnn/p/17496018.html

相关文章

  • 若依本地部署简述
    1.下载源码解压2.导入IDEA3.修改配置文件,application.yml的port为8081、application-druid.yml的mysql数据密码是root4.下载安装小皮并启动mysql服务5.下载安装navicat,连接本地数据库,密码root,创建ry数据库并右键运行sql文件,选择源码下的sql文件夹中的两个文件     若依部署1.......
  • Jenkins部署前后端不分离springboot项目
    背景写这篇博客的时候我还是大学生,学校期末课程设计时要求使用Jenkins部署项目,所以使用windows,但是企业中都是使用linux,往往还会搭建一个gitlab。下面我介绍的是在window环境下使用jenkins部署项目,这阵子搞这个期末作业时感觉收获还是挺大的,专门记录下。持续集成(CI)持续集成......
  • 部署rabbitmq
       文章目录一、Erlang1.Erlang下载2.Erlang上传并解压3.验证rabbitmq依赖是否安装4.安装rabbitmq依赖5.Erlang编译、安装6.Erlang配置环境变量7.Erlang验证二、RabbitMQ2.1.RabbitMQ下载2.2.RabbitMQ上传并解压2.3.RabbitMQ......
  • 关于在Redhat-7-linux-系统-Apache-2.4.6-版本上部署多个版本的yum仓库-的配置文件写
    背景:云上有一台内部yum服务器,操作系统及版本信息为:RedHatEnterpriseLinuxServerrelease7.9(Maipo)上面每天会同aws仓库官网同步repo,版本也自然是 RedHatEnterpriseLinuxServerrelease7现在需要临时增加Redhat8.的仓库,(默认Redhat8也是有内部repo仓库的,只是在......
  • 根据ubuntu:20.04制作python环境docker镜像
    因为有个算法是python写的,要在服务器上调用,之前是直接根据jdk镜像制作的环境,现在要装python,jdk双环境,只能自己制作一个镜像出来了,命令如下FROMubuntu:20.04ENVTZ=Asia/ShanghaiENVLANGC.UTF-8RUNmv/etc/apt/sources.list/etc/apt/sources.list.bakCOPYsources.li......
  • Docker部署clickhouse
    Clickhouse特点完备的DBMS:不仅是个数据库,也是个数据库系统列存储和数据压缩:典型的olap数据库特性向量化并行:利用CPU的SIMD(SingleINstructionMUltipleData),单条指令操作多条数据多线程并行:向量化并行利用硬件采取数据并行(缺陷:不适应较多分支的判断),多线程级并行提高并发关系......
  • Docker 命令
    Docker命令attach登录到容器直接操作build 构建镜像commit将容器打包成另一个镜像cp   在容器与本地系统间复制文件create创建一个新的容器,不启动diff  查看容器中新增或修改的目录及文件events查看docke......
  • 项目添加https安全验证部署环境生成自签名证书。
    生成证书自签名证书使用javajdk自带的生成SSL证书的工具keytool生成自己的证书1、打开cmd2、输入命令生成证书keytool-genkeypair-aliastomcat_https-keypass123456-keyalgRSA-keysize1024-validity365-keystored:/tomcat_https.keystore-s......
  • 通过 docker-compose 快速部署 DolphinScheduler 保姆级教程
    目录一、概述二、前期准备1)部署docker2)部署docker-compose三、安装MySQL数据库四、安装注册中心Zookeeper五、ApacheDolphinScheduler编排部署1)下载DolphinScheduler安装包2)配置2)安装MySQL驱动3)启动脚本bootstrap.sh4)构建镜像Dockerfile5)编排docker-compose.yaml6)开......
  • Docker镜像
    是什么是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Ja......