docker常用命令和docker容器管理
1. docker基础操作
- docker镜像(Images): docker镜像是一个只读的模板,用于创建docker容器,包含了运行应用程序所需要的所有内容:代码、运行时、库、环境变量和配置文件。
- docker容器(Containers): docker容器是docker镜像的运行实例。可以看做是一个轻量级的独立系统环境。容器在启动时会创建一层可写层作为最上层,其下层都是只读的
- docker Hub/Registry: docker Registry是docker镜像的存储仓库,类似于代码的版本控制,可以公开或私有的存储和分发镜像。docker Hub是 docker公司维护的一个公开的Registry
- Dockerfile: Dockerfile是一种由一系列命令和参数构成的脚本,这些命令应用于基础镜像并创建新的docker镜像
1.1 docker search查找镜像
[root@master ~]# docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos DEPRECATED; The official build of CentOS. 7601 [OK] kasmweb/centos-7-desktop CentOS 7 desktop for Kasm Workspaces 38 couchbase/centos7-systemd centos7-systemd images with additional debug… 8 [OK] 解释说明: NAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 OFFICIAL: 是否 docker 官方发布 stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。 AUTOMATED: 自动构建。
1.2 docker pull下载镜像
[root@master ~]# docker pull centos
1.3 docker push将本地的镜像推送到远程镜像仓库
[root@master ~]# docker push centos #默认会尝试推送到Docker Hub #而 Docker Hub 的 centos 镜像是受保护的,只有认证的发布者才能更新 如果你希望将镜像推送到你自己的Docker Hub仓库,你需要先登录到 Docker Hub,然后按照<你的Docker Hub用户名>/<镜像名>:<标签> 的格式对镜像进行标记,然后再推送 [root@master ~]# docker login [root@master ~]# docker tag centos <你的 Docker Hub 用户名>/centos:tag [root@master ~]# docker push <你的Docker Hub用户名>/centos:tag #如果你希望将镜像推送到私有 Docker Registry,你需要先对 Docker 镜像进行标记,然后再推送 [root@master ~]# docker tag centos <你的私有 Registry 地址>/centos:tag [root@master ~]# docker push <你的私有 Registry 地址>/centos:tag
如果你想将镜像推送到自建的harbor私有镜像仓库,请点击下面的文档查看:
当然也可以推送到阿里云,华为云,腾讯云等镜像仓库
1.4 docker images 查看本地镜像
[root@master ~]# docker images
1.5 docker save把镜像做成离线包
[root@master ~]# docker save -o centos.tar centos # -o 参数用于指定输出文件的路径和名称
1.6 docker load 从离线包导入docker镜像
[root@master ~]# docker load -i centos.tar # -i 参数用于指定输入文件的路径和名称
1.7 docker rmi 删除镜像包
用于删除一个或多个docker镜像
# -f 参数会强制删除镜像,即使有停止的或者运行中的容器也会强制删除 [root@master ~]# docker rmi -f centos:latest
2. 容器相关操作
2.1 docker run运行容器
[root@master ~]# docker run --name nginx -p 80:80 -d nginx:latest #--name nginx:这个参数为新启动的容器指定一个名称 #-p 80:80:这个参数将容器的80端口映射到宿主机的80端口。冒号前的80是宿主机的端口号,冒号后的80是容器内的端口号 #-d:这个参数让docker在后台运行容器,并返回容器ID。也就是说,容器在启动后不会占用命令行界面 #nginx:latest:这是想要运行的docker镜像的名称和版本。在这里使用最新版本的nginx镜像 #整个命令的意思是:启动一个名为 "nginx" 的容器,使用最新版本的nginx镜像,将容器的80端口映射到宿主机的80端口,并在后台运行这个容器 #一旦这个命令执行,你就应该可以通过浏览器访问宿主机的80端口,看到nginx的欢迎页面 #如果你无法看到nginx欢迎页面,可能是因为防火墙或者其他安全设置限制了对80端口的访问,或者这个端口已经被其他服务使用
2.2 docker ps 查看正在运行的容器
#查看正在运行的容器 [root@master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ded9b31818d6 nginx:latest "/docker-entrypoint.…" 57 seconds ago Up 56 seconds 0.0.0.0:80->80/tcp nginx #查看所有容器,包括运行和退出的容器 [root@master ~]# docker ps -a #流量走向: 访问物理节点ip:port(容器在物理节点映射的端口)--容器ip:port(容器里部署的服务的端口)->就可以访问到容器里部署的应用了
2.3 docker stop 停止容器
[root@master ~]# docker stop nginx
2.4 docker start 启动容器
[root@master ~]# docker start nginx
2.5 docker exec 进入容器
[root@master ~]# docker exec -it nginx /bin/bash # -i 交互式 # -t 分配伪终端 # nginx为容器的名称,也可以指定container_id # /bin/bash说明你的shell类型为bash
2.7 docker rm 删除容器
#只能删除已经停止运行的容器,除非使用-f选项来强制删除 [root@master ~]# docker rm nginx #需要提供一个或多个容器ID或容器名称作为参数 #强制删除正在运行的容器 [root@master ~]# docker rm -f nginx
扩展:
docker rm 和docker rmi的区别:
docker rm 删除容器
docker rmi 删除镜像
2.8 查看帮助
[root@master ~]# docker --help
或者查看官方文档
2.9 docker build 需结合dockerfile使用
详细内容,请点击下方链接查看