标签:博客 内容 打开 默认 code 关联 网络 ash 常用命令
由于docker的命令比较多,有时候容易记混,所以把docker的一些常用的命令给记录下来,然后使用的时候如果忘记了可以Ctrl+f通过关键字查找。所以这篇博客只是记录了命令是干什么的,具体细节不会说太多、也没有举例说明。只是为了让你在记不清某个命令的时候、能够快速查找。
docker version:查看docker的版本信息
docker info:查看docker内部详细信息,如:有多少镜像、多少容器、等等一大堆的信息。
docker --help:帮助命令
docker images [options]:列出本机存在的所有镜像
-a:包含中间镜像层
-q:只显示镜像的id
--digests:显示摘要信息
--no-trunc:显示完整的镜像信息
docker search?[options] 镜像:搜索镜像
--no-trunc:显示完整的镜像信息
--filter=stars=n:列出stars数不小于n的镜像
--automated:只列出automated build的镜像
docker pull 镜像[:TAG]:下载镜像
docker rmi -f 镜像:强制删除一个镜像
docker rmi -f 镜像1 镜像2 镜像3...:强制删除多个镜像
docker rmi -f $(docker images -aq)或者docker images -aq | xargs docker rmi -f:删除全部镜像
docker run [options] 镜像:根据镜像创建一个容器并启动
--name="容器名字":为启动的容器指定一个名字,这样就可以根据指定的名字来找到对应的容器了,所以多个容器的名字一定是唯一的
-d:后台运行,会返回启动容器的id
-i:交互式模式启动,通常和-t一起使用
-t:为容器重新分配一个伪输入终端,通常和-i一起使用
-P:端口映射,这个映射是随机的
-p:指定端口映射,比如5000:8000
docker ps [options]
-a:列出所有运行过的容器,包含历史上运行过的
-q:只显示容器id
-n:显示最近创建的n个容器
-l:显示最近创建的容器
--no-trunc:不截断输出
exit:停止容器、然后退出
Ctrl+p+q:容器不停止、退出
docker start 容器id或容器名:启动之前创建的容器
docker restart 容器id或容器名:重启之前创建的容器?
docker stop 容器id或容器名:停止正在运行的容器,温柔停止,类似于关机
docker kill 容器id或容器名:停止正在运行的容器,强制停止,类似于拔电源
docker rm -f 容器id或容器名:强制删除一个容器
docker rm -f 容器1 容器2 容器3...:强制删除多个容器
docker rm -f $(docker ps -aq)或者docker ps -aq | xargs docker rm -f:删除全部容器
docker logs -f -t --tails n 容器:查看容器内部的输出信息
-f:跟随最新的日志打印
-t:加入时间戳
--tails n:显示最后多少条
docker top 容器:显示容器的内部信息
docker inspect 容器:查看容器的内部细节
docker attach 容器:进入正在运行的容器
docker exec -it 容器 bash:打开一个新终端,执行shell命令
docker exec -it container1 ls /:如果是/bin/bash,那么就会新建一个终端进行交互;但如果是像这里的ls /,只是一个bash命令,那么会查看容器的/目录,然后直接回到宿主机上。
但是上面的只能执行一个bash命令,如果执行多条,docker exec -it /bash/bash -c "多条shell命令",执行完毕同样会回到宿主机上
docker cp 容器:容器目录路径 宿主机目录路径:将容器内的文件拷贝到宿主机上
docker cp container:/a.py /root/aa.py,将容器内/下的a.py拷贝到宿主机的/root目录下,重命名为aa.py
docker save 镜像 > xxx.tar:将镜像保存为一个tar包
docker save image1 > image1.tar,这样可以把tar拷贝到其他机器上
docker load < xxx.tar:将tar包加载为镜像
docker load < image1.tar,这样可以把从其它机器上拷贝过来的tar包变成一个镜像
docker commit -a="作者" -m="提交的信息" 容器 镜像:将一个容器commit成一个镜像
docker commit -a="satori" -m="容器变镜像" container1 image1,当一个容器内部的参数都设定好之后commit成一个镜像,这样在启动该镜像的时候,生成的容器就是我们之前内部参数都设定好的容器
docker diff 容器:查看容器内部的变化
docker history 镜像:查看一个镜像的形成历史
docker pause 容器:暂停一个容器
docker unpause 容器:恢复暂停的容器
docker wait 容器:阻塞、直到容器退出、然后打印退出时候的状态值
docker run -v 宿主机绝对 目录路径:容器绝对目录路径 镜像名:启动一个容器、并关联目录
docker run -it -v /root/data:/data centos,根据镜像centos创建一个容器,并且此时宿主机的/root/data目录和容器的/data目录进行关联,对任何一方的操作都会同步到另一方
docker run -it --privileged=true -v /root/data:/data centos,有时候会发现没有权限,那么就加上--privileged=true即可
docker run -it -privileged=true -v /root/data:/data:ro centos,我们在容器的目录后面加上了:ro,这表示容器的目录是只读的,否则如果容器把/data目录的内容全删了,那么宿主机的/root/data里面的内容也会跟着删除,这比较危险。于是在容器目录的后面加上:ro,表示容器不能修改内部的/data这个目录
docker run -it -v /dir1:/dir1 -v /dir2:/dir2 centos,也可以同时挂在多个目录
docker build -f dockerfile文件 -t 生成的镜像名 生成在哪个目录(一般是当前目录、直接写一个.即可):根据dockerfile生成一个新的镜像。
dockerfile我们后面会单独说,这里只是为了引出数据卷
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
这里我们通过VOLUME指令手动指定了两个容器目录,那么在根据这个镜像创建容器的会自动和宿主机的目录进行关联,可能有人发现了,为什么没有宿主机的目录。这是因为dockerfile可以在任意地方构建,如果你指定了当前宿主机上的某个目录,但是docker无法保证每一台机器都有这样的目录。所以docker不要求指定宿主机的目录,会自动创建宿主机的目录。至于创建的目录叫什么、在什么位置,我们可以通过docker inspect查看
docker run --volumes-from 容器 镜像:将镜像生成的容器挂在到指定的容器上。
我们指定的容器要是已经挂载到宿主机的容器上
先来看看dockerfile的关键字
FROM 镜像:表示要创建的镜像是基于哪一个镜像
MATAINER "作者信息":镜像作者的姓名、地址等信息
RUN 命令:构建镜像时执行的命令,多个命令使用&&分割,如果换行使用\进行转义。当然也可以写多个RUN,只是不推荐,因此每RUN一次镜像都会多一层,如果你RUN的命令比较多,那么每一个命令都RUN一次,那么最终生成的镜像会非常大,因此建议把多个RUN后面的命令使用&&连在一起,RUN一次即可
EXPOSE 端口:容器对外暴露出的端口
ENV fs /data:设置环境变量,比如这里把/data设置成了fs,以后找/data这个目录的时候就可以通过$fs来查找了
WORKDIR $fs:一个落脚点,当容器启动之后默认所在的目录,这里就是/data目录
ADD 宿主机目录 镜像目录 "或者" ADD ["宿主机目录", "镜像目录"] :将宿主机的文件或者目录拷贝到镜像
COPY:格式和ADD一样,只不过ADD会自动处理tar包
VOLUME:数据卷,我们刚才介绍过的
CMD 命令:提交一个容器启动时要运行的命令,DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run -it centos之后的参数替换
ENTRYPOINT 命令:作用和CMD一样,只不过被docker run -it centos之后的参数不是替换、而是会追加
ONBUILD:当个构建一个被继承的DockerFile时运行命令,当父镜像被子镜像继承后,子镜像运行时,父镜像会触发onbuild,类似于一个触发器。或者理解为是父镜像里面的一个回调函数,当子镜像运行时,会触发父镜像的回调函数。
docker network ls:查看所有的网络
docker network create -d bridge 网络:创建一个网络
docker network inspect 网络:显示该网络的所有信息
docker network rm 网络:删除一个网络,只能删除自己创建的,默认的bridge无法删除。
docker network prune:移除所有无用的网络。
docker run -it --link 容器:容器别名 -d 网络 镜像:创建一个容器,此时的容器就和我们指定的容器进行了连接,我们通过连接的容器名、容器id、我们起的容器别名都可以访问对应的容器。如果不指定"-d 网络"的话,那么默认走的bridge。注意可以同时连接到多个网络,同时可以设置环境变量,比如通过-e PASSWORD=123,就可以通过PASSWORD得到123
docker network connect 网络 容器:将容器连接到一个网络上
docker network disconnect 网络 容器:将容器从连接的网络上取消
标签:博客 内容 打开 默认 code 关联 网络 ash 常用命令
原文地址:https://www.cnblogs.com/traditional/p/12308157.html