docker安装
网址: https://docs.docker.com/
镜像地址 hum.docker .com
卸载已安装的Docker和关闭防火墙和selinux
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
systemctl disable firewalld.service && systemctl stop firewalld.service
sed -i 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config
配置阿里云Docker Yum源
安装Docker依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Use Aliyun Docker
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装指定版本Docker
查看docker版本
yum list docker-ce --showduplicates | grep -E -v 'plugins:|mirror|base:|extras:|updates:|Packages'|awk '{print $2}'
yum install -y docker-ce-18.03.1.ce-1.el7.centos
启动docker和设置开机自启动
systemctl start docker && systemctl enable docker
常用命令
docker version 版本
docker pull 镜像名<:tags> - 从远程仓库抽取镜像
docker images - 查看本地镜像
docker run 镜像名<:tags> - 创建容器,启动应用 -d后台运行 -p 端口映射 8080宿主机端口8001容器端口
docker run -d -p 8080:8001 tomcat
docker ps - 查看正在运行中的镜像
docker stop 停止容器
docker inspect 容器详细信息
docker network ls 网络信息
docker rm <-f> 容器id - 删除容器
docker rmi <-f> 镜像名:<tags> - 删除镜像
在容器中执行命令
格式:docker exec [-it] 容器id 命令
exec 在对应容器中执行命令
-it 采用交互方式执行命令
例:docker exec -it 0738ed2fe68b /bin/bash
Dockerfile 镜像描述文件
Dockerfile是一个包含用于组合镜像的命令的文本文档
Docker通过读取Dockerfile中的指令按步自动生成镜像
docker build -t 机构/镜像名<:tags> Dockerfile目录
Dockerfile
FROM tomcat:latest
MAINTAINER 123.com
WORKDIR /usr/local/tomcat/webapps
ADD docker-web ./docker-web
LABEL & MAINTAINER - 说明信息
MAINTAINER 123.com
LABEL version = "1.0"
LABEL description = "123"
WORKDIR 切换工作目类,如果目类不存在创建
WORKDIR /usr/local
WORKDIR /usr/local/newdir #自动创建
尽量使用绝对路径
ADD/COPY 将目录下的所有文件复制到容器目录
ADD hello / #复制到根路径
ADD test.tar.gz / #添加根目录并解压
ADD 除了复制,还具备添加远程文件功能
ENV 环境变量
ENV JAVA_HOME /usr/local/openjdk8
RUN ${JAVA_HOME}/bin/java -jar test.jar
尽量使用环境常量,可提高程序维护性
EXPOSE - 暴露容器端口
将容器内部端口暴露给物理机
EXPOSE 8080
docker run -p 8000:8080 tomcat
RUN & CMD & ENTRYPOINT
RUN : 在Build构建时执行命令
RUN yum install -y vim #Shell 命令格式
使用Shell执行时,当前shell是父进程,生成一个子shell进程
在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。
RUN ["yum","install","-y","vim"] #Exec命令格式
使用Exec方式,会用Exec进程替换当前进程,并且保持PID不变
执行完毕,直接退出,并不会退回之前的进程环境
ENTRYPOINT : 容器启动时执行的命令
ENTRYPOINT(入口点)用于在容器启动时执行命令
Dockerfile中只有最后一个ENTRYPOINT会被执行
ENTRYPOINT ["ps"] #推荐使用Exec格式
CMD : 容器启动后执行默认的命令或参数
CMD用于设置默认执行的命令
如Dockerfile中出现多个CMD,则只有最后一个被执行
如容器启动时附加指令,则CMD被忽略
CMD ["ps" , "-ef"] #推荐使用Exec格式
Dockerfile构建redis
Dockerfile
FROM centos
RUN ["yum" , "install" , "-y" ,"gcc","gcc-c++","net-tools","make"]
WORKDIR /usr/local
ADD redis-4.0.14.tar.gz .
WORKDIR /usr/local/redis-4.0.14/src
RUN make && make install
WORKDIR /usr/local/redis-4.0.14
ADD redis-6379.conf .
EXPOSE 6379
CMD ["redis-server","redis-6379.conf"]
redis-6379.conf
port 6379
bind 0.0.0.0
容器间link单项通信
bridge网桥双向通信
volume容器间数据共享
通过设置-v挂载宿主机目录
docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
docker run --name web2 -t /usr/webapps:/usr/local/tomcat/webapps tomcat
通过--volumes-from 共享容器内挂载点
创建共享容器
docker create --name webpage
-v /webapps:/tomcat/webapps tomcat /bin/true
共享容器挂载点
docker run --volumes-from webpage --name web3 -d tomcat
Docker Compose
安装DockerCompose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
文件夹授权
sudo chmod +x /usr/local/bin/docker-compose
查看版本
$ docker-compose --version
docker-compose version 1.27.4, build 1110ad01
常用命令
chnsadsdasdaDocker Compo
命令 | 解释 |
---|---|
compose build | (构建yml中某个服务的镜像) |
compose ps | (查看已经启动的服务状态) |
compose kill | (停止某个服务) |
compose logs | (可以查看某个服务的log) |
compose port | (打印绑定的public port) |
compose pull | (pull服务镜像) |
compose up | (启动yml定义的所有服务) |
compose stop | (停止yml中定义的所有服务) |
compose start | (启动被停止的yml中的所有服务) |
compose kill | (强行停止yml中定义的所有服务) |
compose rm | (删除yml中定义的所有服务) |
compose restart | (重启yml中定义的所有服务) |
compose scale | (扩展某个服务的个数,可以向上或向下) |
compose migrate-to-labels | (这个没有实际尝试。根据介绍是将服务从1.2迁移到1.3带labels的版本。docker之前不支持label) |
compose version | (查看compose的版本) |
docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
r Compose
DDocker Composeocker Compose
VVoDocker Compose
通过设置-v挂载宿主机目录
格式:
docker run --name 容器名 -v 宿主机路径:容器内挂载路径 镜像名
lume容器间共享数据olume容器间共享数据
Volume容器间共享数据
vlvolVolume容器间共享数据Volume容器间共享数据Vol
ume容器间共享数据