Docker常用命令总结

目录标题

    • 安装Docker
      • Linux服务器上安装Docker注意点
      • CentOS安装前更换yum源
      • 配置容器镜像加速
    • 常用命令
      • Docker命令个人总结【不定期更新】
        • 帮助命令--help
        • 镜像操作
            • 列出本地镜像
            • 从Docker Hub搜索镜像
            • 拉取镜像
            • 查看镜像版本信息
            • 删除镜像
          • 镜像制作
            • DockerFile构建镜像
        • 容器操作
            • 列出容器
            • 创建并运行一个容器
            • 查看容器运行日志
            • 启动一个或多个已经被停止的容器
            • 批量启动全部容器
            • 停止一个运行中的容器
            • 重启容器
            • 删除容器
            • 在运行的容器中执行命令

Docker是一种运行于Linux和Windows上的软件,用于创建、管理和编排容器。Dorker是Github上开发的Moby开源项目的一部分。Docker公司提供包含支持服务的商业版本的Docker。

安装Docker

Docker可以安装在Windows、Mac和Linux上,除此之外还可以在云上安装,也可以在个人电脑上安装。安装方式也有多种:手工安装、脚本安装和通过向导方式安装等。 官方提供安装文档

Linux服务器上安装Docker注意点

在Linux服务器上安装Docker是常见的安装场景,并且安装过程非常简单。通常难点在于Linux不同发行版本之间的轻微区别。比如Ubuntu和CentOS之间的差异。但是理论上,在这两个版本之间也都是兼容可执行的。唯一要求是这台机器是Linux操作系统,并且能访问该网站:https://get.docker.com/

CentOS安装前更换yum源

当前可选的Docker版本的有两种:社区版和企业版。因为Docker官网在国外,在国内下载比较慢,所以可以更换国内的一些下载源,比如阿里云和网易的,可以参考此篇:更换yum源为阿里云。

配置容器镜像加速

配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://loh7jpwn.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

常用命令

参考文献:菜鸟

Docker命令个人总结【不定期更新】

以下是楼主工作和业余时间总结备用
注意:[]中的参数代表其可有可无。

帮助命令–help

如果忘记命令语法或参数,可以使用help命令来查看帮助文档

docker [command] --help

镜像操作

列出本地镜像
docker images
从Docker Hub搜索镜像
docker search images 
拉取镜像

具体版本信息可以在Docker Hub官网上查,比如如下搜索rabbitmq的版本结果

Supported tags and respective Dockerfile links
3.8.1-rc.1, 3.8-rc
3.8.1-rc.1-management, 3.8-rc-management
3.8.1-rc.1-alpine, 3.8-rc-alpine
3.8.1-rc.1-management-alpine, 3.8-rc-management-alpine
3.8.0, 3.8, 3, latest
3.8.0-management, 3.8-management, 3-management, management
3.8.0-alpine, 3.8-alpine, 3-alpine, alpine
3.8.0-management-alpine, 3.8-management-alpine, 3-management-alpine, management-alpine
3.7.20, 3.7
3.7.20-management, 3.7-management
3.7.20-alpine, 3.7-alpine
3.7.20-management-alpine, 3.7-management-alpine

只需要在镜像名称后边加上版本号,比如拉取rabbitmq
docker pull rabbitmq:3.8.0-management即可

docker pull imageName[:version]
查看镜像版本信息
docker inspect ec2bfee7c206|容器ID
删除镜像

注意:创建了容器的镜像删不掉,需要先删除容器

docker rmi 容器ID
镜像制作

docker官方和个人发布的镜像由于版本等各种原因,漏洞很多,已统计Docker Hub超过30%的官方镜像包含高危漏洞。此外,由于网络等问题也会造成docker pull下载镜像的速度很慢,基于这种情况,我们可以手动制作docker系统镜像。

  1. 使用docker commit命令
  2. 使用docker build和dockerfile文件
DockerFile构建镜像

DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
构建三步骤

  • 编写DockerFile文件【要符合file规范】
  • docker build【获得一个自定义的镜像】
docker build -f dockerfile文件 -t 新镜像名字:TAG .[当前目录]
  • docker run

查看一下centos的dockerfile文件https://hub.docker.com/

FROM scratch【所有镜像的根源,类似于Java中的Object类】
ADD centos-7-x86_64-docker.tar.xz /

LABEL org.label-schema.schema-version="1.0" \
    org.label-schema.name="CentOS Base Image" \
    org.label-schema.vendor="CentOS" \
    org.label-schema.license="GPLv2" \
    org.label-schema.build-date="20191001"

CMD ["/bin/bash"]

DockerFile基础知识

  • 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  • 指令按照从上到下顺序执行
  • #是注释
  • 每条指令都会创建一个新的镜像层,并对镜像进行提交

DockerFile保留字

  • FROM:基础镜像,当前镜像是基于哪个镜像的
  • MAINTAINER:镜像维护者的姓名和邮箱地址
  • RUN:容器构建时需要运行的命令
  • EXPOSE:当前容器对外暴露出的端口
  • WORKDIR:指定在创建容器后,终端默认登录进来后的工作目录
  • ENV:用来在构建过程中设置环境变量
  • ADD:将宿主机目录下的文件拷贝进镜像,且ADD命令会自动处理URL和解压tar压缩包
  • COPY:类似ADD,将文件和目录拷贝到镜像中
  • VOLUME:容器数据卷,用于数据保存和持久化操作
  • CMD:指定一个容器启动时要运行的命令
    dockerfile中可以有多个,但只有一个会生效,即最后一个有效。且CMD会被docker run之后的参数替换
  • ENTRYPOINT:指定一个容器启动时要运行的命令
    ENTRYPOINT和CMD一样,都是在指定容器启动程序及参数【追加,不会覆盖,即docker run之后的参数不会替换它】
  • ONBUILD:当创建一个被继承的dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

Docker执行DockerFile的流程

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器进行修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新容器
  5. 执行dockerfile中的下一条指令直至所有指令都执行完成

容器操作

注意:在用非root用户进行创建容器时,如果用到了目录映射,一定要给记得赋权。

chown -R 1000 [jenkins|目录]
列出容器
docker ps [-a|-q]

常用参数解析

  • -a:列出全部容器,不加此参数仅列出当前运行的全部容器
  • -q:列出容器ID
创建并运行一个容器
docker run -d --name redis [-p 6379:6379] \
[-v $PWD/conf/redis.conf:/redis.conf] \
[-v $PWD/data:/data redis:5.0.3] \
[redis-server --appendonly yes] \
[--requirepass "chenfu"]

常用参数解析

  • -p:端口映射
  • -v:目录映射
  • -i:以交互模式运行容器,通常与 -t 同时使用
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • d:后台运行容器,并返回容器ID
查看容器运行日志
docker logs [61e5de4d49b4|容器ID]
启动一个或多个已经被停止的容器
docker start 容器ID|容器名称 ..
批量启动全部容器
docker start $(docker ps -aq)

批量停止、重启和删除同理。

停止一个运行中的容器
docker stop 容器ID|容器名称
重启容器
docker restart 容器ID|容器名称
删除容器

注意:需要先停止容器

docker rm 容器ID
在运行的容器中执行命令
docker exec -it 容器ID /bin/bash

常用参数解析

  • -i:即使没有附加也保持STDIN 打开,就是交互模式
  • -t:分配一个伪终端

你可能感兴趣的:(服务器)