一、Docker 设置和镜像源
1.1、设置
cs
#查看 Docker 信息
docker version
docker info
#守护线程启动:
systemctl daemon-reload
重启Docker服务:
systemctl restart docker
#关闭Docker服务
sudo systemctl stop docker
#启动Docker服务
systemctl start docker
#设置容器开机自启动
#法一 创建容器、使用docker run命令时,添加参数--restart=always,表示该容器随docker服务启动而自动启动
docker run --name mysqlLatest -p 3307:3306 --restart=always -d mysql
#若容器已启动,希望设置开机自启动
docker update 容器名/容器ID --restart=always
#清理未使用的容器
docker container prune
#清理未使用的镜像
docker image prune
#清理未使用的网络
docker network prune
#清理构建缓存
docker builder prune
1.2、Docker镜像源配置
Swift
{
"registry-mirrors": [
"https://q5qydbjv.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
二、镜像、容器
2.1、镜像
cs
#查看Docker 镜像
docker images
docker images -a
#查看Docker进程信息
docker ps
#查看日志
docker logs -f a21ad4af2d71
docker logs --tail 1000 47c2dfdcbc2c
#保存镜像(精简版)
docker commit 7ca736d99653 my_image
#加载本地镜像并设置标签
docker load -i my_image.tar
docker tag my_image:latest my_image:v1
#从Docker Hub查找/搜索镜像
docker search [options] TERM
docker search -f STARS=9000 mysql #搜索stars收藏数不小于10以上的mysql镜像
#拉取nginx镜像
docker pull nginx:latest
拉取指定版本镜像
docker pull 镜像名:tag
#删除镜像
docker rmi 镜像名/镜像ID #删除镜像
docker rmi -f 镜像名/镜像ID #强制删除
docker rmi -f 镜像名 镜像名 镜像名 #删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f $(docker images -aq) #删除全部镜像,-a 意思为显示全部, -q 意思为只显示ID
docker image rm 镜像名称/镜像ID #强制删除镜像
#查看Docker镜像内的文件:
docker run -it --rm 镜像名称 /bin/sh
#从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
docker cp 3065f084c80d:a.txt a.txt
#拉取镜像 镜像源网不通:
Error response from daemon: Get "https://registry-1.docker.io/v2/":dial tcp 108.160.165.139:443: i/o timeout
#运行 Nginx 并挂在目录/文件
docker run -d --name nginx-test -p 8080:80 -v
/mnt/nginx-mnt/nginx.conf:/etc/nginx/nginx.conf -v
/mnt/nginx-mnt/logs:/var/log/nginx -v
/mnt/nginx-mnt/html:/usr/share/nginx/html -v
/mnt/nginx-mnt/conf:/etc/nginx/conf.d --privileged=true nginx
2.2、容器
cs
#显示正在运行的容器
docker ps
#-a,--all 显示全部容器,包括已停止的(默认只显示运行中的容器)
docker ps -a
#容器怎么来? docker run 创建并运行一个容器,处于运行状态。
#--name 给要运行的容器起的名字; -p 将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口; -d 表示可后台运行容器 (守护式运行)。具体样例见下
docker run --name containerName -p 80:80 -d nginx
#让一个运行的容器暂停
docker pause 容器名/容器ID
#让一个容器从暂停状态恢复运行
docker unpause name
#停止一个运行的容器(杀死进程、回收内存,仅剩文件系统)
docker stop name
#让一个停止的容器再次运行
docker start name
#重启容器
docker restart name
#docker stop与docker kill的区别:都可以终止运行中的docker容器。类似于linux中的kill和kill -9这两个命令,docker stop与kill相似,docker kill与kill -9类似
#杀掉一个运行中的容器
docker kill 容器名
#更换容器名
docker rename 容器名 新容器名
#删除容器
#删除容器
docker rm 容器名/容器ID
#强制删除
docker rm -f CONTAINER
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名 容器名 容器名
#删除全部容器
docker rm -f $(docker ps -aq)
#查看容器运行日志
docker logs 容器名
#持续跟踪日志
docker logs -f 容器名
#查看末尾多少行
docker logs -f --tail=20 容器名
#进入容器执行命令,两种方式 docker exec 和 docker attach,推荐docker exec
#方式一 docker exec。
docker exec -it 容器名/容器ID bash
#方式二 docker attach,推荐使用docker exec
docker attach 容器名/容器ID
#从容器退到自己服务器中(不能用ctrl+C)
exit #直接退出。未添加-d(持久化运行容器)时,执行此参数 容器会被关闭
ctrl+p+q #优雅退出。无论是否添加-d参数,执行此命令容器都不会被关闭
三、其它操作
3.1、Linux的一些操作
cs
#登录 149 服务器
ssh -p 9133 root@**.**.*.149
#退出149服务器
Ctry + D
1.编辑文本
vim
# 不保存-退出
:q
# 不保存-强制退出
:q!
# 保存-退出
:wq
安装 rar
wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz
tar xf rarlinux-x64-6.0.2.tar.gz
tar -zxvf rarlinux-x64-6.0.2.tar.gz
cd rar
make
make install
解压文件:
unrar x ***.rar
unrar x dist.rar
3.2、重建 Overlay2 目录
cs
#停止 Docker 服务:首先停止 Docker 服务,以防止数据的进一步损坏。
sudo systemctl stop docker
#重建 Overlay2 目录:可以通过重新初始化 Docker 数据目录来重建 Overlay2 目录。
sudo rsync -a /var/lib/docker /var/lib/docker-backup
sudo rm -rf /var/lib/docker
sudo rsync -a /var/lib/docker-backup /var/lib/docker
#启动 Docker 服务:重新启动 Docker 服务,确保 Overlay2 目录已经被重建。
sudo systemctl start docker
sudo systemctl restart docker
3.3、常用Shell脚本
1.
bash
#!/bin/bash
data_path="/data"
data_rar_path="/data/web"
web_html_path="/mnt/nginx-mnt/html"
cd $data_path
# 删除 data/dist.rar
rm -f /data/dist.rar
# 删除 dist 文件
rm -rf /mnt/nginx-mnt/html/dist
# 移包
mv $data_rar_path/dist.rar $data_path
# 解包
unrar x dist.rar
# 移包
mv dist/ $web_html_path
# 删除 dist.rar
rm -f $data_rar_path/dist.rar
2.
cs
#!/bin/bash
dir="/data"
dockerfile_path="/data"
cd $dir
service_name="sdp"
service_prot=8679
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
CID=$(docker ps -a | grep "$service_name" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
echo "exist $SERVER_NAME CONTAINER,CID=$CID"
#删除容器
echo "stop CONTAINER..."
docker stop $CID
echo "REMOVE CONTAINER..."
docker rm $CID
fi
if [ -n "$IID" ]
then
echo "exist $SERVER_NAME image,IID=$IID"
#删除镜像
docker rmi -f $service_name
echo "delete $SERVER_NAME image"
#构建
docker build -f $dockerfile_path/Dockerfile -t $service_name .
echo "build $SERVER_NAME image"
else
echo "no exist $SERVER_NAME image,build docker"
#构建
#cd
docker build -f $dockerfile_path/Dockerfile -t $service_name .
echo "build $SERVER_NAME image"
fi
#启动
echo "配置完成启动中..."
docker run --user=0:0 --hostname dlsdp --add-host dlsdp:127.0.0.1 -d --name $service_name --net=host -p $service_prot:$service_prot -v /data/logs:/etc/sdp/logs $service_name