赞
踩
# 查看版本号 docker version # 查看当前docker信息 docker info # 查看所有镜像 docker images | docker image ls // -a 查看运行和非运行的容器 // -q 返回正在运行的容器id // -qa 返回所有容器的id # 拉取一个镜像 docker pull 镜像名称 # 删除一个镜像 docker rmi 镜像名称 # 强制删除一个镜像 docker rmi -f 镜像名称 # 运行一个容器 docker run 镜像名称 // -p 将宿主机端口和容器端口进行映射 例子 docker run -p 8080(系统端口):8080(docker端口)tomcat // -d 代表后台运行 // --name 表示给容器取一个名字 // -v 宿主机目录(绝对路径):容器内目录 实现宿主机目录和容器内目录的文件共享 会清空容器本身目录的数据,一般对容器进行写操作的时候使用 // -v 别名:容器内目录 使用别名可以自动创建映射卷并且不会清空原本容器的数据 创建在目录是 /var/lib/docker/voilumes/别名 一般对容器进行读操作的时候使用,对容器数据进行持久化 // // -v 宿主机目录(绝对路径):容器内目录:ro 表示容器内的目录只能读而不能写,就是容器内的目录发生改变无法影响到宿主机目录改变 // --network 网桥名称 可以指定容器使用的网桥 # 启动一个容器 docker start 容器名字或者容器id # 重启一个容器 docker restart 容器名字或者容器id # 正常停止一个容器 docker stop 容器名字或者容器id # 立即停止一个容器 docker kill 容器名字或者容器id # 删除一个容器 docker rm -f 容器id或者容器名字 # 删除所有容器 docker rm -f $(docker ps -aq) # 查看容器内的进程 docker top 容器id或者容器名字 # 查看容器内部细节 docker inspect 容器id # 查看容器的运行日志 docker logs [option] 容器id 或者容器名字 // -t 加入时间戳 // -f 跟随最新的日志打印 // --tail 数字 显示多少条 # 与容器内部进行交互 docker exec -it 容器id或者容器名字 bash // bash表示容器内部的命令行。 每个容器都是一个小型的linux 系统 # 容器与宿主机之间复制文件 docker cp 文件|目录 容器id:容器路径 docker cp 容器id:容器资源路径 宿主机路径 # 与数据卷volum实现与数组机共享目录 docker run -v 宿主机路径|任意别名:容器内路径 镜像名 // 如果是宿主机路径必须是绝对路径,宿主机目录会覆盖容器内目录内容 // 如果是别名会在docker运行容器时自动在宿主机创建一个目录,并将容器目录文件复制到宿主机当中 # 打包镜像 docker save 镜像名 -o 名称.tar # 载入镜像 docker load -i 名称.tar # 容器打包成新的镜像 docker commit -m "描述信息" -a "作者信息" (容器id或者名称) 打包的镜像名称:标签 # 查看所有网桥 docker network ls # 删除一个网桥 docker network rm 网桥名称 # 创建一个网桥 docker network create 网桥名称 # 查看数据卷 docker volume ls # 查看数据卷细节 docker volume inspect 卷名 # docker file 指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4nDDiX3-1633094934964)(https://i.loli.net/2021/09/09/fxVye2DM3LFg4RH.png)]
# 构建一个dockerfile docker build -t 生成出来的镜像名称:版本号 dockerFile文件 # dockerfile 文件内写法 # 依赖镜像 FROM 依赖的镜像。 # 执行语句 RUN 执行的语句 // 可以在执行镜像的时候对容器内执行对应的语句 (shell脚本 ) # 暴露端口 EXPOSE 端口号 // 可以将我们生成的容器的端口进行暴露,在run容器的时候使用 -p 端口映射来进行映射 # 设置进入容器后的工作目录 WORKDIR 路径 // 如果书写的是相对路径,则会在上一个路径下面相对(workdir可以重复使用) # 将文件拷贝进容器 COPY 文件路径 镜像内路径 // 一般来说文件路径建议填写相对相对路径。因为dockerfile打包时会存在上下文路径。 ADD 路径|url 镜像内路径 // ADD命令可以对下载链接进行下载然后存入镜像内 # 指定允许挂载的路径 VOLUME ["路径"] // 只有明确在之类说明的路径才可以进行挂在 # 新建一个变量(公共变量) ENV 变量名 值 // 用 $变量名 的方式进行使用 # 容器运行后执行指令 ENTRYPOINT 指令 // 一般用来写固定写死的东西 # cmd容器运行后执行 CMD 指令 // 只能使用一个cmd指令,多个cmd指令以最后一个指令为准 // 可以在运行的时候手动将指令进行替换 // 一般用来传参 在cmd命令的上面使用 entrypoint["指令"] cmd["传参"]
version: "3.0" services: # 表示一组服务(镜像) tomcat: # 服务名(要求唯一) container_name: memeda #容器名 image: "tomcat" # (表示基于的镜像) build: # 代替image 直接帮我们打包dockersfile context: ./root/aa # dockerfile的上下文目录 dockerfile: dockerfile # 指定dockerfile 文件名(如果是默认 dockerfile 的话不用填写) ports: # 表示需要映射的端口 - "8080:8800" - "777:777" env_file: - ./mysql.env # 这个文件里面全是 MYSQL_ROOT_PASSWORD=10000 的key,value结构 depends_on: # 代表这个服务启动需要其他服务启动后才能运行 - mysql # 表示这个服务需要等mysql服务启动后才会启动 volumes: # 映射卷 - /root/apps:/user/local/tomcat # 宿主机路径:容器路径 - aa:/usr/local/tomcat # 名称:容器路径 使用这种方式必须在下面手动声明卷名 networks: - hello # 指定网络 需要在下面使用networks指令创建网桥 healthcheck: # 心跳检测 test: ["CMD","curl","-f","http://localhost"] #发送路径 interval: 1m30s # 间隔时间 timeout: 10s # 等待超时时间 retries: 3 # 失败重复次数 sysctls: # 修改容器内核参数 - net.core.somaxconn=1024 - net.ipv4.tcp_syncookies=0 ulimits: # 修改操作系统的最大线程数量 nproc: 65535 nofile: soft: 20000 hard: 40000 volumes: # 声明上面服务使用的自动创建的卷名 aa: # 使用的卷名 会在容器创建的时候自动创建 会在之前加入项目名 external: # 使用自定义的卷名 true # true表示使用指定卷名 必须在启动服务之前先通过docker volume 命令创建 networks: # 定义网桥 hello: # 网桥名称,上面服务使用的网桥 external: # 使用自定义的网桥 true # 使用前需创建
# 运行docker-compose文件 docker-compose up // 如果文件名不是 docker-compose.yml 的话需要-f指定文件 // 指定文件名 -f 文件名 // 指定项目名 -p 项目名 // 所有容器后台运行 -d # 停止所有容器 docker-compose down # 进入指定的容器 docker-compose exec 服务id bash # 查看项目中所有的容器 docker-compose ps // -q 只打印容器id # 重启项目中的服务 docker-compose restart 服务 // -t 指定重启前容器的超时时间 (认识10秒) # 删除所有停止状态的服务 docker-compose rm service // -f 强制删除 // -v 删除容器 挂在的数据卷(谨慎操作) // 推荐先执行 docker-compose stop 来停止容器 # 启动or停止 docker-compose start // 启动一个容器 docker-compose stop // 停止一个容器 (-t 设置超时时间) # 查看各个服务容器内运行的进程 docker-compose top # 恢复处于暂停状态的服务 docker-compose unpause # 查看某个容器的日志 docker-compsoe logs [容器id]
# 下载镜像 docker pull portainer/portainer # 原生启动 docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer # 通过docker-compose.yml启动 portainer: image: portainer/portainer container_name: portainer volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data networks: - hello ports: - "8000:8000" - "9000:9000"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。