首页 > 其他分享 >docker容器操作,应用部署,迁移与备份,Dockerfile

docker容器操作,应用部署,迁移与备份,Dockerfile

时间:2023-04-13 23:33:33浏览次数:34  
标签:容器 centos 备份 vim mysql 镜像 docker Dockerfile

目录

容器操作

启动容器

docker start 容器id

docker start 容器名称

停止容器

docker stop 容器id

docker stop 容器名称

文件拷贝

容器的文件cpoy到宿主机上(不是在容器内执行,在宿主机上执行)

docker cp 容器名称:容器目录 cpoy到宿主机上的文件或目录
    
docker cp  20fd8:/home/lqz.txt /home/lqz.txt

宿主机上的文件cpoy到容器中

docker cp 宿主机上的文件或目录 容器名称:容器目录
docker cp ./lqz.txt 20fd894a3f20:/home/lqz.txt

查看容器IP地址

docker inspect 容器名称 查看容器的详细描述,很多

docker inspect --format='{{.NetworkSettings.IPAddress}}'容器名称(容器ID)

在多个容器之间是可以ping通的

# centos:172.17.0.3
# mysql:172.17.0.2

image-20230413165122078

删除容器(删除已经停止的容器)

docker rm 容器id
docker rm `docker ps -a -q`  # 全部删除
docker rm 容器id  -f(不要随便使用,这个是强制删除,不管是否在运行中)

无状态的服务(不在容器中产生重要数据)

uwsgi+django

有状态的服务

mysql redis

应用部署

mysql部署

docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# 做目录映射:data文件,配置文件
# 创建文件夹
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
vim /home/mysql/my.cnf
[client]
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

docker run  -di -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 mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7      
        
     
    
# 创建库,创建表,插入数据

# 关闭容器,删除容器,myslq的容器没了,但是数据在宿主机上放着

# 再运行起一个容器,做好目录映射,数据都回来了

redis

# 拉取redis镜像
docker pull redis
mkdir /root/data
vim /root/redis.conf

bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456



# 运行
docker run -id  -p 6379:6379 --name redis -v /root/redis.conf:/etc/redis/redis.conf -v /root/data:/data redis  redis-server /etc/redis/redis.conf
            
     
    
# 远程链接redis操作

nginx

# 拉取nginx镜像
docker pull nginx

# run起容器
# docker run -id --name nginx -p 80:80 nginx
    
# /usr/share/nginx/html
docker run -id --name nginx -p 80:80 -v /root/html:/usr/share/nginx/html nginx
# 以后只需要修改宿主机的/root/html 路径,看到页面就是修改后的

迁移与备份

容器保持为镜像

运行一个centos容器

ocker run -id --name centos_vim centos:7.9.2009

在容器中装vim

docker exec -it a6e240 /bin/bash
yum install vim -y

把容器做成镜像(centos+vim)

docker commit centos_vim centos_vim_image

把centos_vim 容器删除

docker rm centos_vim

基于新构建的镜像,运行成容器

docker run -id --name centos_vim centos_vim_image:latest

进入到容器中,查看,软件都在

镜像备份和恢复

docker save -o centos_vim_image.tar centos_vim_image

删除容器,删除镜像

docker rmi 镜像名称:标签

把备份的镜像恢复

docker load -i centos_vim_image.tar

Dokcerfile

镜像从哪里来

远程仓库拉取的 docker pull 镜像名:镜像标签

用容器做成的镜像 docker commit 被制作的容器名 制作后的镜像名

保存镜像 docker save -o 保存的镜像名字.tar 要保存哪个镜像的名字

把备份的恢复 docker load -i 要加载的本地镜像文件名字.tar

使用Dockerfile来构建

什么是Dockerfile

Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像

Dockerfile的命令

FROM 基础镜像 基于哪个基础镜像来构建

MAINTAINER lqz 生命镜像的创建者

ENV key value 设置环境变量(可以多写条)

ENV key1 value1

RUN command(ls) 是Dockerfile的核心部分(可以写多条)

ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压

COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压

WORKDIR lqz 设置工作目录,运行起这个容器,来到的路径就是这个路径

构建一个带vim的centos镜像

vim Dockerfile 必须叫这个名字

FROM centos:7.9.2009
MAINTAINER LQZ
RUN yum install -y
RUN mkdir /lqz
ADD /root/bb.txt /lqz/bb.txt
WORKDIR /lqz

