Lapple
发布于 2024-10-29 / 11 阅读
0

Docker常用命令

docker基础命令:

systemctl start docker           #启动docker
systemctl stop docker            #关闭docker
systemctl restart docker         #重启docker
systemctl enable docker          #设置开机自启动
systemctl status docker          #查看docker运行状态
systemctl status docker.service     #查询Docker服务状态
docker version                   #查看docker版本号信息
docker info                      #查看docker相关信息,包括版本信息、镜像和容器数量等
docker stats                     #检查docker守护进程是否在运行
docker --help                    #docker命令提示

docker images  #查看镜像


#从服务器拉取镜像拉取镜像
docker pull 镜像名       #拉取最新版本的镜像
docker pull 镜像名:tag   #拉取镜像,指定版本
#推送镜像到服务
docker push 镜像名
docker push 镜像名:tag


docker save -o 保存的目标文件名称 镜像名 #保存镜像为一个压缩包
docker load -i 文件名    #加载压缩包为镜像

#从Docker Hub查找/搜索镜像
docker search [options] TERM      
docker search -f STARS=9000 mysql  #搜索stars收藏数不小于10以上的mysql镜像

#删除镜像。当前镜像没有被任何容器使用 才可以删除
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 tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker容器命令:

容器保护三个状态:

运行:进程正常运行

暂停:进程暂停,CPU不再运行,并不释放内存

停止:进程终止,回收进程占用的内存、CPU等资源

其中:

docker run:创建并运行一个容器,处于运行状态

docker pause name:让一个运行的容器暂停

docker unpause name:让一个容器从暂停状态恢复运行

docker stop name:停止一个或多个正在运行的容器(杀死进程、回收内存,仅剩文件系统)

docker start name [name1…]:启动一个或多个已经被停止的容器

docker restart name:重启一个或多个容器

docker rm:删除一个容器(进程、内存回收、文件系统彻底干掉)

start、stop、restart、kill、pause、umpause 都能操作一个或多个容器。docker start [OPTIONS] CONTAINER [CONTAINER...]

docker ps      #显示正在运行的容器
docker ps -a   #-a,--all  显示全部容器,包括已停止的(默认只显示运行中的容器)

#容器怎么来? 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 start mysql redis rabbitmq nginx   #启动多个容器
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           #强制删除
docker rm -f 容器名 容器名 容器名   #删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f $(docker ps -aq)    #删除全部容器


docker inspect 容器名         #获取容器更多信息 
docker ps -l                 #最后一次运行的容器
docker port 容器名/容器ID     #查看端口的映射情况
docker logs 容器名           #查看容器运行日志         
docker logs -f 容器名        #持续跟踪日志
docker logs -f --tail=20 容器名  #查看末尾多少行
docker diff 容器名        #查看容器的改动



#进入容器执行命令,两种方式 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参数,执行此命令容器都不会被关闭
#设置容器开机自启动
#法一 创建容器、使用docker run命令时,添加参数--restart=always,表示该容器随docker服务启动而自动启动
docker run --name mysqlLatest -p 3307:3306 --restart=always -d mysql

#若容器已启动,希望设置开机自启动
docker update 容器名/容器ID --restart=always

docker run 启动参数说明

-it  输出容器命令行的内容 即容器的自身的程序输出在控制台 有点类似前台运行
-d  和it相反  隐藏后台运行
-p  端口映射 9000::9000 外部(宿主机)端口:镜像里面运行的端口 将宿主机9000端口映射到镜像里面的9000端口
--restart  重启方式:--restart=always 表示该容器跟随docker自启
--name  启动后的容器名称
-v  挂载容器数据卷
--network  连接到某个网络(例如:--network test_net)
--network-alias  容器的网络名称(例如:--network-alias portainer)

使用Docker命令进行加载tar包,如下所示:

docker load -i /home/test.tar.gz

其中,-i参数表示输入文件,后跟需要加载的tar包路径。

使用Docker命令保存镜像:

docker save -o <需要保存的文件名>.tar <需要保存的镜像名称>

运行以下命令来构建 Docker 镜像:

docker build -t <image_name> .

其中 <image_name> 是自定义的镜像名称,. 表示当前目录。该命令会根据 Dockerfile 中的指令生成镜像。

常见问题:

1.在执行Dockerfile时出现Get https://registry-1.docker.io/v2/错误的解决方案

{
 "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}

创建daemon.json文件,并将上面的镜像复制粘贴进去

sudo vim /etc/docker/daemon.json

重启docker

systemctl daemon-reload 
systemctl restart docker