docker服務部署、遷移與備份、dockerfile、私有倉庫

2022-05-31 06:02:42

今日內容概要

  • 服務部署
  • 遷移與備份
  • dockerfile
  • 私有倉庫

內容詳細

1、服務部署

# 裝 mysql  redis ---》原始碼編譯安裝--》啟
動
# 有了docker後,容器作業系統+軟體---》拉取一個redis映象---》執行起來---》容器裡就有 redis服務了---》做好埠對映---》就相當於在宿主機上裝了個虛擬機器器,虛擬機器器裡裝了個redis


# redis的部署
	-如果本地沒有這個映象---》執行映象---》會先拉取--》然後在執行
	docker pull redis
    
	-容器中的redis執行時候,有組態檔,用我寫的組態檔,-v 對映 (宿主機寫個組態檔,讓容器中的redis用)
    
	-redis執行產生資料--》放在容器中--》容器刪除資料就沒了---》資料對映到宿主機-->以後刪了容器,資料還在---》只要再啟動起一個容器---》做好目錄對映,資料自然都在了
  

  
### 這個,資料目錄沒有對映出來,組態檔使用容器預設的---》但是這種不用
docker run -di --name=myredis -p 6379:6379 redis
  


##### 操作流程
# 第一步:啟動容器,名字叫 redis_6379,組態檔自己寫,資料目錄對映出來,兩個目錄對映:設定,資料目錄,執行容器的時候,執行 redis-server /etc/redis/redis.conf 組態檔
docker run -id -p 6379:6379 --name redis_6379 -v /root/s20/redis.conf:/etc/redis/redis.conf -v /root/s20/data:/data redis redis-server /etc/redis/redis.conf
 
docker logs 容器名字  # 檢視容器紀錄檔


# 第二步:遠端連線redis
	-存入資料
	bgsave
  
    
# 第三步:刪除容器
	docker rm id號

# 第四:再啟動reddis
docker run -id -p 6379:6379 --name redis_6379 -v /root/s20/redis.conf:/etc/redis/redis.conf -v /root/s20/data:/data redis redis-server /etc/redis/redis.conf
      
      
      
######### mysql 部署
docker pull mysql:5.7
    
# -e 是環境變數---》容器執行時傳入,看檔案才知道有哪些引數
# 使用了預設設定,把資料目錄對映出來
# root使用者預設不允許遠端登陸
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
        
# 進去授權 允許遠端登陸
grant all privileges on *.* to 'root'@'%' identified by 'Lqz12345?';

# 組態檔用宿主機的,資料目錄對映出來到宿主機
# mysql的組態檔 自行建立組態檔 my.cnf
[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 /root/s20/mysql/data/:/var/lib/mysql -v /root/s20/mysql/conf.d:/etc/mysql/conf.d -v /root/s20/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
          
# nginx部署
docker pull nginx
docker run -di --name=mynginx -p 80:80 nginx

2、遷移與備份

# python容器--》裝了django   容器反打包成映象

# 把容器做成映象
docker commit 容器名字 映象名字
docker commit django django2.2.2

# 映象打包成壓縮包
docker save -o django2.2.2.tar django2.2.2

# cp給別人---》釋放成映象---》執行起容器
docker load -i django2.2.2.tar

3、dockerfile 應用

# 把容器打包成映象---》壓成壓縮檔案--》複製給別人---》壓縮包很大--》速度慢

# 特別輕量級的方式,可以構建出映象來,把一個特別小的檔案複製給別人,別人一執行就有了映象


# 它就是一個固定的 Dockerfile  檔案,裡面寫了一些命令
# 通過 docker build -t='django2.0' . 把這個檔案構建成映象


### dockerfile的命令
FROM image_name:tag 	# 定義了使用哪個基礎映象啟動構建流程
MAINTAINER user_name 	# 宣告映象的建立者
ENV key value 	# 設定環境變數 (可以寫多條)
RUN command 	# 是Dockerfile的核心部分(可以寫多條)
ADD source_dir/file dest_dir/file 	# 將宿主機的檔案複製到容器內,如果是一個壓縮檔案,將會在複製後自動解壓
source_dir/file dest_dir/file 	# 和ADD相似,但是如果有壓縮檔案並不能解壓
WORKDIR path_dir 	# 設定工作目錄


# Dockerfile演示
FROM python:3.8.13
MAINTAINER lqz
ENV pwd 123
RUN pip install django==2.2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN mkdir lqz
ADD ./redis.conf /home/redis.conf
WORKDIR /home   # 工作路徑是哪


docker build -t='django2.2.2' .  # 建立映象

4、私有倉庫

# docker pull 都是從hub.docker.com 拉的

# 我們公司自己做的映象,在上面沒有---(我可以傳上去,不安全)


# 自己搭建私有倉庫
https://www.cnblogs.com/liuqingzheng/p/16315254.html