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、挂配置文件

相关推荐
x2lab34 分钟前
国产化 ARM 环境mysql-mariadb 部署
arm开发·mysql·docker·mariadb
mit6.8242 小时前
[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
linux·运维·docker·容器·架构
qq_167401512 小时前
Docker 组添加用户,设置允许普通用户操作 docker
docker·容器
Z1eaf_complete2 小时前
Docker的基础使用
运维·docker·容器·云计算
李少兄4 小时前
Docker 命令总结:从入门到入土
docker·容器·eureka
想学习java初学者5 小时前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
WEIII6 小时前
MySQL 主从复制原理与搭建实践
后端·mysql·docker
微刻时光6 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验
小安运维日记7 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚7 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes