回到顶部

阅读目录

docker 常用命令

认识 Dockerfile

Dockerfile 是用来构建 Docker 镜像的构建文件,是由一系列命令和参数构成的脚本。具体:https://www.cnblogs.com/panwenbin-logs/p/8007348.html

FROM:基础镜像,当前新镜像是基于哪个镜像的

MAINTAINER:镜像维护者的姓名和邮箱地址

RUN:容器构建时需要运行的命令

EXPOSE:当前容器对外暴露出的端口

WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

ENV:用来在构建镜像过程中设置环境变量

ADD:将宿主机目录下的文件拷贝进镜像且 ADD 命令会自动处理 URL 和解压 tar 压缩包

COPY:类似 ADD,拷贝文件和目录到镜像中。(COPY src dest 或 COPY ["src","dest"])

VOLUME:容器数据卷,用于数据保存和持久化工作

CMD:指定一个容器启动时要运行的命令,Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换

ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数

ONBUILD:当构建一个被继承的 Dockerfile 时运行命令,父镜像在被子继承后父镜像的 onbuild 被触发

例子

# This dockerfile demo for project build to docker images
# VERSION 2
# Author: Shawn_xiao
# Command format: Instruction [arguments / command] …
# 2018/10/10- firstversion: xiao
# 2018/10/11- chanege the tomcat version

# 第一行必须指定基础容器,建议使用aipln类型的小容器
FROM tomcat:8

# 维护者信息(可选)
MAINTAINER xiaojianjun xiaojianjun@tansun.com.cn

# LABEL (可选) 标签信息(自定义信息,多标签放一行)
LABEL app.maintainer=xiaojianjun
LABEL app.version="1.0" app.host='bestxiao.cn' description="这个app产品构建"

# ENV  (可选)环境变量(指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持 
ENV JAVA_HOME /opt/java_jdk/bin
ENV PG_VERSION 9.3.4
ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

# USER (可选) 指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户,前面的RUN 不受影响
# RUN groupadd -r postgres && useradd -r -g postgres postgres 
USER postgres

# WORKDIT 后续的 RUN、CMD、ENTRYPOINT 指令配置容器内的工作目录
WORKDIR /path/to/workdir

# ADD/COPY 将外部文件copy到容器中。区别是ADD可以使用URL,还可以是tar
# COPY只能使用dockerfile所在目录
# ADD <src> <dest>
# COPY <src> <dest>
COPY target/tomcat-release.war /usr/local/tomcat/webapps/

# RUN 镜像的操作指令
# RUN <command> [“executable”, “param1”, “param2”]。
RUN echo “deb http://archive.ubuntu.com/ubuntu/ raring main universe” >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN mkdir /opt/deploy/
RUN echo “\ndaemon off;” >> /etc/nginx/nginx.conf

# EXPOSE 容器启动后需要暴露的端口
EXPOSE 22 80 8443 8080

# VOLUME 本地或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
#VOLUME ["/data"]
VOLUME ["/data/postgres", "/other/path/"]


# ENTRYPOINT  容器启动后执行命令,不会被docker run提供的参数覆盖,只能有一个ENTRYPOINT,
# 多个ENTRYPOINT,以最后一个为准
#ENTRYPOINT [“executable”, “param1”, “param2”]
#ENTRYPOINT command param param2
ENTRYPOINT echo "helloDocker"  

# 容器启动时执行指令,每个 Dockerfile 只能有一条 CMD 命令
#CMD [“executable”, “param1”, “param2”] 使用 exec 执行,推荐方式。
#CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用。
#CMD [“param1”, “param2”] 提供给 ENTRYPOINT 的默认参数。
CMD /usr/sbin/nginx


# ONBUILD 配置当所创建的镜像作为其他新创建镜像的基础镜像时,所执行的操作指令。例如,Dockerfile 使用如下的内容创建了镜像 image-A。-- 很少使用

# ONBUILD ADD . /app/src
# ONBUILD RUN /usr/local/bin/python-build –dir /app/src

docker build

用法:docker build [OPTIONS] PATH | URL | -

常用参数

  • -c:控制 CPU 使用
  • -f:指定 Dockerfile 名称
  • -m:设置构建内存上限
  • -q:不显示构建过程的信息
  • -t:为构建的镜像打上标签

实例

构建一个镜像,命名为 hello,指定上下文目录为当前目录:

docker build -t "hello" .

构建一个镜像,命名为 hello,同时指定上下文目录为 test:

docker build -t "hello" ./test/

构建一个镜像,命名为 hello,标签为 new,同时指定上下文目录为当前目录,文件为 test 目录内的 dockerfile,且不显示构建过程:

docker build -q -f test/dockerfile -t "hello:new" .

帮助

$ docker build --help

docker create

创建一个新的容器但不启动它

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

