赞
踩
目录
格式:docker search 关键字
docker search nginx #搜索nginx镜像
docker search mysql #搜索mysql镜像
- 格式:docker pull 仓库名称[:标签]
- #如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签
docker pull nginx #获取nginx镜像
浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
- [root@localhost ~]#mkdir -p /etc/docker
- [root@localhost ~]#tee /etc/docker/daemon.json <<-'EOF'
- {
- "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] #使用自己的加速器
- }
- EOF
- [root@localhost ~]#systemctl daemon-reload
- [root@localhost ~]#systemctl restart docker
- #查看下载的镜像文件信息
- cat /var/lib/docker/image/overlay2/repositories.json
docker images #查看下载到本地的所有镜像
信息 | 说明 |
---|---|
REPOSITORY | 镜像属于的仓库 |
TAG | 镜像的标签信息,标记同一个仓库中的不同镜像 |
IMAGE ID | 镜像的唯一ID 号,唯一标识一个镜像 |
CREATED | 镜像创建时间 |
VIRTUAL SIZE | 镜像大小 |
- #根据镜像的唯一标识 ID 号,获取镜像详细信息
- 格式:docker inspect 镜像ID号
docker inspect 2ac752d7aeb1
格式:docker tag 镜像名:[原标签] 镜像名:[新标签]
- #为本地的nginx镜像添加新标签web
- docker tag nginx:latest nginx:web
-
- #过滤出nginx镜像
- docker images | grep nginx
- 格式:
- docker rmi 镜像名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签
- 或者
- docker rmi 镜像ID号 #会彻底删除该ID号的镜像
注:
如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像
- #方法一:指定仓库名和标签来删除仓库
- docker rmi nginx:latest
-
- #方法二:指定ID号来删除仓库
- docker rmi 2ac752d7aeb1
批量删除所有的镜像:
- #批量删除所有镜像
- 法一:docker rmi `docker images -aq`
- #-a:列出所有镜像
- #-q:只显示镜像的ID
- 法二:docker images | awk 'NR>=2{print "docker rmi "$3}'| bash
- 法三:docker images | awk 'NR>=2{print $3}'| xargs docker rmi
批量删除指定行后的镜像:
- #批量删除第二行后的镜像
- 法一:docker images | awk 'NR>3{print "docker rmi "$3}'| bash
- 法二:docker images | awk 'NR>3{print $3}'| xargs docker rmi
批量删除指定行后(且包括指定行)的镜像:
- #批量删除第三行后(且包括第三行)的镜像
- 法一:docker images | awk 'NR>=4{print "docker rmi "$3}'| bash
- 法二:docker images | awk 'NR>=4{print $3}'| xargs docker rmi
docker images | grep none | awk '{print $3}' | xargs docker rmi #删除none镜像
将镜像保存成为本地文件
格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:latest #存出镜像命名为nginx存在当前目录下
将本地镜像文件导入到镜像库中
- 格式:
- docker load < 存出的文件
- 或者
- docker load -i 存出的文件
scp nginx 172.16.12.12:/opt/ #将本地的nginx镜像文件远程拷贝到其他docker机器上
- docker load < nginx
- #将本地的nginx镜像文件导入到镜像库中,或者执行docker load -i nginx
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号
https://hub.docker.com #该公共仓库网站需要翻墙到外网
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传
- #登录公共仓库
- docker login
-
- #为本地的nginx镜像添加新的标签时(必须在前面加上自己的用户名)
- docker tag nginx:latest dxzh/nginx:web
-
- #上传镜像
- docker push dxzh/nginx:web
在 docker Hub 官方公共仓库查看刚上传的镜像:
使用docker create 创建的新容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器
- 格式:docker create [选项] 镜像
- 常用选项:
- -i:让容器开启标准输入
- -t:让 Docker 分配一个伪终端 tty
- -it:合起来实现和容器交互的作用,运行一个交互式会话shell
使用docker create 创建新容器:
- #创建的nginx容器,默认处于停止状态,不运行任何程序
- docker create -it nginx:latest /bin/bash
-
- #查看容器状态
- docker ps #不加-a选项,只能查看正在运行状态的容器
- docker ps -a #加-a选项,查看当前所有容器
标识 | 说明 |
---|---|
CONTAINER ID | 容器的ID号 |
IMAGE | 加载的镜像 |
COMMAND | 运行的程序 |
CREATED | 创建时间 |
STATUS | 当前的状态 |
PORTS | 端口映射 |
NAMES | 名称 |
启动容器:
格式:docker start 容器的ID/名称
- #使用docker create 创建新容器,需要 docker start 再启动新容器
- docker start 1a82cb80f1b4 #启动指定ID的容器
-
- #查看容器状态
- docker ps #不加-a选项,只能查看正在运行状态的容器
- docker ps -a #加-a选项,查看当前所有容器
查看容器的详细信息:
- #根据容器的唯一标识 ID 号,获取容器详细信息
- 格式:docker inspect 容器ID号
docker inspect 1a82cb80f1b4
执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令
注:
容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出
docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉
当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
(1)创建并启动容器,只运行 ls / 命令后,容器就停止运行了
- #创建并启动容器
- docker run centos:7 /usr/bin/bash -c ls /
- #一个名为centos:7的Docker容器中运行/usr/bin/bash命令,并且在bash命令中执行ls /命令。具体来说,它会列出/目录下的文件和文件夹
-
- docker ps -a
- #会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了
(2)创建并启动容器,能在后台持续运行该容器
- #在后台持续运行 docker run 创建的容器
- #需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束
- docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
-
- docker ps -a #可以看出容器始终处于 UP,运行状态
此时CPU利用率过高,会导致卡顿等问题
(3) 创建容器时指定容器名称,并持续运行容器
- #创建容器时指定容器名称,并持续运行容器
- docker run -itd --name centos7 centos:7 /bin/bash
状态 | 说明 |
---|---|
Created(已创建) | 当你使用docker create 命令创建一个容器时,容器就处于这个状态。在这个阶段,容器已经被创建,但还没有被启动 |
Running(运行中) | 当你使用docker start 命令启动一个容器时,容器进入运行状态。容器中的进程正在运行并且可以与之交互 |
Paused(已暂停) | 在某些情况下,你可以暂停一个正在运行的容器,这样容器中的所有进程会被暂停。容器处于暂停状态时,它的状态被冻结,但资源仍然被保留 |
Restarting(重启中) | 当你使用docker restart 命令重启一个容器时,容器会进入重启状态。在这个阶段,容器的进程会被停止然后重新启动 |
Exited(已退出) | 当容器中的主要进程结束或者容器被手动停止时,容器会进入已退出状态。在这个阶段,容器不再运行任何进程 |
Dead(已终止) | 当Docker检测到容器中的主要进程异常退出时,容器会被标记为已终止状态。这通常发生在容器内部发生严重错误或者主进程意外终止的情况下 |
Removed(已移除) | 当你使用docker rm 命令删除一个容器时,容器会被标记为已移除状态。在这个阶段,容器的所有数据和元数据都被删除,不再存在于系统中 |
- #开启/停止/重启 容器
- docker start 容器的ID/名称
- docker stop 容器的ID/名称
- docker restart 容器的ID/名称
docker stop 7b16ecf90301 #终止指定ID的容器运行
需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器
- 格式:docker exec -it 容器ID/名称 /bin/bash
-
- #-i 选项表示让容器的输入保持打开
- #-t 选项表示让 Docker 分配一个伪终端
进入指定ID的容器:
- docker stop 7b16ecf90301 #进入容器前,必须保证该容器正在运行
- docker exec -it 7b16ecf90301 /bin/bash #进入指定ID的容器
进入容器后,可对当前容器进行操作:
退出容器后,该容器仍在运行状态中:
- #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止
- docker run -it centos:7 bash
怎么把宿主机的文件传入到容器内部?
格式:docker cp 宿主机的文件 容器id:目标容器路径
- #把宿主机的当前目录的文件data传入到指定ID的容器内部
- docker cp data 67c2057d6748:/mnt/
格式:docker cp 容器id:容器中的指定文件 宿主机的目标目录
- #把指定ID容器内部的文件下载到宿主机的当前目录中
- docker cp 7b16ecf90301:/test /opt/
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为压缩包,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移
导出格式:docker export 容器ID/名称 > 压缩包名
docker export 7b16ecf90301 > centos7.tar #将指定ID的容器导出成压缩包
- 导入格式:cat 压缩包名 | docker import – 镜像名称:标签
-
- #导入后会生成镜像,但不会创建容器
- #将本地的centos7.tar远程拷贝到其他docker机器
- scp centos7.tar 172.16.12.10:/opt/
cat centos7.tar | docker import - centos7:test #导入后会生成镜像,但不会创建容器
格式:docker rm [-f] 容器ID/名称
- docker stop 67c2057d6748
- docker rm 67c2057d6748 #删除已经终止状态的容器
docker rm -f 7b16ecf90301 #强制删除正在运行的容器
批量删除所有的容器:
- #批量停止所有的容器
- 法一:docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
- 法二:docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop
- 法三:docker stop `docker ps -aq`
- #-a:列出所有容器
- #-q:只显示容器的ID
- #批量删除所有容器
- 法一:docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash
- 法二:docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm
- 法三:docker rm `docker ps -aq`
- #-a:列出所有容器
- #-q:只显示容器的ID
- #批量强制删除所有的容器,无论是否处在运行状态
- 法一:docker ps -a | awk 'NR>=2{print "docker rm -f "$1}' | bash
- 法二:docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm -f
- 法三:docker rm -f `docker ps -aq`
- #-a:列出所有容器
- #-q:只显示容器的ID
批量强制删除指定行后的容器:
- #批量强制删除第二行后的容器,无论是否处在运行状态
- 法一:docker ps -a | awk 'NR>3{print "docker rm -f "$1}' | bash
- 法二:docker ps -a | awk 'NR>3{print $1}'| xargs docker rm -f
批量强制删除指定行后(且包括指定行)的容器:
- #批量强制删除第三行后(且包括第三行)的容器,无论是否处在运行状态
- 法一:docker ps -a | awk 'NR>=4{print "docker rm -f "$1}' | bash
- 法二:docker ps -a | awk 'NR>=4{print $1}'| xargs docker rm -f
docker rm $(docker ps -a -q) #批量清理后台停止的容器
docker stats
指令 | 描述 |
---|---|
images | 列出镜像 |
build | 构建镜像来自Dockerfile |
history | 查看历史镜像 |
inspect | 显示一个或多个镜像的详细信息 |
pull | 从镜像仓库拉取镜像 |
push | 推送一个镜像到仓库 |
rmi | 移除一个或多个镜像 |
prune | 一处未使用的的镜像,没有被标记或被任何容器引用的 |
tag | 创建一个引用源镜像标记目标镜像 |
save | 保存一个或多个镜像到本地的镜像文件 |
load | 加载本地的镜像文件到docker镜像库中来自tar归档或标准输入 |
- #查询 docker 版本和信息
- docker version
- docker info
-
- #搜索镜像(可以自己制作镜像上传本地或官网仓库 dockerfile)
- docker search 镜像名
-
- #下载镜像
- docker pull 镜像名
-
- #查看镜像列表
- docker images
-
- #查看镜像详细信息
- docker inspect 镜像ID
-
- #给镜像打标签
- docker tag 镜像名:[原标签] 镜像名:[新标签]
- #docker tag nginx:latest nginx:web
-
- #删除镜像
- docker rmi 镜像名:标签
- docker rmi 镜像ID
- docker rmi `docker images -aq` #删除所有镜像
- docker images | awk 'NR>=2{print "docker rmi -f "$3}' | bash
- docker images | awk 'NR>=2{print $3}'| xargs docker rmi
-
- #镜像导出
- docker save -o 导出的文件名 镜像名
- #docker save -o nginx nginx:latest
-
- #镜像导入
- docker load < 镜像文件
- #docker load < nginx
指令 | 描述 |
---|---|
ps | 列出容器,-a选项:显示所有的容器 |
inspect | 显示一个或多个容器详细信息 |
attach | 附加本地标准输入,输出和错误到一个运行的容器 |
exec | 进入到指定容器中,可执行命令 |
commit | 构建一个新镜像来自一个容器 |
cp | 拷贝文件(夹)到一个容器 |
logs | 获取一个容器日志 |
port | 列出或指定容器端口映射 |
stats | 显示一容器资源使用统计 |
top | 显示一个或多个容器运行的进程 |
update | 更新一个或多个容器配置 |
stop/start | 停止/启动一个或多个容器 |
rm | 删除一个或多个容器 |
export | 导出容器文件系统到本地的tar归档文件 |
import | 导入本地的tar容器归档文件后生成镜像 |
- #查询容器
- docker ps #查看正在运行状态中的容器
- docker ps -a #查看所有容器
-
- #创建容器,默认处于停止状态
- docker create -it nginx:latest /bin/bash
- #常用参数说明
- # -i 让容器的标准输入保持打开
- # -t 分配一个伪终端
- # -d 以后台守护进程的方式运行
-
- #开启/停止/重启 容器
- docker start 容器ID
- docker stop 容器ID
- docker restart 容器ID
-
- #查看指定容器详细信息
- docker inspect 容器名
- docker inspect 容器ID
-
- #创建一个能后台运行,且指定容器名称为 test 的容器
- docker run -itd --name centos7 centos:7 /bin/bash
-
- #进入容器
- docker exec -it 容器ID /bin/bash #exit 退出
-
- #容器 导出/导入
- docker export 容器ID > 文件名
- docker import 容器文件名 指定镜像名称 #导入的是镜像
-
- #批量停止所有的容器
- docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash
- docker ps -a | awk 'NR>=2{print $1}' | xargs docker stop
-
- #批量强制删除所有的容器
- docker rm -f `docker ps -aq`
- docker ps -a | awk 'NR>=2{print "docker rm -f "$1}' | bash
- docker ps -a | awk 'NR>=2{print $1}' | xargs docker rm -f
-
- #批量删除 "exit" 状态(后台停止状态)的容器
- docker rm $(docker ps -a -q)
-
- #查看容器占用系统资源信息
- docker stats
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。