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

1|0容器操作,应用部署,迁移与备份,Dockerfile

1|1上节回顾

# 1 docker 启动,停止,查看状态命令 systemctl start docker systemctl stop docker systemctl status docker docker info # 查看详情 systemctl enable docker # 开机自启动 # 2 配置镜像源,拉取镜像时,速度快 vim /etc/docker/daemon.json # 阿里云的:每个账户会分配 # 3 镜像操作 -搜索镜像:在网站上搜索 -拉取镜像 docker pull 镜像名字:标签 -查看本地镜像 docker images 或者 docker image ls -删除镜像 docker rmi 镜像id -一次性删除所有镜像 docker rim `docker images -p` # 4 容器操作 -查看正在运行的容器 docker ps -查看所有容器 docker ps -a -创建并运行容器 docker run -id/it --name=名字 -p 8080:8080 -p 80:80 -v /home/lqz:/lqz 镜像名字:标签 -在容器上执行命令 docker exec 容器id 命令 docker exec -it 容器id /bin/bash # exit 退出

1|2容器操作

# 启动容器 docker start 容器id # 停止容器 docker stop 容器id # 文件拷贝 # 容器的文件copy到宿主机上(不是在容器内执行) docker cp 容器名称:容器目录 需要拷贝的文件或目录 docker cp 20fd8:/home/lqz.txt /home/lqz.txt # 宿主机的文件copy到容器中 docker cp 需要拷贝的文件或目录 容器名称:容器目录 docker cp ./lqz.txt 20fd894a3f20:/home/lqz.txt

image

# 查看容器IP地址 docker inspect 容器名称 # 查看容器的详细描述,很多 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID) # 在多个容器之间是可以ping通的 # centos:172.17.0.3 # mysql:172.17.0.2 # 删除容器(删除已停止的容器) docker rm 容器id docker rm `docker ps -a -q` # 无状态的服务 -myslq reids -uwsgi+djan

1|3mysql 部署

# 创建容器 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 #在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''' -p 代表端口映射,格式为 宿主机映射端口:容器运行端口 -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码 # 创建并运行容器 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 3)远程登录mysql 连接宿主机的IP ,指定端口为33306 # 创建库,创建表,插入数据 # 关闭容器,删除容器,myslq的容器没了,但是数据在宿主机上放着 # 再运行起一个容器,做好目录映射,数据都回来了

image

image

1|4redis部署

# 拉取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操作

image

1|5nginx部署

# 拉取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 路径,看到页面就是修改后的

image

image

1|6迁移与备份

# 容器保存为镜像 -运行一个centos容器 docker run -id --name centos_vim centos:7 -在容器中装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 exec -it id号 /bin/bash # 镜像备份和恢复 docker save -o centos_vim_image.tar centos_vim_image -删除容器,删除镜像 -把备份的镜像恢复 docker load -i centos_vim_image.tar

1|7Dockerfile

# 镜像从哪里来? 1.远程仓库拉取下来的 docker pull 2.用容器做成的镜像 docker commit 3.把备份的恢复 docker load 4.使用Dockerfile来构建
什么是Dockerfile? Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像 1、对于开发人员:可以为开发团队提供一个完全一致的开发环境; 2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了; 3、对于运维人员:在部署时,可以实现应用的无缝移植。
1|0常用命令
命令 作用
from(基础镜像) 用来说明基于哪个基础镜像来构建
MAINTAINER NAME 声明镜像的创建者
ENV KEY value 设置环境变量
RUN command 是Dockerfile核心部分,容器内执行命令,用于安装软件、配置环境等操作
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR XXX 设置工作目录,运行起这个容器,来到的路径就是这个路径
# 构建一个带vim的centos镜像 vim Dockerfile FROM centos:7 MAINTAINER lqz ENV name lqz RUN yum install vim -y RUN mkdir /lqz RUN touch /lqz/ss.py RUN echo 'print(1)' >/lqz/ss.py COPY /root/redis.conf /lqz/redis.conf WORKDIR /lqz # 基于dockerfile构建镜像 docker build -t='centos_lqz_vim' . # 基于这个镜像运行容器 docker run -id --name xx centos_lqz_vim # 进入到容器 docker exec -it xx /bin/bash # 验证vim,和文件夹,文件是否存在

image


__EOF__

本文作者泡芙有点甜
本文链接https://www.cnblogs.com/zx0524/p/17316803.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   小王应该在学习!  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示