docker 常用命令

docker 常用命令

docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表

docker logs 容器id   查看容器日志

docker run -d -p 56379:6379 --name redis redis:latest  下载镜像,创建容器并运行

docker exec -it cdda31f69770 /bin/sh  进入容器内部

docker login --username=xxx   [url]   登录默认url:Docker, 可换成阿里云等

docker tag redis:latest xxx/redis:latest   创建tag,要求xxx必须和username一致,准备推送至仓库

docker push xxx/redis:latest   推送至xxx用户仓库下

或者: docker push 172.16.200.98:5000/library/nginx:latest  推送至harbor仓库 

docker run -it --name jdk17v1 ee7a950c30cc   sh   参数覆盖:sh替换镜像中的cmd命令

docker inspect c52d1bb7654a   查看镜像或容器详情

docker inspect c52d1bb7654a  |grep  Mounts -A 50 查看镜像或容器挂载情况

docker cp host_path containerID:container_path  从主机复制到容器

docker cp containerID:container_path host_path  从容器复制到主机

 

几种挂载方式

  • bind mount 直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上
  • volume 由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上
  • tmpfs mount 适合存储临时文件,存宿主机内存中。不可多容器共享。

文档参考:https://docs.docker.com/storage/

bind mount 方式用绝对路径 -v D:/code:/app

volume 方式,只需要一个名字 -v db-data:/app

示例:

docker run -p 50080:8080 --name test-hello -v D:/code:/app -d test:v1

-p 映射 宿主机对外端口:容器内
--name 容器名字
-d 后台运行
命令参考文档:https://docs.docker.com/engine/reference/run/

 

基于dockerfile创建镜像

编译 docker build -t test:v1 .

-t 设置镜像名字和版本号
命令参考:https://docs.docker.com/engine/reference/commandline/build/

基于容器创建镜像

将容器里面运行的程序及运行环境打包生成新的镜像
docker commit [选项] 容器ID/名称 仓库名称:[标签]
-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行

docker commit -m 新的镜像copy -a me cdda31f69770 docker.ui:v1

查看镜像提交历史

docker history docker.ui:v1

 

 

运行镜像,创建容器并运行
运行 docker run -p 8080:8080 --name test-hello test:v1

-p 映射容器内端口到宿主机
--name 容器名字
-d 后台运行
命令参考文档:https://docs.docker.com/engine/reference/run/

 

FROM node:11
MAINTAINER easydoc.net

# 复制代码
ADD . /app

# 设置容器启动后的默认运行目录
WORKDIR /app

# 运行命令,安装依赖
# RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
# 例如 RUN npm install && cd /app && mkdir logs
RUN npm install --registry=https://registry.npm.taobao.org

# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
# 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
# 例如 CMD cd /app && ./start.sh
CMD node app.js

 

 

结构说明: https://www.cnblogs.com/panwenbin-logs/p/8007348.html

 镜像导入导出

Docker - 实现本地镜像的导出、导入(export、import、save、load) (hangge.com)

 

docker ps –format参数可以实现格式化输出自定义列。各列意义如下:

-format="TEMPLATE"

Pretty-print containers using a Go template.
Valid placeholders:
.ID - Container ID
.Image - Image ID
.Command - Quoted command
.CreatedAt - Time when the container was created.
.RunningFor - Elapsed time since the container was started.
.Ports - Exposed ports.
.Status - Container status.
.Size - Container disk size.
.Names - Container names.
.Labels - All labels assigned to the container.
.Label - Value of a specific label for this container. For example {{.Label "com.docker.swarm.cpu"}}
.Mounts - Names of the volumes mounted in this container.

  

比较方便的查看命令:

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}"
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Size}}\t{{.Status}}" 
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.CreatedAt}}\t{{.RunningFor}}\t{{.Ports}}\t{{.Status}}\t{{.Size}}\t{{.Names}}\t{{.Labels}}\t{{.Mounts}}"
 

在显示容器列表的命令后面加上--no-trunc,大概是不省略的意思,可以显示列的完整信息

docker ps -a --no-trunc

 

镜像网络

(53条消息) docker network详解、教程_wangyue23com的博客-CSDN博客

 

容器vs宿主机 的进程信息

docker top 2c604607849c(容器id)

就会得到类似下面的信息,其中PID是容器内进程在宿主机上的pid,ppid是容器内进程在宿主机上的父进程pid

 

https://blog.csdn.net/yjclsx/article/details/81508455 【linux-top命令详解】

 

其他概念:

  • Docker Swarm是Docker的集群管理工具,它允许用户将多个Docker主机组合成一个虚拟的Docker主机,从而可以在这些主机上运行容器。

  • Docker Service是Docker Swarm中的一个概念,它代表着在Swarm集群中运行的一个容器实例。用户可以使用Docker Service来定义、创建和管理容器的运行方式,包括容器的副本数量、网络配置、存储配置等。

  • Docker Compose是一个用于定义和运行多个容器应用的工具,它使用一个单独的YAML文件来定义应用的服务、网络和存储配置,然后使用docker-compose命令来启动、停止和管理这些容器。与Docker Swarm相比,Docker Compose更适用于单个主机上的容器管理,而不是集群管理。

 

 

 

 

posted @ 2023-04-24 18:34  我的天啊~  阅读(41)  评论(0编辑  收藏  举报