docker

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容器间共享数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值