https://docs.docker.com/install/linux/docker-ce/centos/
Docker v 18.09 这是代表最新版本是18年09月发布的最新版本
——————– Docker 版本 查看 ——————–
docker –version 查看是否安装成功,版本号
docker version 查看docker client , docker server 版本号等信息
一、在 Mac 上安装Docker
https://docs.docker.com/docker-for-mac/install/
二、在 Windows 上安装Docker
https://docs.docker.com/docker-for-windows/install/
三、在 Linux 上安装Docker
https://docs.docker.com/install/linux/docker-ce/centos/
——————– Docker image 命令 ——————–
docker image –help
docker image ls #列举本地有的image
docker images push #提交image
——————– Docker image 命令简写 ——————–
docker image ls === docker images
docker image rm === docker rmi
——————– Image 的获取 ——————–
一、Dockerfile
二、Registry
——————– Container 命令 ——————–
docker –help
docker container ls #列举当前运行的container
docker container ls -a #列举当前运行的container ,包括退出的
docker run image:version #container 是基于 image的,执行image 默认latest,指定则加上 :version 即可
docker run -it image #交互式运行,进入标准输出里面,exit 退出则容器停止
docker container rm ID #根据ID删除conrainer
——————– Container 命令简写 ——————–
docker container ls -a === docker ps -a
docker container rm ID === docker rm ID
docker container ls -a | awk {‘print$1’} === docker container ls -aq #列举所有的container ID
docker rm $(docker container ls -aq) #删除所有的container
docker rm $(docker container ls -f “status=exited” -q) #删除所有状态是exited的容器
——————– 把Container commit 成一个Image ——————–
docker commit myMysql lw97/mysql-demo
——————– Dockerfile build 成一个Image ——————–
vim Dockerfile
FROM centos
RUN yum install -y vim
:wq
docker build -t lw97/centos-demo .
——————– Dockerfile 细节 ——————–
FROM scratch #制作base image
FROM centos #使用base image
FROM ubunut:14.04
尽量使用官方的image 作为base image 为了安全!
LABEL maintainer=”xxx@gmail.com”
LABEL version=”1.0″
LABEL description=”This is description”
LABEL 中 Metadata 不可缺少!
RUN : 执行命令并创建新的Image Layer
RUN yum update && yum install -y vim \ python-dev #反斜线换行
RUN apt-get update && apt-get install -y perl \ pwgen –no-install-recommends &&rm -rf \ /var/lib/apt/lists/* #注意清理cache
RUN /bin/bash/ -c ‘source $HOME/.bashrc;echo$HOME’
尽量利用&& 连接 如果太长建议\换行
WORKDIR /root
WORKDIR /test #如果没有test自动创建
WORKDIR demo
RUN pwd #输出结果 /test/demo
用WORKDIR 不要用RUN cd! 尽量使用绝对目录
ADD and COPY
ADD hello /
ADD test.tar.gz / #添加到根目录并解压
WORKDIR /root
ADD hello test/ #/root/test/hello
WORKDIR /root
COPY hell test/
ADD or COPY
大多数情况下,COPY优先于ADD !
ADD 除了COPY 之外还有其他的功能(解压)!
添加远程文件/目录请使用curl 或者 wget!
ENV MYSQL_VERISON 5.6 #设置常量
RUN apt-get install -y mysql-server=’${MYSQL_VERISON}’ \
&& rm -rf /var/lib/apt/lists/* # 引用常量
尽量使用ENV 增加可维护性
VOLUME and EXPOSE (存储和网络)
CMD : 设置容器启动后默认执行的命令和参数
ENTRYPOINT : 设置容器启动时运行的命令
CMD and ENTRPPOINT
—————– 命令的两种格式 Shell && Excel —————–
Shell 格式
RUN apt-get install -y vim
CMD echo “hello docker”
ENTRYPOINT echo “hello docker”
Excel 格式
RUN [“apt-get”,”install”,”-y”,”vim” ]
CMD [“/bin/echo”,”hello docker”]
ENTRYPOINT [“/bin/echo”,”hello docker”]
—————– 镜像发布 —————–
docker login
docker push lw97/centos-demo:1.0
https://hub.docker.com/
docker rmi
docker pull lw97/centos-test
—————– 搭建私有的镜像仓库 —————–
docker run -d -p 5000:5000 –restart always –name registry registry:2
telnet 47.100.252.38 5000
docker build -t 47.100.252.38:5000/centos-test .
———- 如果机器中没有telnet 命令
yum list telnet* 列出telnet相关的安装包
yum install telnet-server 安装telnet服务
yum install telnet.* 安装telnet客户端
———- 如果直接push这样是不可行的
docker push 47.100.252.38:5000/centos-test ,
错误如下:
Get https://47.100.252.38:5000/v2/: http: server gave HTTP response to HTTPS client
解决问题:
一、
sudo ls /etc/docker
vim daemon.json
{“insecure-registries”:[“47.100.252.38:5000”]}
:wq
二、
sudo vim /lib/systemd/system/docker.service
在[Service]中加入
EnvironmentFile=-/etc/docker/daemon.json
sudo service docker restart
现在即可:
docker push 47.100.252.38:5000/centos-test
成功!
帮助文档
https://docs.docker.com/registry/spec/api/
—————– 容器的操作 —————–
docker exec -it 容器ID /bin/bash #exec -it /bin/bash #交互式进入容器里面,执行/bin/bash命令
docker exec -it 容器ID ip a #这个容器的IP地址
docker stop 容器ID #停止容器
docker run -d –name=demo 47.100.252.38:5000/centos-test #-d 代表后台执行 –name 起别名
docker inspect 容器ID #查看容器详细信息
docker logs 容器ID #容器运行日志,便于调试
—————– Docker 持久化存储 和数据共享 —————–
数据持久化:Data Volume
Dockerfile 中指定 VOLUME[“/var/lib/mysql”]
docker run -v mysql:/var/lib/mysql
数据持久化:Bind Mouting
docker run -v /home/aaa:/root/aaa
—————– Docker Compose —————–
docker-compose.yml
版本:version 3
https://docs.docker.com/compose/compose-file/
安装 & 使用
在Mac 和 Windows上 安装docker的时候默认已经安装上Docker Compose
只有在Linux 是纯净的 需要自己安装
https://docs.docker.com/compose/install/
docker-compose –version #查看版本
docker-compose -f docker-compose.yml up === docker-compose up
docker-compose ps # 查看服务
docker-compose stop
docker-compose down #停止并且删除,并不删除image
docker-compose up -d #后台运行
docker-compose images #compose 里面的image
docker-compose exec [service] bash
docker-compose up –scale web=3 -d #水平扩展