-d Docker基本命令集合
Docker的基本命令集合包括以下几类,我会为每个命令提供详细说明:
1. 镜像相关命令:
# docker pull:从镜像仓库中拉取或者更新指定镜像
docker pull ubuntu:latest
# docker images:列出本地所有镜像
docker images
# docker rmi:删除本地一个或多个镜像
docker rmi image_id
# docker build:从Dockerfile构建镜像
docker build -t myimage:tag .
# docker tag:标记本地镜像,将其归入某一仓库
docker tag image username/repository:tag
2. 容器相关命令:
# docker run:创建一个新的容器并运行一个命令
docker run -it ubuntu /bin/bash
# docker start:启动一个或多个已经被停止的容器
docker start container_id
# docker stop:停止一个运行中的容器
docker stop container_id
# docker restart:重启容器
docker restart container_id
# docker rm:删除一个或多个容器
docker rm container_id
# docker ps:列出容器
docker ps(运行中的容器),docker ps -a(所有容器)
3. 容器操作命令:
# docker exec:在运行的容器中执行命令
docker exec -it container_id /bin/bash
# docker attach:连接到正在运行中的容器
docker attach container_id
# docker logs:获取容器的日志
docker logs container_id
# docker cp:在本地和容器之间复制文件/文件夹
docker cp /host/path container_id:/container/path
4. 系统和信息命令:
# docker info:显示 Docker 系统信息,包括镜像和容器数
docker info
# docker version:显示 Docker 版本信息
docker version
# docker inspect:获取容器/镜像的元数据
docker inspect container_id
5. 网络相关命令:
# docker network create:创建一个网络
docker network create my-net
# docker network ls:列出网络
docker network ls
# docker network connect:将容器连接到网络
docker network connect my-net container_id
6. 数据卷相关命令:
# docker volume create:创建一个数据卷
docker volume create my-vol
# docker volume ls:列出数据卷
docker volume ls
# docker volume rm:删除数据卷
docker volume rm my-vol
7. Docker Compose 命令:
# docker-compose up:创建并启动所有服务
docker-compose up
# docker-compose down:停止并删除所有服务
docker-compose down
# docker-compose ps:列出 Compose 定义的所有服务状态
docker-compose ps
这些是 Docker 的基本命令集合,涵盖了日常使用 Docker 时最常用到的操作。每个命令都有多个可选参数,可以通过 `docker command --help` 查看详细用法。
从无到有创建发布一个tomcat
# 拉取镜像
docker pull tomcat
# 运行tomcat镜像为一个新容器
#-it: 以交互模式运行容器,通常用于需要在控制台与容器进行交互的情况。
#-p 8000:8080: 将主机的8000端口映射到容器的8080端口,允许通过主机的8000端口访问容器内的Tomcat服务。
docker run -it -p 8000:8080 tomcat
# 列出当前正在运行的Docker容器的信息,包括容器ID、镜像、命令、创建时间、状态和端口映射等
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b2d7564f958a tomcat "catalina.sh run" About a minute ago Up About a minute 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp gracious_grothendieck
# 以交互模式在名为b2d7564f958a的容器内执行/bin/bash命令,进入容器的Shell终端
docker exec -it b2d7564f958a /bin/bash
# 在当前工作目录下,将webapps.dist目录下的所有文件和子目录复制到webapps目录中。
cp -r webapps.dist/* webapps
# 基于容器b2d7564f958a创建一个新的镜像:
# -a="qiaowei": 指定作者为qiaowei。
# -m="add webapps app": 添加提交的描述信息为"add webapps app"。
# b2d7564f958a: 要提交的容器ID。
# tomcat01:1.0: 新镜像的名称和标签,此处为tomcat01的版本1.0
docker commit -a="qiaowei" -m="add webapps app" b2d7564f958a tomcat01:1.0
# 查看所有镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat01 1.0 604a6e054aac 20 seconds ago 684MB
创建并持久化数据库
//获取镜像
docker pull mysq1:5.7
运行容器,需要做数据挂载!#安装启动mysq1,需要配置密码的,这是要注意点!
官方测试:
dockerrun--namesome-mysql-eMYSQL_R00T_PASSWORD=my-secret-pw -d mysql:tag
启动我们的
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v
/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysq1 mysql:5.7
启动成功之后,我们在本地使用sqlyog来接测试一下
sqlyog-连接到服务器的3310----3310和容器内的3306映射,这个时候我们就可以连接上了
Dockerfile文件格式命令
FROM #基础镜镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME # 挂载的目录
EXPOSE #暴露端口配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承DockerFile这个时候就会运行 ONBUILD的指令。触发指令。
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
将打包的jar包 通过dockerfile创建镜像,并运行创建的镜像
# 当前目录下需要有必备的文件
ls
Dockerfile my-app.jar
# Dockerfile 文件配置,my-app.jar为打包的jar包
cat Dockerfile
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8889"]
EXPOSE 8889
CMD ["java", "-jar", "/app.jar"]
# 再执行构建镜像
docker build -t booksystem-backend .
-t :booksystem-backend: -t 参数用于给构建的镜像指定一个标签(tag),这里将镜像命名为 booksystem-backend。
. :表示 Docker 在当前目录下查找 Dockerfile 文件来进行构建。这个点号 (.) 是当前目录的简写符号。
# 构建完查询镜像
docker images
# 运行创建的镜像
docker run -d -P --name booksystem-backend-web booksystem-backend
# -d: 表示在后台(detached mode)运行容器,即使终端关闭也能继续运行。
# -P: 将容器内部使用的网络端口映射到随机端口。Docker 会随机选择一个未使用的端口,将容器内部服务的端口映射到宿主机的随机端口上。
docker run -d -p 8080:80 --name booksystem-backend-web booksystem-backend
#-p 8080:80 将主机(宿主机)的 8080 端口映射到容器内部的 80 端口。这意味着,当你访问主机的 8080 端口时,请求将被转发到容器的 80 端口,这通常用于将容器内部服务暴露给外部网络。