Docker基本命令操作
docker基本命令 查看镜像 docker images
1 2 3 4 5 6 7 8 9 10 [root@localhost ~] REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7.38 459651132a11 3 months ago 429MB REPOSITORY:镜像属于的仓库; TAG:镜像的标签信息,标记同一个仓库中的不同镜像; IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像,经过md5方式加密过; CREATED:镜像创建时间; VIRTUAL SIZE:镜像大小
查看所有状态容器 docker ps -a
1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 118a45fa8a9d mysql:5.7.38 "docker-entrypoint.s…" 18 minutes ago Up 13 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql CONTAINER ID:容器的ID号 IMAGE:加载的镜像 COMMAND :运行的程序 CREATED :创建时间 STATUS:当前的状态 PORTS:端口映射 NAMES:名称
docker run 指令 docker run hello-world
检测本地有没有该镜像(没有的话直接到docker hub上下载)
create(将镜像创建为容器)+ start 将创建好的容器运行起来
查看版本 两种方式可查看
1 2 3 4 5 6 7 8 9 10 11 12 13 root@localhost ~] Docker version 20.10.18, build b40c2f6 [root@localhost ~] Client: Docker Engine - Community Version: 20.10.18 API version: 1.41 Go version: go1.18.6 Git commit: b40c2f6 Built: Thu Sep 8 23:14:08 2022 OS/Arch: linux/amd64 Context: default Experimental: true ·········
查看docker信息 docker info
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@localhost ~] Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.9.1-docker) scan: Docker Scan (Docker Inc., v0.17.0) Server: Containers: 1 Running: 1 Paused: 0 ·········
帮助文档
docker镜像操作 搜索镜像 默认是在公共仓库找,如果有私有仓库,会在私有仓库找
1 2 3 4 docker search nginx docker search centos:7
下载镜像 1 2 3 4 docker pull centos:7 docker pull nginx
查看镜像列表 1 2 3 [root@localhost ~] REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7.38 459651132a11 3 months ago 429MB
获取镜像信息 1 2 3 docker inspect 118a45fa8a9d
添加镜像标签 会多一个镜像,id相同
1 2 3 docker tag nginx:latest nginx:lnmp
删除镜像 1 2 3 docker rmi 仓库名称:标签 docker rmi 镜像ID号
批量删除镜像 1 2 3 4 5 6 docker rmi `docker images -q` docker rmi `docker images|grep "nginx" `
导出\导入镜像 docker save/load
1 2 3 4 5 6 7 8 9 10 11 12 docker save -o nginx_v1 nginx:latest docker save -o centos_v1 centos:7 docker load < nginx_v1 dokcer load < centos_v1 批量把镜像打包成haha.tar压缩包(但修改名称的镜像包打包不了) docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}' ) -o haha.tar
导出镜像 导入镜像
容器操作 查询所有容器运行状态 1 2 3 [root@localhost ~] CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 118a45fa8a9d mysql:5.7.38 "docker-entrypoint.s…" 37 minutes ago Up 17 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
创建容器 docker create 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
1 2 3 4 5 6 7 -i:让容器的输入保持打开 -t:让 Docker 分配一个伪终端 docker create -it nginx:latest /bin/bash
启动容器 1 2 3 docker start 3dcd81095c9f docker ps -a
启动容器(一次性执行) 1 2 3 4 5 6 7 8 9 10 docker run --name web1 -itd nginx:latest /bin/bash docker run --name test1 centos:7 /usr/local/bash -c ls / docker run --name web2 -d centos:7 /bin/bash -c "while true;do echo hello;done"
查看容器ip地址 1 2 3 docker ps -a docker inspect 45f2ce7ee445
进入容器 进入容器的容器状态必须是up状态 和shell 是两种运行模式
docker run -it会创建前台进程,但是会在输入exit后终止进程。
docker attach会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程。
docker exec -it 会连接到容器,可以像sSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 -i 选项表示让容器的输入保持打开; -t 选项表示让 Docker 分配一个伪终端。 -d:守护进程。 docker run -itd centos:7 /bin/bash docker ps -a ①使用run进入,可以使用ctrl+d退出,直接退出终端 docker run -it centos:7 /bin/bash ②想永久性进入,退出后还是运行状态,用docker exec docker ps -a docker exec -it nginx:latest /bin/bash ③docker attach,会通过连接stdin,连接到容器内输入输出流,公在输入exit 后终止容器进程(临时性的,不推荐)
使用run进入,是一次性进入 永久性进入,用docker exec (退出后,容器仍然会运行)
删除容器 不能删除运行状态的容器,只能-f强制删除,或者先停止再删除 已经退出的容器,可以直接删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1. docker rm web1 2. docker rm web2 3. docker rm -f web3 4. docker rm -f `docker ps -q` 5. docker rm -f `docker ps -aq` 6. docker ps -a | awk ' {print "docker rm "$1}' | bash 7. for i in `dockef ps -a | grep -i exit | awk '{print $1}' '; do docker rm -f $i;done
查看docker消耗的资源状态 docker stats