前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >史上最全Docker初学者命令大全

史上最全Docker初学者命令大全

作者头像
止术
发布2020-09-15 15:31:30
9.5K1
发布2020-09-15 15:31:30
举报
文章被收录于专栏:求道求道

一、基础命令

1. 帮助命令

代码语言:javascript
复制
docker --version  # 显示docker的版本信息
docker info    # 显示docker的系统信息
docker 命令 --help    # 显示帮助命令

2. 镜像命令

2.1 搜索镜像
代码语言:javascript
复制
# 搜索镜像
docker search mysql
# 条件过滤搜索结果
docker search --filter=STARS=5000

image-20200906131527917

「列表解释」

  • 「NAME: 镜像名称」
  • 「DESCRIPTION: 镜像介绍」
  • 「STARS: 镜像的stars」
  • 「OFFICIAL: 是否是官方提供的」
  • 「AUTOMATED: 是不是自动化的」
2.2 拉取镜像
代码语言:javascript
复制
# 默认拉取最新的镜像
docker pull mysql
# 指定版本下载
docker pull mysql:5.7
2.3 查看所有镜像
代码语言:javascript
复制
# 查看所有镜像信息
docker images -a
# 查看所有的镜像id
docker images -aq

image-20200906130452865

「列表解释」

  • 「REPOSITORY: 镜像的仓库源」
  • 「TAG: 镜像的标签」
  • 「IMAGE ID: 镜像的id」
  • 「CREATE: 镜像的创建时间」
  • 「SIZE: 镜像的大小」

2.4 删除镜像

代码语言:javascript
复制
#删除指定id的镜像
docker rmi 镜像id
docker rmi 镜像id 镜像id 镜像id 镜像id
#删除指定名称的镜像
docker rmi mysql:5.7
#迭代删除所有的镜像
docker rmi -f $(docker images  -aq)

3. 容器命令

3.1 运行镜像
代码语言:javascript
复制
docker run [可选参数] image
# 运行实例
docker run --name=mycat -d -p 8080:8080 tomcat
# 用完即删
docker run -it --rm tomcat
# 指定环境变量(实例)
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m"  elasticsearch:7.6.2

「参数说明」

  • 「--name="Name":容器名字 tomacat01、tomacat02区分容器」
  • -「e」: 「指定环境变量」
  • 「-d:后台守护进程运行」
  • 「-it:使用交互方式运行,进入容器查看内容」
  • 「-p:指定容器的端口 -p 8080:8080」
    • 「-p :主机端口:容器端口」
    • 「-p :容器端口」
  • 「-P:随机指定端口」
  • 「-v: 指定数据卷」
    • 「-v 容器文件位置:宿主机文件位置」
  • 「--volumes-from: 指定容器的数据卷共享(指定谁,就同步谁的数据!继承!)」
    • 「--volumes-from:继承自那个容器」(父容器删除不影响已存在数据)
  • 「--net: 缺省 bridge」
3.2 进入容器
代码语言:javascript
复制
# 运行一个centos并进入到容器里面
docker run -it centos /bin/bash
# 退出容器
exit
3.3 查看容器
代码语言:javascript
复制
# 查看正在运行中的容器
docker ps
# 查看所有容器
docker ps -a
3.4 退出容器
代码语言:javascript
复制
exit   # 直接容器停止并退出
Ctrl + P + Q  # 容器退出不停止
3.5 删除容器
代码语言:javascript
复制
# 删除指定容器
docker rm bde00bc086cf
# 强制删除运行中的容器
docker rm -f bde00bc086cf
# 迭代删除全部的容器
docker rm -f $(docker ps -aq)
3.6 容器的启动与停止
代码语言:javascript
复制
# 启动容器
docker start 容器id
# 重启容器
docker restart 容器id
# 停止容器
docker stop 容器id
# 强制杀死容器
docker kill 容器id
3.7 进入当前在正在运行中的命令
代码语言:javascript
复制
# 进入到指定容器内部进行修改  开启一个新的终端
docker exec -it 0cd4d9d94de2 /bin/bash
# 进入到正在执行中的终端
docker attach 容器id
3.8 将文件从容器拷贝到宿主机上
代码语言:javascript
复制
docker cp 容器id:容器内文件的路径 宿主机路径
#实例
docker cp 0cd4d9d94de2:/Test.java /Test.java
3.9 其他常用命令

「查看日志命令」

代码语言:javascript
复制
# 查看容器运行产生的日志
docker logs -ft --tail 10 容器id

「参数解析:」

  • 「f: 格式化日志」
  • 「t: 携带日志时间戳」

「查看进程」

代码语言:javascript
复制
# 查看cpu等信息
docker top 0cd4d9d94de2
# 查看容器元信息
docker inspect 容器id

二、可视化面板

1、安装

代码语言:javascript
复制
# 安装可视化面板 portainer (数据卷路径不可改变)
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

image-20200906161505532

三、提交容器为一个镜像

1.提交容器

代码语言:javascript
复制
# 提交一个容器为一个镜像(将容器打包)
docker commit [可选参数] 服务id 自定义镜像名称[:版本标签]
# 示例代码提交
docker commit  -a="huangfu" -m="增加了主页" 19329ae6df90  diytomcat:1.0

「参数解释:」

  • 「-a: 作者」
  • 「-m: 备注」
  • 「-c: 将Dockerfile指令应用于创建的映像」
  • 「-p: 提交期间暂停容器(默认为true)」

四、Docker数据卷使用

1.数据卷的基本使用

代码语言:javascript
复制
# 关联数据卷
docker run [可选参数] -v /主机路径/:/容器路径/ 镜像名称
# 关联数据卷的实例命令
docker run -d -p 8080:8080 --name mytomcat -v /home/tomcat/webapps/:/usr/local/tomcat/webapps tomcat

