docker_day03:容器操作 引用部署 迁移与备份 Dockerfile

回顾

# 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 退出
    

容器操作

  • 启动容器: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-20230413151945331

查看容器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`
    
    
# 无状态的服务(不保存重要的数据)
   uwsgi+django
# 有状态的服务:
   mysql+redis

查看容器IP地址

image-20230413153546460

相当于Django的dtl,go语言的模板语法,点开头。

image-20230413153756215

应用部署

mysql 部署

注意在run mysql的是记得要-e指定参数!只有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

宿主机的目录:容器中的目录  --name后面的名称也可以用空格或者是等号 -e是指定参数
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的容器没了,但是数据在宿主机上放着

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

在容器的/var/lib/mysql下看到,在容器中新创的库

image-20230413160837502

在宿主机里中/home/mysql目录下写的my.cnf文件配置映射到容器中的/etc/mysql目录下的my.cnf中

image-20230413161242220

image-20230413161839541

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操作

redis-cli连接redis,用auth 123456登入,远程连接RESP可视化软件

image-20230413170747797

nginx

# 拉取nginx镜像
docker pull nginx

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

进入到nginx

image-20230413172816848

浏览直接访问宿主机的端口映射到Nginx容器,以后只需要修改宿主机的/root/html 路径,看到页面就是修改后的

image-20230413172834259

迁移与备份

# 容器保存为镜像
运行一个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

将容器保存为镜像

image-20230413174344819

image-20230413181934248

删除容器,删除镜像

image-20230413184427261

删除容器,删除镜像

image-20230413184558193

备份的镜像恢复

image-20230413185020856

Dockerfile

镜像从哪里来的?

  • 1 远程仓库拉取的 docker pull
  • 2 用容器做成的镜像 docker commit
  • 3 把备份的恢复 docker load
  • 4 使用Dockerfile来构建

什么是Dockerfile?

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

# Dockerfile的命令
	FROM 基础镜像 	       #基于哪个基础镜像来构建
    MAINTAINER lqz 	     # 声明镜像的创建者
    ENV key value 	     # 设置环境变量 (可以写多条)
    RUN command 	     #是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
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' . 
自定义置镜像名,点是当前路径下的dockerfile

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

image-20230413193453788

验证vim,和文件夹,文件是否存在

image-20230413193859344

image-20230413194312612

posted @   小福福  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
  1. 1 原来你也在这儿 温余福
  2. 2 世间美好和你环环扣扣 温余福
  3. 3 随风起舞 温余福
  4. 4 罪恶都市 温余福
罪恶都市 - 温余福
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 王星

作曲 : 灰鸿啊/皮皮

编曲 : 夏日入侵企画

制作人 : 邢硕

节奏吉他 : 肯尼

主音吉他 : 张伟楠

贝斯 : 皮皮

鼓 : 海鑫

和声 : 邢硕

音效制作 : 邢硕

录音 : 邢硕/夏国兴

混音 : 于昊

特别鸣谢 : 张伟楠

这城市的车流和这地表的颤抖

像一颗石子落入地心之后泛起的温柔

暗涌

河水流过转角她的楼

被梦魇

轻声呓语唤醒身后的幼兽

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都

已忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去陈旧的还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池已失守

最终无法占有

无眠辗转

伴着人间破碎的旧梦

像繁星

退却后只剩下混沌的夜空

炙热

掩盖风声鹤唳的担忧

把所有失落无助反手推入

无尽的白昼

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都已经忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池早已失守

惶恐难以接受

缠绵往复不肯放手

最终无法占有

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁 灭 即 拯 救

谁掠夺春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

明知城池已失守

缠绵往复不肯放手

最终无法占有

点击右上角即可分享
微信分享提示