Docker的名词
镜像(image):
就是一个模板,可以启动多个容器:run
容器(container):
独立运行一个或多个
启动、停止、删除
可以理解为一个简易的linux系统
仓库(repository):
存放容器的地方;
共有和私有仓库
安装Docker
环境准备
1、CentOS 7
2、使用Xshell连接服务器
安装
官网文档有安装文档
1、卸载旧的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装依赖包
sudo yum install -y yum-utils
3、设置镜像仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外的
4、安装 docker-ce社区版本 ee企业版
yum makecache fast # 清空缓存
sudo yum install docker-ce docker-ce-cli containerd.io
5、启动docker
sudo systemctl start docker
docker version # 是否启动成功
6、测试helloworld
docker run hello-world # 在线下载
7、查看hello-world的镜像
docker images
卸载docker
1、卸载docker
sudo yum remove docker-ce docker-ce-cli containerd.io
2、删除目录,所有的文档都在docker目录下
sudo rm -rf /var/lib/docker
启动与关闭
1、开启docker服务
systemctl start docker
2、查看是正在运行的容器
docker ps
3、停止容器
docker stop 容器ID
4、关闭docker
service docker stop
Docker常用命令
帮助命令
docker info
docker --help
文档命令地址
https://docs.docker.com/reference/
镜像命令
docker images # 查看所有镜像
-a, --all Show all images (default hides intermediate images)
-q, --quiet Only show numeric IDs
docker search mysql --filter=STARS=3000 # 过滤掉3000star以下的
下载镜像
docker pull mysql # 默认下载最新版本, 分层下载(联合文件系统)
docker pull mysql:5.7
删除镜像
docker rmi 镜像ID # 空额删除多个镜像
删除所有
docker rmi $(docker images -aq)
容器命令
说明:进入镜像才可以创建容器
容器新建和启动
docker run [可选参数]
--name="name"
-d # 后台方式运行
-it # 使用交互式方式运行,进入容器查看内容
-p # 指定容器端口 3344:80
-P # 随机指定端口
启动进入容器
docker run -it centos /bin/bash
退出
exit # 关闭并退出
Ctrl + P + Q # 不停止退出
列出所有运行容器
docker ps
-a # 当前和历史运行容器
-n=1 # 显示1个结构
-q # 只显示容器编号
删除容器
docker rm 容器ID
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm
启动和停止容器
docker start ID
docker restart ID
docker stop ID
docker kill ID
其他常用命令
后台启动
docker run -d 镜像名 # 启动就会停止,因为没有前台进程
查看日志
docker logs -tf --tail 10 ID # 显示最新10条日志
查看容器的进程信息
docker top ID
查看元数据
docker inspect ID
进入当前运行的容器
docker exec -it ID /bin/bash # 进入容器开启一个新的终端
docker attach ID # 进入正在运行的终端
从容器内拷贝文件到主机
docker cp ID:容器内路径 目的主机路径
docker stats # 查看docker cpu的运行状态
安装Nginx例子
docker search nginx # 推荐到hub上搜索
docker run -d --name nginx_chini -p 3344:80 nginx
curl localhost:3344 # 测试是否安装启动成功
安装Tomcat
docker run -it --rm tomcat:9.0 # 用完即删
提交自己的镜像
用commit保存当前容器的状态,使用commit来提交,以获得一个新的镜像
docker commit -m="注解" -a ="作者" ID 目标镜像名:[TAG]
docker commit -a="chini" -m="this is a test" 354c3d6e4a17 tomcat:9.9
容器数据集
卷技术:容器的持久化和同步,容器间数据共享
数据独立存储在容器外,防止容器删除之后数据丢失
1、使用-v挂载:双向绑定,容器内外操作自动同步
docker run -it -v 主机目录:容器目录
实战mysql
-v 挂载内部:可以bu
-d 后台运行
-p 端口映射
-e 设置密码
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
# 进入mysql
mysql -u root -p
show databases
use tatabase_name
具名挂载和匿名挂载
# 匿名
docker run -d -P --name nginx01 -v /ect/nginx nginx
# 具名:卷名(chini-nginx)方便找到卷,建议使用
docker run -d -P --name nginx01 -v chini-nginx:/ect/nginx nginx
# 查看位置
docker volume inspect chini-nginx
#######################
-v 容器内路径 匿名
-v 卷名:容器内路径 具名
-v /主机路径:容器内路径 指定路径名挂载
DockerFile 用来构建docker镜像文件!(commit)
脚本文件,用于生产镜像
# 编写dockerfile文件
FROM centos
VOLUME ["volume01","volume02"] # 挂载卷 匿名
CMD echo "end-------"
CMD /bin/bash
docker build -f dockerfile1 -t chini/centos:1.0 .
容器间数据共享 --volumes-from
也可以做配置信息的传递,数据的生命周期一直持续到没有人使用为止
# docker02 集成docker01挂载的卷
# 即是docker01被删除之后文件依旧在
docker run -it docker02 --volumes-from docker01 ID
DockerFile
用来构建镜像文件
1、编写douckerfile文件(dockerfile是面向开发的)
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub,阿里云镜像)
# dockerfile 基础知识
每个指令都会提交一个层
指令关键字都是大写
#表示注释
# 基本指令
FROM 基础镜像
MAINTAINER 镜像是谁写的 姓名+邮箱
RUN 镜像构建的时候需要运行的命令
ADD 步骤,逐渐创建层
WORKDIR 镜像的工作目录
VOLUME 挂载目录
EXPOSE 指定暴露端口 替代命令行中-p
ONBULID
COPY 将文件拷贝到镜像中
CDM 指定容器启动时运行的指令(只执行最后一条)
ENTRYPOINT 区别于CMD可以追加命令,可以在默认命令中追加命令
ENV 设置环境变量
实战测试
创建自己的centos
# 1、dockerfile
FROM centos
MAINTAINER Chini<wchen@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH # 默认进入docker的根目录
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD /bin/bash
# 2、构建镜像
docker build -f dockerfilename -t mycentos:0.1 .
列出本地镜像的历史,拿到一个镜像可以学习官方是怎么做的。
docker history ID
发布镜像到dockerhub
1、注册账号,确定可以登录
2、在服务器上提交
docker login -u
docker push 作者名/name:[TAG] # 尽量带版本号