使用 docker 镜像 nginx:latest 创建一个容器,并将容器命名为 nginx

[root@ser8x11rcig9vyu ~]# docker create --name nginx nginx:latest      
09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961d

docker run

启动容器

docker run -t -i ubuntu:18.04 /bin/bash  # 命令则启动一个 bash 终端,允许用户进行交互。

docker run -d  # 添加 -d 参数来实现守护状态

docker stop

docker stop containerId  # containerId 是容器的ID
docker stop $(docker ps -a -q) # stop停止所有容器

docker restart

将一个运行态的容器终止,然后再重新启动它

docker attach

要 attach 上去的容器必须正在运行

docker attach --sig-proxy=false mynginx

docker exec

进入容器 bash 环境

docker container ls  # 查看容器信息,主要看它的名称 NAMES,方便进入容器内部
docker exec -it nextcloud_app_1 bash  # 进入容易内部,nextcloud_app_1 是容器的名称,上面那个命令查出来的
exit # 进入容器内部后,要退出的话 输入 exit 即可

docker ps 

docker ps  # 查看所有正在运行容器
docker ps -a  # 查看所有容器
docker ps -a -q  # 查看所有容器ID

docker search

从 Docker Hub 查找镜像

[root@ser8x11rcig9vyu ~]#  docker search nas-tools
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jxxghp/nas-tools                   已迁移至:nastool/nas-tools                     415                  
diluka/nas-tools                   nas-tools 2.9.1 backup                          43                   
nastool/nas-tools                  NAStool官方版本镜像,关闭自动更新。             100                  
nastools/nas-tools                 NAStools 官方版本存档                           92                   
sungamma/nas-tools                 为了避免一些可能存在的麻烦,只保留3.0以后的…    103                  
shmilyin/nas-tools                 jxxghp/nas-tools 2.9.1/2.9.0版本备份,部署的…   15                   
07031218/nas-tools                                                                 11                   
tearsful/nas-tools                 nas-tools:2.9.1版本                            0                    
linyuan0213/nas-tools              支持Jackett                                     11                   
anypush/nas-tools                  nas-tools 3.x -- add indexers & remove auth     8                    
jxxghp/nas-tools-ocr               https://github.com/jxxghp/nas-tools-ocr         0                    
miraclemie/nas-tools               3.0以下版本可用; fix:nas-tools代理的错误无法…   3                    
nibbin/nas-tools-telegram-helper   NASTool Telegram Bot助手                        10                   
realwang/nas-tools-unlock                                                          11                   
zonty/nas-tools                    nas-tools:2.9.1备份                             1                    
hsudk/nas-tools                    电影、电视剧、动漫自动PT下载、聚合搜索、智能…   0                    
ddsderek/nas-tools                 【非官方】NAStool 镜像                          6                    
318182456/nas-tools                nas-tools                                       0                    
pgh0312/nas-tools-backup           backup for nas-tools                            3                    
sungamma/nas-tools-base-image                                                      2                    
n120318/nas-tools                                                                  5                    
benzking/nas-tools                 nas-tools 备份,来源于原版及sungamma编译版      2                    
hsuyelin/nas-tools                 full-featured version, no pt authentication …   5                    
dlktc/nas-tools                                                                    2                    
kevin0330/nas-tools                nastools(v2.9.2)备份                            0      

docker images

列出 镜像

docker image ls

列出 镜像,等同 docker images

docker rmi

删除 docker 镜像

[root@ser8x11rcig9vyu ~]# docker rmi yinzhuoqun/nas-tools
Untagged: yinzhuoqun/nas-tools:latest
Untagged: yinzhuoqun/nas-tools@sha256:3fab4c4781a5bb5ae2e0e842fc3a629c133846bb78a0e678ac40446d4b57f770
Deleted: sha256:85453b50fcf9d9cbd39358566e6c2c9edabde54a07b6c793aa5668f71f7e4fdb
Deleted: sha256:cef6a6422a36e552d956f2bdd0e387b5f79959e8ef79873d18de391196c58024
Deleted: sha256:fc31cbaca3b629801c70fef288f72b805851b10d8cf6f01debc86beeb3e08d27
Deleted: sha256:84b6ce2e0bfa3ff17624fc00257736dd460410e98cc2db725f5314ccfde1ef5c

docker rm

删除 docker 容器

docker rm 
docker rm $(docker ps -a -q) # 删除所有容器

docker 手册

https://yeasy.gitbook.io/docker_practice/introduction

docker 命令思维导图

https://share.mubu.com/doc/36d85HYTaXN

^_^
请喝咖啡 ×

文章部分资料可能来源于网络,如有侵权请告知删除。谢谢!

前一篇: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
下一篇: django import_export 按用户类型显示导入导出按钮