docker常用命令

docker服务命令

启动 systemctl start docker
停止 systemctl stop docker
重启 systemctl restart docker
查看docker状态  systemctl status docker
开机启动 systemctl enable docker

查看docker占用空间 docker system df
查看本地镜像 docker images  
查找远程库镜像  docker search  [--limit 5 显示前五个]  redis
下载镜像 docker pull redis     指定版本 docker pull redis:6.0.1
删除镜像 docker rmi [-f 强制删除] 镜像名/镜像id
运行镜像创建实例 docker run [-d 后台运行 -it 交互式运行  --name 指定新名字 -p 指定端口80:80] redis
查看运行的实例  docker ps [-a 之前存在的]

启动容器  docker start 容器id或容器名
强制停止  docker kill  容器id或容器名
删除容器  docker rm [-f] 容器id

查看容器日志 docker logs 容器id
查看容器运行的进程 docker top 容器id
重新进入容器,exit不会退出  docker exec -it dd4b36b8df56 /bin/bash
将容器内文件移到宿主机  docker cp 容器id:容器路径  目的路径

查询容器IP docker inspect --format '{{ .NetworkSettings.IPAddress }}' 容器名

容器导出   docker export 容器id>路径文件名
docker export dd4b36b8df56>aaa.tar                 
容器导入为镜像  cat  文件路径名 | docker import - 镜像名:镜像版本号     
cat aaa.tar | docker import - root/ubuntu:1

容器提交
docker commit -m="提交信息。。" -a="作者" 容器id 文件名:版本号
容器推送
docker push username/imageName:tag

docker容器数据卷: 将容器内路径下的文件映射到宿主机内,完成数据的备份,两边数据实时同步

docker run -it --privileged=true -v 宿主机路径:容器内路径  镜像名

挂载后文件不会同步的问题:
    如果用户没有写权限,vim命令会修改文件的inode值(改变后容器内外就不再是同一文件了),执行chmod o+w xxx来授权

DockerFile

dockerfile是通过指令来编排镜像的一种方式,避免了手动迭代镜像(不断commit)的痛点。
dockerfile构建命令 docker build -t 镜像名:tag名 .

dockerfile将自己微服务构建镜像操作可参考:记录一次Dockerfile发布自己微服务的全流程_郑某人。的博客-CSDN博客

docker file常用关键字:


FROM: 继承自哪个镜像
MAINTAINER: 镜像维护人信息
RUN:容器构建时候需要执行的内容,在docker build时运行    
EXPOSE: 容器对外暴露的端口
WORKDIR: 登录容器后在哪个目录下
USER: 指定该镜像以哪个用户运行,默认root
ENV: 设定镜像的环境变量,也可以在dockerfile中来引用
VOLUME: 容器卷,相当于 -v 
ADD: 将宿主机目录下的文件拷贝到镜像中并解压tar
COPY: 将源文件复制的目的地
CMD: 启动容器后,要执行的命令,可以有多个CMD但是只生效最后一个,并且会被docker run 后面的参数替换
ENTRYPOINT: 与CMD类似,但是不会被docker run 的参数替换,并且与CMD一起使用时,CMD只能当做参数来用

Docker网络

Docker Network类型

docker run -d -p 8080:8080 --network {网络类型} --name tomcat

1、bridge模式(默认)

每个容器会自己虚拟ip,配置网络,并且会链接到同一个网桥进行通信。

 

2、Host模式

容器会不会虚拟自己的网卡,而是和宿主机共用一个IP和端口。

 

3、None模式

容器不会有任何网络配置,需要自定义网卡、配置IP等。

4、container模式

新创建的容器会和之前已存在的容器共享一个Ip和端口。

在network后跟要共用的容器名称。 

e.g:docker run -d -p 6379:6379 --nerwork:redis01 --name redi02

5、自定义网络

为了解决docker容器启动后,可能会因一些原因导致docker重启导致ip变动的问题,所以docker容器在网络通讯中需要使用容器名来进行通信,而不是写死ip地址,所以我们自定义网络来解决。

因为自定义网络已经维护好了主机名与IP的映射关系。

#先创建自定义网络,默认bridge类型
docker  network create   myNetwork



#分别启动两个容器加入自定义的网络
docker run -d -p 6379:6379 --network myNetwork --name redis01

docker run -d -p 6379:6379 --network myNetwork --name redis02

可以发现redis01 能够直接连接到主机名为redis02的网络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值