docker教程


docker教程

k8s

安装

执行安装命令

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

修改存储位置

systemctl stop docker.service
cp -R /var/lib/docker/ /data

修改docker.service配置文件,在EXECStart的后面增加 --graph=/data/docker(修改后的docker存储路径)。

vim /usr/lib/systemd/system/docker.service
内容:
ExecStart=/usr/bin/dockerd --graph=/data/docker

docker更换阿里镜像源

方法如下:

进入地址https://cr.console.aliyun.com/
点击左侧 镜像加速 生成个人专属加速地址
执行命令 vim /etc/docker/daemon.json,加入如下json内容

{
“registry-mirrors”: [“https://xxxxx.mirror.aliyuncs.com”]
}
sudo systemctl daemon-reload
sudo systemctl restart docker

dockerfile命令

WORKDIR

用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。

VOLUME

卷用于容器中的数据持久化到物理机器上,卷物理机上默认位置(/var/lib/docker/volumes);

创建卷

docker run --name node1 -h nodex -v /home/upload/:/data -d -i -t centos /bin/bash

通过docker run命令的-v标识创建的挂载点只能对创建的容器有效
其中的 -v 标记 在容器中设置了一个挂载点 /data(就是容器中的一个目录),并将主机上的 /home/upload/ 目录中的内容关联到 /data下。

这样在容器中对/data目录下的操作,还是在主机上对**/home/upload/**的操作,都是完全实时同步的,因为这两个目录实际都是指向主机目录。

通过docker inspect 命令查看目录对应关系

有几点需要注意

1.host机器的目录路径必须为全路径(准确的说需要以/或~/开始的路径),不然docker会将其当做volume而不是volume处理
2.如果host机器上的目录不存在,docker会自动创建该目录
3.如果container中的目录不存在,docker会自动创建该目录
4.如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉

容器共享卷

创建另一个容器可以和node3共享 /data1 和 /data2卷 ,这是在 docker run中使用 --volumes-from标记,如:

 docker run --name node4 -itd --volumes-from node3 centos /bin/bash
 node3 为容器的名子
--volumes-from表示当前创建的容器与容器名子node3的共享卷 

Dockerfile中的VOLUME

通过docker run命令的-v标识创建的挂载点只能对创建的容器有效。

通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。

还有一个区别是,通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。

FROM centos
MAINTAINER djl
VOLUME ["/data1","/data2"]

其他命令

生成镜像
docker build -t test .
查看镜像
docker images
查看容器详细
docker inspect

例子

制作nginx

制作fastdfs

FROM alpine:3.11

MAINTAINER shenggangshu <shenggangshu7276@qq.com>

ENV HOME /root
#切换阿里云镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
#安装准备
RUN apk update \
    && apk add --no-cache  git gcc g++ make automake autoconf libtool pcre pcre-dev zlib zlib-dev openssl-dev wget vim 


#下载fastdfs.libfastcommon.nginx插件源码
RUN cd /root \
    && git clone https://gitee.com/fastdfs100/libfastcommon.git --depth 1 \
    && git clone https://gitee.com/fastdfs100/fastdfs.git --depth 1 \
    && wget http://nginx.org/download/nginx-1.15.4.tar.gz \
    && git clone https://gitee.com/fastdfs100/fastdfs-nginx-module.git --depth 1

 # 安装libfastcommon
 RUN cd ${HOME}/libfastcommon/ \
    && ./make.sh  \
    && ./make.sh install

# 安装fastdfs
RUN cd ${HOME}/fastdfs/ \
    && ./make.sh \
    && ./make.sh install \
    && cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf \
    && cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf \
    && cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf \
    && cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ \
    && cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ \
    && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/tracker|g" /etc/fdfs/tracker.conf \
    && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/storage.conf \
    && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/client.conf

# 获取nginx源码
RUN cd ${HOME} \
    && tar -zxvf nginx-1.15.4.tar.gz  \
    && cd nginx-1.15.4/ \
    && ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/ \
    && make \
    && make install

# 设置nginx和fastdfs联合环境,并配置nginx
RUN cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs \
    && sed -i "s|^store_path0.*$|store_path0=/var/local/fdfs/storage|g" /etc/fdfs/mod_fastdfs.conf \
    && sed -i "s|^url_have_group_name =.*$|url_have_group_name = true|g" /etc/fdfs/mod_fastdfs.conf \
    && cd ${HOME}/fastdfs/conf/ \
    && echo -e "\
    events {\n\
        worker_connections  1024;\n\
    }\n\
    http {\n\
        include       mime.types;\n\
        default_type  application/octet-stream;\n\
        server {\n\
            listen 8888;\n\
            server_name localhost;\n\
            location ~ /group[0-9]/M00 {\n\
                ngx_fastdfs_module;\n\
            }\n\
        }\n\
    }">/usr/local/nginx/conf/nginx.conf

# 清理文件
RUN rm -rf ${HOME}/*

# 配置启动脚本,在启动时中根据环境变量替换nginx端口、fastdfs端口
# 默认nginx端口
ENV WEB_PORT 8888
# 默认fastdfs端口
ENV FDFS_PORT 22122

# 创建启动脚本
RUN     echo -e "\
mkdir -p /var/local/fdfs/storage/data /var/local/fdfs/tracker; \n\
ln -s /var/local/fdfs/storage/data/ /var/local/fdfs/storage/data/M00; \n\n\
sed -i \"s/listen\ .*$/listen\ \$WEB_PORT;/g\" /usr/local/nginx/conf/nginx.conf; \n\
sed -i \"s/http.server_port=.*$/http.server_port=\$WEB_PORT/g\" /etc/fdfs/storage.conf; \n\n\
if [ \"\$IP\" = \"\" ]; then \n\
    IP=`ifconfig eth0 | grep inet | awk '{print \$2}'| awk -F: '{print \$2}'`; \n\
fi \n\
sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/client.conf; \n\
sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/storage.conf; \n\
sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/mod_fastdfs.conf; \n\n\
/etc/init.d/fdfs_trackerd start; \n\
/etc/init.d/fdfs_storaged start; \n\
/usr/local/nginx/sbin/nginx; \n\
tail -f /usr/local/nginx/logs/access.log \
">/start.sh \
&& chmod u+x /start.sh

# 暴露端口。改为采用host网络,不需要单独暴露端口
# EXPOSE 80 22122

ENTRYPOINT ["/bin/bash","/start.sh"]


docker-compose.yaml配置

version: '3.0'
services:
  fastdfs:
    build: .
    image: haloo/fastdfs:5.11
    # 该容器是否需要开机启动+自动重启。若需要,则取消注释。
    #restart: always
    container_name: fastdfs
    environment:
    # nginx服务端口
    - WEB_PORT=80
    # docker所在主机的IP地址
    - IP=192.168.2.222
    volumes:
    # 将本地目录映射到docker容器内的fastdfs数据存储目录,将fastdfs文件存储到主机上,以免每次重建docker容器,之前存储的文件就丢失了。
    - ${HOME}/docker-data/fdfs:/var/local/fdfs
    # 使docker具有root权限以读写主机上的目录
    privileged: true
    # 网络模式为host,即直接使用主机的网络接口
    network_mode: "host"

制作JAVA

docker pull ggss/alpine-jdk8u74

制作微服务

制作mysql

制作rocketmq

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁晓山(ben)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值