- 系列其他內(nèi)容
-
docker快速創(chuàng)建輕量級(jí)的可移植的容器? - docker&flask快速構(gòu)建服務(wù)接口
- docker&uwsgi高性能WSGI服務(wù)器生產(chǎn)部署必備
- docker&gunicorn高性能WSGI服務(wù)器生產(chǎn)部署必備
- docker&nginx&gunicorn實(shí)現(xiàn)負(fù)載均衡
- docker&ngxtop并實(shí)時(shí)解析nginx日志
- docker&supervisor監(jiān)控你的服務(wù)
- docker&pyinstaller兩步法構(gòu)建小體積容器
- locust對(duì)你的服務(wù)做高并發(fā)測(cè)試
- postman熱門的API調(diào)試工具
- docker+flask+gunicorn+nginx+pyinstaller+supervisor搭建一個(gè)輕量級(jí)滿足高并發(fā)性能的服務(wù)
-
docker安裝
- 本教程是基于redhat linux服務(wù)器的
- 介紹
- docker為應(yīng)用程序提供了隔離的運(yùn)行空間:
- 鏡像作為基礎(chǔ),一個(gè)鏡像可以創(chuàng)建多個(gè)容器躯概,方便服務(wù)的快速部署和遷移车摄;
- 每個(gè)容器內(nèi)都包含一個(gè)獨(dú)享的完整用戶環(huán)境空間,并且一個(gè)容器內(nèi)的變動(dòng)不會(huì)影響其他容器的運(yùn)行環(huán)境;
在線安裝
-
阿里云安裝docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
-
啟動(dòng)服務(wù)
# 先切換到root用戶, 依次執(zhí)行以下命令 systemctl enable docker # 開機(jī)自動(dòng)啟動(dòng)docker systemctl start docker # 啟動(dòng)docker systemctl restart docker # 重啟dokcer
離線安裝
- 打開網(wǎng)頁選擇對(duì)應(yīng)的docker版本
https://download.docker.com/linux/static/stable/x86_64/
- 上傳到服務(wù)器(我們選擇的版本是docker-rootless-extras-20.10.5.tgz)
tar -xvf docker-20.10.5.tgz
cp docker/* /usr/bin/
dockerd &
docker -v
刪除docker
- 查詢當(dāng)前系統(tǒng)安裝了哪些docker包
yum list installed | grep docker yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64 docker -v
構(gòu)建鏡像
-
使用開源鏡像
docker pull alpine # 輕量級(jí),但無法執(zhí)行python打包的exe文件 docker pull debian:buster-slim # 體積也比較小∨常可以執(zhí)行python打包的exe文件
-
構(gòu)建你的第一個(gè)鏡像
具體的服務(wù)構(gòu)建可以建下篇內(nèi)容#docker&flask快速構(gòu)建服務(wù)接口#。
- 驗(yàn)證flask服務(wù)的有效性
# flask_test.py為我們構(gòu)造的flask服務(wù) python3 flask_test.py即可啟動(dòng)服務(wù) wget -O apirsult.txt "http://127.0.0.1:2222/test?name=xiaoming&pwd=123
- 依Dockerfile文件build個(gè)人Docker鏡像及服務(wù)的有效性
```
%%writefile Dockerfile
FROM python/3.8
WORKDIR /home/myfirstapi/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY . .
RUN pip install -r requirements.txt -q -i https://pypi.tuna.tsinghua.edu.cn/simple && \
rm -rf /var/cache/apk/*
expose 2222
CMD ["python3", "flask_test.py"]
# docker構(gòu)建鏡像并啟動(dòng)服務(wù)
docker build -t test/api:1.0 .
docker run -d -p 2222:2222 test/api:1.0
wget -O apirsult.txt "http://127.0.0.1:2222/test?name=xiaoming&pwd=123"
```
docker常用命令
- 基本使用毒费,可以應(yīng)用docker構(gòu)建容器了
- 容器的基本應(yīng)用丙唧,涉及到鏡像及容器構(gòu)建,容器查看相關(guān)內(nèi)容觅玻。
# 構(gòu)建名稱為test/api想际,版本為2.0的鏡像
docker build -t test/api:2.0 .
# 通過鏡像test/api創(chuàng)建一個(gè)后臺(tái)運(yùn)行的容器,且映射端口4050
docker run -d -p 4050:4050 test/api:2.0
# 進(jìn)入容器內(nèi)部交互式命令空間的兩種方式
docker run -it test/api:2.0 /bin/bash
docker container exec -it container-id /bin/bash
# 查看并停止容器
docker ps
docker stop ontainer-id
# 查看日志
docker logs -f --tail 100 container-id
or
vim /var/lib/docker/containers/容器ID/容器ID-json.log
# 查看端口
docker port container-id
- 溜溜的溪厘,玩轉(zhuǎn)docker了可以
- 涉及到容器遷移沼琉,修改及數(shù)據(jù)卷相關(guān)內(nèi)容
# 與容器中文件交互
docker cp container-id:/root/test.txt /root/
docker cp /root/ container-id:/root/test.txt
# 查看鏡像中的文件
docker exec container-id ls -lth
docker exec container-id cat file.py
# 查看容器的進(jìn)程情況
docker top container-id
docker stats container-id
# 保存修改的容器為鏡像
docker commit -a "my_name" -m "install xxx" container-id image_name
# 保存鏡像
docker save -o xxx.tar 鏡像名稱
# 加載鏡像名
docker load --input test.tar
# 修改鏡像名稱
docker tag [鏡像id] [新鏡像名稱]:[新鏡像標(biāo)簽]
# 數(shù)據(jù)卷-使服務(wù)器和容器內(nèi)對(duì)應(yīng)的文件同步更新
docker run -d -p 4001:4000 --name web -v /home/linux:/home/docker/ test/api:1.0
- 掀桌了了,快速刪除所有鏡像及容器
- 快速停止桩匪,刪除所有的容器,鏡像
# 查看鏡像概覽
docker system df
# 刪除所有docker中所有未使用的數(shù)據(jù)
docker system prune -a
# 停止容器內(nèi)的所有進(jìn)程
docker pause container-id
# 刪除全部容器
docker kill $(docker ps -a -q)
# 刪除所有容器
docker rm $(docker ps -a -q)
# 刪除所有鏡像
docker rmi $(docker images -q)