查看docker版本: docker version
查看docker系统信息: docker info
列举全部镜像: docker images
搜索镜像: docker search 搜索镜像名字
拉去镜像: docker pull 镜像名字
删除单个镜像: docker rmi -f 容器id
删除多个镜像: docker rmi -f 容器id 容器id 容器id
启动镜像: docker run 镜像名字
--name 起一个名字
-d 后台运行
-it 交互的方式运行
-p 指定容器的端口好
docker run -it ubuntu /bin/bash
docker快照:docker commit -m=“描述信息” -a=“作者” 容器ID 目标镜像名:[TAG]
docker的数据卷:docker run -it -v 宿主机目录:容器目录 镜像名
有名字的挂在:# docker run -d --name nginx3 -v JM:/etc/nginx:rw nginx
没有名字的挂在:# docker run -d --name nginx3 -v /etc/nginx:rw nginx
查看数据挂在卷:docker volume ls
查看挂在具体情况:docker volume inspect JM
简单的dockerfile编写
vim dockerfile1
FROM ubuntu
VOLUME ["volume1","volume2"]
CMD echo "====successfully===="
CMD /bin/bash
执行构建docker镜像的命令:docker build -f dockerfile1 -t xiaomotong/ubuntu .
docker build # 构建自己的镜像
-f # 指定dockerfile的文件
-t # 构建成docker镜像的名字
docker inspect 容器id # 查看某个容器的详细信息
dockerfile基础知识
1.每个dockerfile的保留字,必须都是大写
2.dockerfile脚本执行是按照顺序执行的
3.# 表示注释
4.每个命令都会创建一个新的镜像层,并且提交
dockerfile基础命令
1. FROM: 基础镜像,一切从这里开始
2. MAINTAINER 指明镜像是谁写的,写自己的名字和邮箱
3. RUN 镜像构建的时候需要运行的命令
4. ADD 加入某些配置,例如mysql的压缩包,添加内容
5. WORKDIR 镜像的工作目录
6. VOLUME 挂在目录
7. EXPOSE 暴露端口号和 -p 一个作用
8. CMD 执行这个容器启动的时候执行的命令,只会是最优一个指令进行生效,会被替代
9. ENTRYPOINT 指定这个容器启动的时候执行的命令,可以追加
10. ONBUILD 当构建一个被继承的 DockerFIle ,这个时候就会运行 ONBUILD 的指令,触发相应的动作
11. COPY 与 ADD 类似,此命令是将文件拷贝到镜像中
12. ENV 构建的时候设置环境变量
自己构建的dockerfile
FROM ubuntu
RUN apt-get update
RUN apt-get install -y vim
RUN apt-get install -y net-tools
ENV MYPATH /usr/local
WORKDIR $MYPATH
EXPOSE 8888
CMD echo "----- end -----"
CMD /bin/bash
如何发布我们创建好的镜像
1.docker login -u xxx用户名
2. 修改我们的镜像tag: docker tar 镜像id docker用户名/镜像名:版本
3. docker push tag名 # 推送到自己的仓库中去
-link参数
docker run -it --name ubuntu3 -P --link ubuntu2 xmtubuntu
# 既可以通过下面的名称进行通信了
-link做的是就是向hosts文件中添加了一个域名映射的文本
docker exec -it ubuntu3 ping ubuntu2
自定义网络
可以使用 docker network ls 查看宿主机 docker的网络情况
网络模式
1.bridge:桥接: docker0默认使用bridge这个名字
2.host:和宿主机共享网络
3.none:不配置网络
自动以网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
docker network create:创建一个网络
--driver 指定驱动是bridge
--subnet: 指定子网
--gateway 指定网关
清楚所有容器
创建两个容器
此时我们可以查看一下宿主机的网卡信息,并验证两个容器直接通过容器名字是否可以通信
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/791aaa89211ed086336d7da7e290fae8.png)
打通容器之间的通信
docker network connect mynet ubuntu3
docker network inspect mynet # 查看详细信息