今日內容概要
- 服務部署
- 遷移與備份
- 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