Docker 的使用-01

一、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

3.3、挂数据卷

3.4、挂配置文件

相关推荐
小夏卷编程7 小时前
Ubuntu 20.04.4 宝塔 docker showdoc v3.2 更新到v3.7.3
运维·docker·容器
JEECG低代码平台8 小时前
JeecgBoot低代码平台 Docker 部署 OnlyOffice 文档服务完整指南
低代码·docker·容器
生活爱好者!8 小时前
NAS帮我找回童年的快乐!部署 小游戏
运维·服务器·docker·容器·娱乐
自在极意功。9 小时前
nginx和docker面试题
运维·nginx·docker
不做超级小白11 小时前
执行docker命令时自动启动Docker Desktop?一个小工具让开发体验更丝滑
windows·docker
222you11 小时前
Ubuntu当中的Docker安装和镜像管理
ubuntu·spring cloud·docker
心易行者12 小时前
别再说“在我的机器上能跑”了!Docker 入门指南,专治各种环境不服
运维·人工智能·docker·容器
zhim0012 小时前
【保姆级教程】使用 Docker 部署 PostgreSQL + pgvector(含踩坑指南)
linux·docker
进击切图仔13 小时前
ROS 跨机通信与 Docker 多机环境搭建
运维·docker·容器
切糕师学AI13 小时前
Kubernetes 中的 Informer 机制
云原生·容器·kubernetes·informer