docker常用命令

以下内容是我根据网络文章和一些视频课程整理的,非完全原创

查看镜像和拉取

列出机器上的镜像:docker images

从docker registry server 中下拉image或repository(pull)
Usage: docker pull [OPTIONS] NAME[:TAG]

docker pull centos

上面的命令需要注意,在docker v1.2版本以前,会下载官方镜像的centos仓库里的所有镜像,而从v.13开始官方文档里的说明变了:will pull the centos:latest image, its intermediate layers and any aliases of the same id,也就是只会下载tag为latest的镜像(以及同一images id的其他tag)。

也可以明确指定具体的镜像:

docker pull centos:centos6

当然也可以从某个人的公共仓库(包括自己是私人仓库)拉取,形如docker pull username/repository<:tag_name> :
docker pull seanlook/centos:centos6

如果你没有网络,或者从其他私服获取镜像,形如docker pull registry.domain.com:5000/repos:
docker pull dl.dockerpool.com:5000/mongo:latest

常见命令

重启:docker restart 容器id

删除容器:docker rm [-f] 容器id,-f代表强制删除

删除镜像:docker rmi [-f] 容器id,-f代表强制删除

docker ps

列出全部容器:docker ps -a

列出全部在运行的容器:docker ps

解决docker ps显示信息不全: docker ps --no-trunc

docker run

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

选项说明(docker run --help

• -d,后台运⾏容器
• -e,设置环境变量
• --expose / -p 宿主端⼝:容器端⼝
• --name,指定容器名称
• --link,链接不同容器,比如想要连接数据库,可以指定这个容器名称
--link mysql
• -v 宿主⽬录:容器⽬录,挂载磁盘卷
• --network 指定网桥

例子:

docker run -d -p 9096:9096 --name 容器名称 -network 网桥名称 镜像名称

docker exec 执行命令

docker exec -it 0738ed2fe68b /bin/bash

docker inspect查看配置

docker inspect 614063479d7f | grep Mounts -A 20

docker build 自己搭建容器

不指定dockerfile名称,默认是Dockerfile

docker build -t 镜像名称:latest .

Dockerfile

FROM tomcat:latest
MAINTAINER mashibing.com
WORKDIR /usr/local/tomcat/webapps
ADD docker-web ./docker-web
FROM - 基于基准镜像

FROM centos #制作基准镜像(基于centos:lastest)
FROM scratch #不依赖任何基准镜像base image
FROM tomcat: 9.0.22-jdk8-openjdk
尽量使用官方提供的Base Image

LABEL & MAINTAINER - 说明信息

MAINTAINER mashibing.com
LABEL version = “1.0”
LABEL description = “马士兵教育”

WORKDIR - 设置工作目录

WORKDIR /usr/local # 切换到这个目录下
WORKDIR /usr/local/newdir #自动创建
尽量使用绝对路径

ADD & COPY - 复制文件

ADD hello / #复制到根路径
ADD test.tar.gz / #添加根目录并解压
ADD 除了复制,还具备添加远程文件功能

ENV - 设置环境常量

ENV JAVA_HOME /usr/local/openjdk8
RUN ${JAVA_HOME}/bin/java -jar test.jar
尽量使用环境常量,可提高程序维护性

EXPOSE - 暴露容器端口

将容器内部端口暴露给物理机
EXPOSE 8080
docker run -p 8000:8080 tomcat

RUN & CMD & ENTRYPOINT

RUN : 在Build构建时执行命令
ENTRYPOINT : 容器启动时执行的命令
CMD : 容器启动后执行默认的命令或参数

RUN-构建时运行

RUN yum install -y vim #Shell 命令格式
RUN [“yum”,“install”,“-y”,“vim”] #Exec命令格式

1)Shell运行方式

使用Shell执行时,当前shell是父进程,生成一个子shell进程
在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。

2)Exec运行方式

使用Exec方式,会用Exec进程替换当前进程,并且保持PID不变
执行完毕,直接退出,并不会退回之前的进程环境

ENTRYPOINT启动命令

ENTRYPOINT(入口点)用于在容器启动时执行命令
Dockerfile中只有最后一个ENTRYPOINT会被执行
ENTRYPOINT [“ps”] #推荐使用Exec格式

CMD默认命令

CMD用于设置默认执行的命令
如Dockerfile中出现多个CMD,则只有最后一个被执行
如容器启动时附加指令,则CMD被忽略
CMD [“ps” , “-ef”] #推荐使用Exec格式

docker network 网桥相关的命令

创建网桥以后,将容器和网桥关联,可以实现内部的互联互通
查看网络的具体命令:
docker network --help
查看网桥:
docker network ls

创建网桥:
docker network create -d bridge 网络名称
将容器连接到网桥
docker network connect 网桥名称 容器名称

整体命令

Docker环境信息 — docker [info|version]

容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]

容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]

容器rootfs命令 — docker [commit|cp|diff]

镜像仓库 — docker [login|pull|push|search]

本地镜像管理 — docker [build|images|rmi|tag|save|import|load]

容器资源管理 — docker [volume|network]

系统日志信息 — docker [events|history|logs]

你可能感兴趣的:(运维,docker,容器,运维)