基于Dockerfile构建镜像

docker build -t=‘centos_lqz_vim’ .

基于这个镜像运行容器

docker run -id --name xx centos_lqz_vim

进入到容器

docker exec -it xx /bin/bash

基于Python3.8 构建一个能够运行你这个程序的镜像

FROM python:3.8
MAINTAINER fhq
RUN pip install django==3.2.2
RUN mkdir /home/api
ADD api.tar /home/api/
WORKDIR /home/api/
CMD python manage.py runserver 0.0.0.0:8000

标签:容器,centos,备份,vim,mysql,镜像,docker,Dockerfile
From: https://www.cnblogs.com/clever-cat/p/17316971.html

相关文章

  • Docker使用
     1.docker基础知识环境代码一起发给别人=>需要一个容器  规避了环境不一致导致的异常【软件跨环境迁移的问题】    以下是在Ubuntu上安装Docker的步骤:更新apt包管理器sudoapt-getupdate安装必要的软件包以允许apt通过HTTPS使用存储库sudoapt-g......
  • 容器操作,应用部署,迁移与备份,Dockerfile
    容器操作,应用部署,迁移与备份,Dockerfile上节回顾#1docker启动,停止,查看状态命令 systemctlstartdockersystemctlstopdockersystemctlstatusdockerdockerinfo#查看详情systemctlenabledocker#开机自启动#2配置镜像源,拉取镜......
  • linux环境下安装Docker
    1、概念:docker是一个开源的应用容器引擎,docker可以让开发者打包他们的应用以及依赖环境包到一个轻量级、可移值的容器中。然后发布到任何流行的linux机器上。安装过程:1、yum包更新到最新yumupdate2、安装需要的软件包yuminstall-yyum-utilsdevice-mapper-persistent-da......
  • iptables备份和恢复配置
    [root@hostname~]#iptables-save>/usr/myipt.rule #备份规则至/usr/myipt.rule[root@hostname~]#iptables-F #删除规则[root@hostname~]#iptables-nvL[root@hostname~]#iptables-restore</usr/myipt.rule#恢复规则[root@hostname~]#iptables-nvL......
  • docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile
    容器操作#启动容器dockerstart容器id#停止容器dockerstop容器id#文件拷贝先创建文件mkdir:文件夹vivimtouch:文件#容器的文件copy到宿主机上(不是在容器内部操作)dockercp容器名称:容器目录需要拷贝的文件或目录dockercp......
  • docker-day3——docker应用部署、docker迁移与备份、Dockerfile
    目录一、应用部署1.1mysql部署1.2nginx1.3redis1.4部署项目的一些讲解二、迁移与备份三、Dockerfile四、作业1、什么是迭代器,生成器,装饰器2、django的信号用过吗?如何用,干过什么3、Dockerfile用过吗?常用命令有哪些一、应用部署补充知识点:容器之间互相是可以ping通的但是......
  • apko不依赖dockerfile基于apk 包构建oci 镜像的工具
    可以方便的基于apk包进行oci镜像的构建以及发布包含的特性可重复执行同时确认二进制文件一致快速小sbom支持服务支持,基于s4安装可以通过goinstall以及docker模式运行goinstallchainguard.dev/apko@latest使用配置contents:......
  • openGauss 之物理备份与恢复实践操作(gs_probackup)
    openGauss之物理备份与恢复实践操作(gs_probackup)本文出处:https://www.modb.pro/db/426207一、gs_probackup简单介绍gs_probackup是一个用于管理openGauss数据库备份和恢复的工具,支持全量备份、增量备份、定期备份和远程备份,还可以设置备份的留存策略。二、gs_probackup使用......
  • 【Docker】容器操作 mysql部署 redis部署 nginx部署 迁移与备份 Dockerfile
    目录上节回顾今日内容1容器操作2应用部署2.1mysql部署2.2redis2.3nginx3迁移与备份4Dockerfile练习上节回顾#1docker启动,停止,查看状态命令 systemctlstartdockersystemctlstopdockersystemctlstatusdockerdockerinfo#查看详情systemc......
  • docker3
    今日内容1容器操作#启动容器 dockerstart容器id#停止容器 dockerstop容器id#文件拷贝 #容器的文件copy到宿主机上(不是在容器内执行)dockercp容器名称:容器目录需要拷贝的文件或目录dockercp20fd8:/home/lqz.txt/home/lqz.txt#宿主机的文件......