Docker常用命令

仓库—>含多个镜像—>可启动多个容器
镜像:精简的linux系统

以下内容主要来之B站教程《Docker最全视频教程》https://www.bilibili.com/video/av42509130/?p=33&t=1483

==>安装配置docker 配置阿里云加速器
==>docker 命令 --help
显示docker命令的帮助信息

《镜像》

==>docker search 镜像名称
查找镜像
==>docker pull 镜像名称
下拉一个镜像

==>docker images
显示本机上的docker镜像
==>docker ps
显示正在运行的镜像
-q:显示容器ID
-a:显示运行的和之前运行的

《运行容器》
==>docker run 镜像名称
运行一个docker如果没有用远程仓库下来一个
==>docker run (-it --name="容器名称") 镜像名称(或ID)
运行镜像,并打开一个终端
-d:后台运行容器
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i连用
-P:随机指定端口映射
-p:指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
==>docker run -d 镜像名称(或ID)
后台运行,
如果利用docker ps -a查看容器已经退出,很重要说明的一点:Docker容器后台运行,就必须有一个
前台进程,容器运行命令如果不是那些一直挂起的命令(如top, tail),就是会自动退出的
==>docker run -it(或-d) -p 8888:8080 tomcat
容器对外暴露的端口是8888,容器内部的实际端口是8080
wap通过访问(可以直接访问容器暴露端口)8888来访问8080

《退出和重新进入容器》
==>exit
容器停止退出,容器中产生的数据消失
==>ctrl+p+q 容器不停止退出
==>docker start 容器名称(或ID)
断开后重新启动容器
==>docker exec -it 容器ID bashshell
(可以直接进入也可以做完返回不直接进入)
是在容器内打开新的终端,并且可以启动新的进程bashshell
==>docker attach 容器ID
重新进入终端界面
直接进入容器启动命令的终端,不会启动新的进程

《关闭和删除容器》
==>docker restart 容器名称(或ID)
重启容器
==>docker stop 容器名称(或ID)
停止容器
==>docker kill 容器名称(或ID)
强制停止
==>docker rm 容器
删除已停止的容器
docker rm -f $(docker ps -a -q)
或者docker ps -a -q |xargs docker rm
一次性删除多个程序
==>docker rmi 镜像
删除镜像

《操作和查看容器》
==>docker run -d 镜像名称 /bin/sh -c "while true; do echo hello; sleep 2; done"
docker 启动镜像 并运行命令
==>docker logs -f -t --tail 容器ID
查看容器日志(容器终端打印显示内容)
-f:跟随最新的日志打印 不停追加,持续实时显示容器内打印内容
-t:是加入时间戳
–tail数字:显示最后多少条
==>docker top 容器ID
查看容器内的进程
==>docker inspect 容器ID
查看容器内部细节

《容器数据持久化》
==>docker cp 容器ID:容器内路径 目的主机路径
从容器内拷贝文件到主机上
==>数据卷
容器持久化和容器间共享、继承
==>docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
-v:卷
运行容器,并且在宿主机下新建绝对路径目录 和在 容器内 新建目录
==>docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
加的是文件夹,而不是文件,加只读容器卷(容器只读,宿主可修改)
相同路径,会覆盖
Docker挂载主机目录Docker访问出现cannot open directory .:Permmission denied
解决方法:在挂载目录后多加一个–privileged=ture即可
==》DockerFile
Docker images ===>> DockerFile(类似CMakeFile.list)源码级描述
DockerFile添加:
(1)在根目录下新建mydocker文件夹并进入
(2)可在dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷

VOLUME["/dataVolumeVontainer","/dataVolumeContainer2", "dataVolumeContainer2"]

只支持容器内
说明:处于可移植和分享的考虑,用 -v 主机目录:容器目录 这种方法不能够直接在DockFile实现
(3)File构建
dockerfile文件内容:

#volume test
FROM 父类镜像名称
VOLUME["/dataVolumeVontainer1","/dataVolumeContainer2"]
CMD echo "finished, ------success"
CMD /bin/bash

上面相当于

docker run -it -v /host1:/dataVolumeVontainer1 -v /host2:/dataVolumeVontainer2 镜像名称 /bin/bash

(4)build后生成镜像

docker build -f dockerfile文件路径 -t 镜像名称 .(.当前目录)

利用docker images 可以看到新建的镜像
(5)run容器

docker run -it 镜像名称

可以看到生成的目录
(6)主机对应默认地址

docker inspect 容器ID 

查找Volumes项,找到对应的宿主机位置
===>容器共享
(针对于dockfile创建的镜像)

ducker run -it --name dc01 镜像名称
ducker run -it --name dco2 --valumes-from dc01 镜像名称
ducker run -it --name dco3 --valumes-from dc01 镜像名称

新建相同镜像的数据卷继承容器,三个容器数据共享
将父容器删除后,子容器数据不受影响,数据卷的生命周期一直持续到没有容器使用它为止

《创建和提交容器》
==>docker commit
提交容器副本,使之成为新的镜像(创建镜像),其中也可以保存数据

docker commit -a="作者名字" -m="信息" 容器名称 镜像名称(类名/镜像名称:版本号)

==>上传阿里云服务器
阿里云开发者平台设置

docker login ....
docker tag ...
docker push ...

==>下拉阿里云

docker pull ...

《DockerFile》
DockerFile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本
构建三步骤:编写DockerFile文件,docker build, ducker run
语法规则:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值