docker帮助文档:https://docs.docker.com/engine/reference/commandline/build/
网易蜂巢镜像中心:https://c.163yun.com/hub#/home
docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书,可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中.

卸载原有的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装工具包
yum install -y yum-utils
设置镜像仓库(这里使用的是阿里云的镜像仓库)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件索引包:(这步也可省略)
yum makecache faster
安装docker :
yum install docker-ce docker-ce-cli containerd.io
启动docker:
systemctl start docker
使用 docker version 查看是否安装成功
docker version
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
docker version
docker info
docker 命令 --help
docker images
docker images -a, --all #列出所有镜像
docker images -q,--quit #只显示镜像的id
docker search 镜像名
docker search 镜像名 --filter==stars=3000 #搜索出来的镜像是大于3000的
docker pull 镜像名:版本号 #不加版本号默认为最新版本
使用网易蜂巢镜像中心:https://c.163yun.com/hub#/home
#删除一个
docker rmi -f 镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像ID 镜像ID 镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
#强制删除镜像
docker image rm 镜像ID
docker tag 镜像id 镜像名:版本号
docker装在哪台服务器 那台服务器 就是其宿主机)8888 端口进行映射 那通过外部访问宿主机8888端口 即可访问到 docker 容器 6379 端口了
docker run [可选参数] image
docker run -d --name mysql01 -p 8888:3306 mysql:5.7.16 /bin/bash
#参数说明
/bin/bash #交互路径
--name mysql01 #容器名字 可为 mysql01 mysql02
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器端口
-p ip:宿主机端口:容器端口
-p 宿主机端口:容器端口
-p 容器端口
-v #卷挂载
-e #环境配置
--restart=always
docker run -it centos /bin/bash
docker ps -aq
参数 :
空 # 列出当前正在运行的容器
-a #列出当前正在运行的容器+历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
docker exec -it 容器名/容器ID /bin/bash
docker attach 容器名/容器ID
exit
Ctrl + p + q
docker stop 容器ID/容器名
docker restart 容器id
docker start 容器ID/容器名
docker kill 容器ID/容器名
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
docker logs -f -t --tail 条数 容器id
#-tf 显示日志
#--tail number # 要显示日志条数
docker top 容器id
docker inspect 加容器id
docker rename 容器ID/容器名 新容器名
docker rm 容器ID
-v 宿主机文件存储位置:容器内文件位置
-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置
示例(docker启动mysql:)
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
-v 容器内路径
docker volume ls
-v 卷名:容器内路径
docker volume inspect 卷名
-v 容器内路径:ro rw 改变读写权限
ro #readonly 只读
rw #readwrite 可读可写
构建步骤:
1.编写一个dockerfile文件
2.docker build 构建成为一个镜像
3.docker run 运行一个镜像
4.docker push 发布镜像(阿里云。dockerhub)
文件内容如下:
FROM centos
VOLUME ["volume01","volume02"]
CMD echo ".....end"
CMD /bin/bash
通过命令构建:
docker build -f 文件路径 -t abc/centos .
挂载:(–volumes-from)
FROM #基础镜像一切从这里开始
MAINTAINER #镜像是谁写的,姓名加邮箱
RUN #镜像构建时需要的命令
ADD #步骤tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #镜像工作目录
VOLUME #挂载的位置
EXPOSE #暴露端口
CMD #指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动时要运行的命令,可以追加
ONBUILD #当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令
COPY #类似ADD,将命令拷贝到镜像当中
ENV #构建的时候设置环境变量
实战tomcat:
1.准备镜像文件,tomcat压缩包,jdk的压缩包!
2.编写dockerfile文件,官方命名:Dockerfile,build会自动寻找这个文件,就不需要-f指令
提交自己的镜像:
登录:https://hub.docker.com/
docker login -u h12345600
docker push 作者/镜像名
阿里云镜像:
1.找到容器镜像服务中心
2.创建命名空间
3.创建容器镜像
通过 --link 可以使容器间联通。
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
可以通过 docker network ls 查看所有网络模式
通过–net mynet 连接到我们自己的网络上面去
网络连通:
docker network connect 容器名 网卡
实战创建三主三从redis