docker常用命令

一、普通指令

启动 Docker

sudo systemctl start docker
停止 Docker

sudo systemctl stop docker
普通重启 Docker

sudo systemctl restart docker
修改配置后重启 Docker

sudo systemctl daemon-reload
sudo systemctl restart docker
查看版本

docker version
查看Docker 信息

docker info
Docker 帮助

docker --help

二、镜像命令

列出本机Docker上已经安装的镜像:

docker images
搜索Docker hub上面的镜像

普通搜索,以Tomcat为例

docker search tomcat

搜索star大于50的镜像实例

docker search -s 50 tomcat
从Docker Hub上面下载镜像

以下载tomcat为例

docker pull tomcat[:version]

删除本地的某一个镜像

# 以删除tomcat为例
docker rmi tomcat[:version]
# 通过镜像ID删除
docker rmi -f 镜像ID
# 通过镜像ID删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG 
# 删除全部
# docker images -qa : 获取所有镜像ID
docker rmi -f $(docker images -qa)

镜像打包与运行

#打包一个我们自己的 tomcat
docker commit -a jianghai -m="package my tomcat" 要打包的镜像ID jianghai/tomcat:1.0
# -a : 作者名称
# -m : 打包信息
#启动我们自己打包生成的 tomcat
docker run -it -p 7700:8080 jianghai/tomcat:1.0

三、容器命令

启动容器

# 新建并进入容器,最后一个为本地容器的ID  
docker run -it --name="rivercentos001" 9f38484d220f

 # 为容器启一个名称
 -name="新容器名称"
 # 后台运行容器,并返回容器ID,也就是启动守护士容器
 -d 
 # 以交互模式运行容器,通常与-t同时使用.
 -i
 # 为容器重新分配一个伪终端,通过与-i同时使用
 -t 
 # 随机端口映射 [大写P]
 -P
 # 端口映射 [小写P]
 -p
 # 数据卷 加参数 ro:容器内的目录只读,不可写
 -v /宿主机绝对路径目录:/容器内目录[:ro] 镜像名

查看当前正在运行的Docker 容器

docker ps
# 参数
# 列出当前正在运行的以及历史上运行过的
-a
# 显示最近创建的容器
-l
# 显示最近创建的N个容器
-n
# 静默模式,只显示容器编号
-q
# 不截断输出
--no-trunc

退出容器

# 退出并停止
exit
# 容器不停止退出
ctrl+P+Q

启动容器

docker start 容器ID或容器name
重启容器

docker restart 容器ID或容器name
停止

docker stop 容器ID或容器name
强制停止

docker kill 容器ID或容器name
删除容器

# 删除已经停止的容器
docker rm 容器ID或容器name 
# 强制删除已经停止或正在运行的容器
docker rm -f  容器ID或容器name 

一次性删除所有正在运行的容器
docker rm -f $(docker ps -qa)

重新进入容器

# 第一种方式
docker attach 容器ID或容器名称
# 第二种方式{隔山打牛式,在宿主机向容器发送命令并获取结果}
docker exec -t 容器ID或容器名称 ls# 列出文件列表
# 交互
docker exec -it rivertomcat  /bin/bash

从容器内拷贝文件到宿主机

docker cp 容器ID或容器名称:/文件路径与文件名 宿主机地址
 # 例,拷贝容器river的aaa文件夹下的a.txt到宿主机的当前位置 
 docker cp river:/aaa/a.txt .

四、日志命令

docker logs -f -t --tail 10 容器ID或容器名称
# 加入的时间戳
-t
# 跟随最新的日志打印
-f
# 输出最后几行的日志
--tail 行数

# 启动一个centos,并且每两秒在Console输出一个Hello jianghai
docker run -d --name river centos /bin/sh -c "while true;do echo hello jianghai;sleep 2;done"
# 查看最后10行的日志
docker logs -f -t --tail 10 river

#查看容器内的进程
docker top 容器ID或容器名称

五、DockerFile解析

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

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

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

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

WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,也不是运行并登录进来的当前目录位置。

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

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

COPY 类似ADD,但只是复制,不带解压压缩包的功能。

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

CMD 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD指令,但只有最后一个会生效执行。

ENTRYPOINT

指定一个容器启动时要运行的命令

ENTRYPOINT的作用和CMD一样,都是在指定容器启动程序及参数

相当于CMD的升级版本,CMD只能执行一条命令,运行时如果加一些参数是不行的.但如果把CMD替换成ENTRYPOINT就可以在Run镜像的时候在尾部追回指令.

简单的说如果Run镜像的时候追回了命令,CMD会用追回的覆盖掉旧的,ENTRYPOINT会追回执行。

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

docker查看容器挂载目录
docker inspect 容器名 | grep Mounts -A 20
docker创建,查询,删除数据卷
创建
docker volume create 数据卷名
查看数据卷列表
docker volume ls
查看数据的相关信息,例如挂载位置
docker inspect volume_name
删除数据卷1
docker volume rm volume_name
删除数据卷2
docker volume prune volume_name
删除两种区别,此处不做介绍,可自行搜索查看。
image.png

docker设置自动启动
一、docker服务设置自动启动
查看已启动的服务
systemctl list-units --type=service

查看是否设置开机启动
systemctl list-unit-files | grep enable

设置开机启动
systemctl enable docker.service

关闭开机启动
systemctl disable docker.service

二、docker容器设置自动启动
启动时加--restart=always
docker run -tid --name isaler_v0.0.11 -p 8081:8080 --restart=always -v /alidata/iDocker/run/projectImages/isaler/v0.0.11/log:/usr/local/tomcat/logs isaler_v0.0.11

Flag                  Description
no             不自动重启容器. (默认value)
on-failure     容器发生error而退出(容器退出状态不为0)重启容器
unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
always         在容器已经stop掉或Docker stoped/restarted的时候才重启容器

如果已经过运行的项目
如果已经启动的项目,则使用update更新:
docker update --restart=always isaler_v0.0.11

批量操作容器
docker 启动所有的容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker 关闭所有的容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker 删除所有的容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker 删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

docker批量运行和停止容器
通过空格分隔几个要停止的容器
docker container stop <CONTAINER ID> <CONTAINER ID>

查看所有容器的ID
docker container ps -aq

停止所有容器
docker container stop $(docker container ps -aq)

删除所有容器
在删除容器之前需要先停止正在运行的容器
docker container rm $(docker container ps -aq)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容