對docker容器的前兩篇文章
Docker–Docker Container(容器) 之 操作實例
Docker–Docker Container(容器)
Mysql容器化安裝
我們可以先在Docker Hub上查看對應的Mysql鏡像,拉取對應的鏡像:
拉取mysql5.7版本的鏡像:
docker pull mysql:5.7
運行容器,并設置密碼和端口映射:
docker run --name mysql -e MYSQL_R00T_PASSW0RD=123456 -p 8090:3306 -d mysql:5.7
使用以下命令查看容器是否在運行:
docker ps
進入容器的端口界面:
docker exec -it mysql bash
然后登錄上Mysql:
bash-4.2# mysql -p
看一下數據庫列表:
還可以通過workbench軟件遠程訪問到mysql容器:
設置好映射端口和主機ip后,輸入密碼就能遠程訪問;
輸入show databases 進行查看:
docker stop mysql
docker rm mysql
釋放空間
注意事項:
端口映射:如果需要從主機訪問MySQL服務,可以在創建容器時使用-p參數映射端口。
數據持久化:為了保證數據不丟失,可以使用-v參數掛載數據目錄到主機。
安全性:不要在生產環境中使用默認的root密碼和端口,以及不要將敏感信息暴露在環境中。
Redis容器化安裝
在Docker Hub上搜索Redis鏡像,可以使用以下命令:
docker search redis
拉取redis7.0版本的鏡像:
docker pult redis:7.0
運行容器redis,并設置端口映射:
docker run --name redis -p 8089:6379 -d redis:7.0
進入redis容器運行界面,并運行redis :
root@VM-8-12-ubuntu:~# docker exec -it redis bash
root@545e7a6a42ec:/data# redis-cli
設置一個key:
也可以通過軟件Redis Desktop Manager 遠程訪問Redis容器:
釋放空間:
docker stop redis
docker rm redis
注意事項:
- 安全性:不要在生產環境中使用默認的密碼和端口,以及不要將敏感信息暴露在環境中。可以通過修改redis.conf配置文件來設置密碼和其他安全選項。
- 資源限制:根據實際需求為Redis容器分配適當的CPU、內存和磁盤資源。可以使用Docker的–cpus、–memory和–storage-opt等參數來限制容器的資源使用。
- 備份與恢復:定期備份Redis數據,并測試恢復過程以確保數據的安全性和可恢復性
C++容器簡單制作
拉取一個ubuntu22.04的鏡像:
docker pull ubuntu:22.04
運行ubuntu容器:
docker run --name mygcc -it ubuntu:22.04 bash
在ubuntu鏡像中下載vim:
apt update
apt install gcc vim -y
然后編輯一個demo.c C文件
#include <stdio.h>
int main()
{
printf("hello docker!\n");
return 0;
}
編譯代碼并生成可執行程序
gcc -o demo demo.c
退出并刪除mygcc容器 :
exit
docker rm mygcc
容器資源更新
運行容器mynginx,映射端口為8080 ,后臺運行 :
docker run -d --name mynginx1 -p 8080:80 nginx:1.23.4
對于命令 docker top 加上 aux 就能查看cpu和內存資源:
也可通過指令docker stats 來實時查看不斷追蹤資源使用情況:
docker stats
通過資源更新將內存上限調為300m :
docker update -m 300m --memory-swap 600m mynginx1
查看資源使用情況可以看到內存上限變為300m :
進入mynginx1運行端口 :
docker exec -it mynginx1 bash
我們在容器中執行一個命令,打滿 cpu:
for i in `seq 1 $(cat /proc/cpuinfo | grep "physical id" |wc -l)`;
do
dd if=/dev/zero of=/dev/null &
done
#cat /proc/cpuinfo |grep “physical id” | wc -l 可以獲得 CPU 的個數,我們將其表示為 N
#seq 1 N 用來生成1到N之間的數字 , 通過for循環 不斷執行命令 1-N;
#for i in seq 1 N; 就是循環執行命令,從1到N
#dd if=/dev/zero of=/dev/null 執行 dd 命令, 輸出到/dev/null, 實際上只占用 CPU, 沒有 IO 操作
#由于連續執行N個(N是 CPU 個數)的 dd 命令, 且使用率為 100%, 這時調度器
會調度每個 dd 命令在不同的 CPU 上處理,最終就實現所有CPU占用率 100%
更新容器mynginx1 的cpu上限為10%:
docker update --cpu-period=100000 --cpu-quota=10000 mynginx1
停止運行的容器,并釋放資源:
docker stop mynginx1
docker rm mynginx1