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