docker常用命令

docker:xxx代表id

加入开机

systemctl enable docker

启动/停止/重启docker

systemctl start/stop/restart docker

启动docker

镜像:

拉取centos镜像默认是最新版:

docker pull centos 

查看镜像:

docker images

删除镜像:f表示强制删除,f后面可跟镜像id或者镜像名称,rmi的i就是image的意思

docker rmi -f centos

查看镜像id:

docker images -qa

 

 

容器:

新建并启动镜像:

docker run -it --name mycentos centos
i代表交互,t代表伪终端,name给容器起一个别名
docker run -it centos /bin/bash

启动tomcat

docker run -it -p 8888:8080 tomcat
小写的p代表指定端口号,8888代表docker对外映射的端口8080代表tomcat内部的端口,直接访问8888端口
docker run -it -P 8888:8080 tomcat
大写的P代表随机端口

提交修改的容器为新镜像

docker commit -a='rt' -m='mv webapps' 0e37242e82de rt/tomcat:1.1
-a代表作者
-m代表修改内容
rt/tomcat:1.1新城的镜像名和版本号

再次启动自己新提交的镜像
docker run -d -P rt/tomcat:1.1
必须带版本号否则会去找latest版本

后台启动镜像

docker run -d centos
执行完docker ps发现并未找到运行的镜像,是因为docker后台运行就必须有一个前台进程,执行完上面的命令镜像启动之后发现前台没有进程就立即自杀了。

模拟前台进程启动:

docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 5;done"
启动centos镜像,循环每5秒打印一次hello world

查看容器的日志

docker logs -t -f --tail 3  XXX
-t 显示时间
-f 追加持续输出
--tail 最后3行

查看容器内的进程

docker top XXX
和linux下的top类似

查看容器内的信息

docker inspect XXX

查看当前正在运行的容器

docker ps

查看当前运行的容器的id

docker ps -q

查看历史运行的容器id

docker ps -qa

停止容器:直接退出

exit

离开容器但不停止:先按ctrl再按p再按q,按照顺序来,不是一下按三个

ctrl+p+q

再次进入

docker attach XXX
退出用ctrl+p+q

直接查看容器内的东西不进入容器

docker exec -t adf5a74ec0e6 ls -l /tmp
查看/tmp下的文件信息
也可以直接进入
docker exec -it adf5a74ec0e6 /bin/bash

复制容器内的文件在主机上

docker cp adf5a74ec0e6:/tmp/a.txt /tmp
复制adf5a74ec0e6容器下tmp目录中的a.txt文件到主机tmp文件下。
注意冒号后没空格

重启/停止/强制停止容器:XXX代表容器id

docker restart/stop/kill XXX

查看历史运行过的容器

docker ps -a

删除历史记录中已经停止的容器:XXX代表容器id

docker rm XXX

强制删除容器:先关再删

docker rm -f XXX

一次性删除多个容器

docker rm -f ${docker ps -qa}
或者
docker ps -qa | xargs docker rm
管道符前面代表参数,传递给管道符后面的xargs中,然后执行删除

重启历史运行过已退出的容器:XXX代表容器id不是镜像id

docker start XXX

容器数据卷

命令共享数据:  主机的目录为根目录下不行,换到tmp下可以不知道是不是docker版本的问题

docker run -it -v /tmp/myDataCentos:/myDataCentosContainer XXX 
互相可读可写
-v数据卷
myDataCentos:主机上的目录
myDataCentosContainer:容器内的目录
XXX:容器id/名称
docker run -it -v /tmp/myDataCentos:/myDataCentosContainer:ro XXX 
ro:容器文件夹只读,不允许自己写,可以同步主机文件夹的内容
-v数据卷
myDataCentos:主机上的目录
myDataCentosContainer:容器内的目录
XXX:容器id/名称

Dockerfile用法

编写Dockerfile文件

FROM centos
#继承自centos镜像
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
#根目录下创建2个文件夹
CMD echo "finished,---------------success"
#输出
CMD /bin/bash
#执行

build一下

docker build -f /mydocker/Dockerfile -t rt/centos .
#注意结尾的点后别忘记

启动刚才新建的镜像就会默认在根目录下生成2个文件夹,docker inspect XXX   进入刚才启动的容器内,找Dockerfile内配的文件夹,会看到主机对应的文件夹。

容器间通讯

先启动一个容器叫d1。
docker run -it --name d1 rt/centos
启动第二个容器叫d2,volumes-from代表卷来源于d1。
docker run -it --name d2 --volumes-from d1 rt/centos
重点:删除任何一个容器,其他容器间的通讯还会一直保持,直到全部容器被删除。

DockerFile体系结构

FROM :基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建时需要运行的命令
EXPOSE:当前容器对外暴露出的端口
WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包=copy+解压缩
COPY:类似ADD,拷贝文件和目录到镜像中。
VOLUME:容器数据卷,用于数据保存和持久化工作
CMD:指定一个容器启动时要运行的命令-会被覆盖
ENTRYPOINT:指定一个容器启动时要运行的命令-会追加
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

Dockerfile示例

FROM centos
MAINTAINER xxx@qq.com
COPY a.txt /tmp/container.txt
ADD b.tar.gz /tmp/
RUN yum -y install vim
ENV MYPATH /tmp
WORKDIR $MYPATH
EXPOSE 8080

查看历史镜像

docker history XXX

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值