2.mysql安装实战

代码语言:javascript
复制
docker run -d -p 3366:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

「命令解析:」

  • 「-d: 守护进程运行」
  • 「-v: 添加数据卷(宿主机位置和容器位置映射)」
  • 「-p: 堆对外映射端口」
  • 「-e: 指定环境变量」
  • 「--name: 容器名称」

五、Dockerfile

1. 构建镜像文件

代码语言:javascript
复制
# 创建一个Dockerfile
vim Dockerfile

FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-----end---"
CMD /bin/bash

:x

# 构建docker镜像
# -f dockerfile的路径   
# -t 生成的镜像名称
# . 以当前路径为上下文打包
docker build -f /home/docker-volom/Dockerfile -t huangfu/centos:1.0 .

# 构建基本命令
docker build [OPTIONS] PATH | URL | -

2. Dockerfile概念

  1. 每个保留关键字(指令)都必须是大写字母
  2. 执行顺序从上到下
  3. # 表示注释
  4. 每一个指令都会创建提交一个新的镜像层并提交!

3. Dockerfile语法浅析

image-20200906203902072

  • 「FROM: 基础镜像,一切都从这里开始构建」
  • 「MAINTAINER: 镜像是谁写的,姓名+邮箱」
  • 「RUN: 镜像构建需要运行的命令」
  • 「ADD: 添加一个内容,比如需要添加一个tomcat,则需要传递一个压缩包,便于在容器内构建!」
  • 「WORKDIR: 镜像的工作目录」
  • 「VOLUME: 挂在的目录」
  • 「EXPOSE: 暴露端口」
  • 「CMD: 一个指令,指定这个容器启动的时候要运行的命令」
  • 「ENTRYPOINT: 指定这个容器启动的时候要运行的命令!可以追加命令!」
  • 「ONBUILD: 当构建一个被继承的Dockerfile 这个时候就会运行指令,触发命令!」
  • 「COPY: 类似与ADD,将文件拷贝到镜像中」
  • 「ENV:构建的时候设置环境变量」
代码语言:javascript
复制
# 构建一个具有复杂命令行的centos
vim Dockerfile

# 镜像继承自centos
FROM centos
# 作者信息
MAINTAINER huangfu<huangfusuper@163.com>
# 设置环境变量
ENV MYPATH /usr/local
# 设置工作目录
WORKDIR $MYPATH
# 执行命令安装指令
RUN yum -y install vim
RUN yum -y install net-tools
# 暴露端口
EXPOSE 80
# 执行一些指令
CMD echo "-------end------"
CMD echo $MYPATH
CMD /bin/bash

:x

# 构建镜像
docker build -f /home/docker-volom/Dockerfile -t huangfu/diycentos:1.0 .

六、自定义网络

1. 网络模式详解

  • bridge: 桥接网络(默认)
  • 「host:和宿主机共享」
  • 「none:不配置网络」
  • 「container:容器网络联通」

2. 查看所有的网络模式

代码语言:javascript
复制
# 查看所有的网络模式
docker network ls

3. 创建自定义的网络

代码语言:javascript
复制
# 创建一个网络
docker network create [OPTIONS] NETWORK

# 创建一个mynet
# create 创建
# driver 使用的网络模式
# subnet 子网掩码
# gateway 网关
# mynety 自定义的名称
docker netywork create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynety

4. 使用自定义网络

代码语言:javascript
复制
docker run -d --net mynety --name tom01  tomcat
docker run -d --net mynety --name tom02  tomcat

# 进入到tom02
docker exec -it 7d75a637a90b865fe70259bd4e0b3f5c95133dc65693b05abaf078d31a362529 /bin/bash
# 结果是互通的
ping tom01

image-20200906213345122

5. 容器网络互通

代码语言:javascript
复制
# 把自定义网络和容器打通    容器一个容器两个ip
# 把不在该网络的容器加入当前网络
docker network connect 自定义网络 容器

七、打包SpringBoot jar项目

1. Dockerfile编写

代码语言:javascript
复制
FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

2. 构建镜像

代码语言:javascript
复制
mkdir idea

cd idea

# 将 Dockerfile与jar包发送到idea目录
# 构建镜像
docker build -t huangfutest:1.0 .
# 后面运行不说了
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA程序狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基础命令
    • 1. 帮助命令
      • 2. 镜像命令
        • 2.1 搜索镜像
        • 2.2 拉取镜像
        • 2.3 查看所有镜像
      • 3. 容器命令
        • 3.1 运行镜像
        • 3.2 进入容器
        • 3.3 查看容器
        • 3.4 退出容器
        • 3.5 删除容器
        • 3.6 容器的启动与停止
        • 3.7 进入当前在正在运行中的命令
        • 3.8 将文件从容器拷贝到宿主机上
        • 3.9 其他常用命令
    • 二、可视化面板
      • 1、安装
      • 三、提交容器为一个镜像
        • 1.提交容器
        • 四、Docker数据卷使用
          • 1.数据卷的基本使用
            • 2.mysql安装实战
            • 五、Dockerfile
              • 1. 构建镜像文件
                • 2. Dockerfile概念
                  • 3. Dockerfile语法浅析
                  • 六、自定义网络
                    • 1. 网络模式详解
                      • 2. 查看所有的网络模式
                        • 3. 创建自定义的网络
                          • 4. 使用自定义网络
                            • 5. 容器网络互通
                            • 七、打包SpringBoot jar项目
                              • 1. Dockerfile编写
                                • 2. 构建镜像
                                相关产品与服务
                                容器服务
                                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档