docker使用备注

发布时间 2023-04-11 21:49:45作者: 头顶渐渐微凉

镜像构建

#基础镜像
FROM centos:centos7

#容器运行时用户
USER 0:0

#工作目录
WORKDIR /root/

#运行指令,可以设置多个
RUN echo "hello world"

#将本地资源、网络资源复制到镜像中,也可以使用COPY命令
ADD data .

#CMD表示容器启动时,将执行的命令,会被docker run 所带的指令所覆盖
CMD ping www.baidu.com

#ENTRYPOINT也表示容器启动将执行的命令,CMD指令至会作为其参数
ENTRYPOINT echo "hello entrypoint"

 镜像发布

#登录
docker login --username=xx 仓库地址

#编译
#-t 镜像仓库地址:版本号
#-f 镜像构建文件
docker build -t imageName -f dockerfile.yml

#上传镜像文件
docker push imageName

dockerfile.yml文件示例

#jenkins镜像构建
#2023-04-11
FROM centos:centos7.9.2009
USER 0:0
WORKDIR /root/
RUN ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ 
        && yum clean all && yum makecache \ 
        && yum install -y vim wget tree iproute net-tools tcpdump sysstat psmisc \ 
        lsof pv htop atop dstat nethogs nload iftop iotop mtr nc stress fio iperf \ 
        bc zip unzip telnet screen tmux sshpass mlocate lrzsz lftp ntpdate figlet \ 
        dialog autoconf automake gcc gcc-c++ subversion git lvm2 bash-completion  \
        createrepo mariadb iproute net-tools bind-utils dos2unix pigz jq python-netaddr expect \
        && yum clean all && rm -rf /var/cache/yum/*

#安装jdk1.8
RUN yum -y install java-1.8.0-openjdk.x86_64
#下载对应1.8版本的jenkins,此版本许多插件装不上,不再建议使用,建议使用jdk11或jdk17以上的jenkins版本 RUN wget
https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.346.1-1.1.noarch.rpm --no-check-certificate #ADD jenkins-2.346.1-1.1.noarch.rpm ./ RUN rpm -ivh jenkins-2.346.1-1.1.noarch.rpm RUN sed -i 's#User=jenkins#User=root#g' /usr/lib/systemd/system/jenkins.service RUN sed -i 's#Group=jenkins#Group=root#g' /usr/lib/systemd/system/jenkins.service RUN chown -R root:root /var/lib/jenkins RUN chown -R root:root /var/cache/jenkins RUN chown -R root:root /var/log/jenkins CMD bash

 

docker swarm使用

#初始化swarm
docker swarm init

#创建服务
#-c 构建服务的脚本文件
#stackName工作空间的名字
#--with-registry-auth,拉取最新镜像启动服务
docker stack deploy -c service.yml stackName --with-registry-auth

#工作空间查看
docker stack ls

#服务查看
docker service ls

#服务更新
docker service update --image imageName service.yml --with-registry-auth

 docker swarm service脚本示例

version: "3.7"
#============================
# Logging config section
x-logging:
  &default-logging
  options:
    max-size: '12m'
    max-file: '10'
  driver: json-file

#============================
# Network config section
networks:
  dockernet:
    driver: overlay
    attachable: true
  hostnet:
    external: true
    name: host

configs:
  timezone:
    file: /usr/share/zoneinfo/Asia/Shanghai

services:
  jenkins:
    image: jenkinsci/blueocean
    logging: *default-logging
    deploy:
      mode: replicated
      replicas: 1
      restart_policy:
        condition: on-failure
    networks:
      - dockernet
    ports:
      - "9081:8080"
    configs:
      - source: timezone
        target: /etc/localtime
        mode: 0444
    volumes:
      - type: bind
        source: /data/docker-volume/jenkins/data
        target: /var/jenkins_home
        read_only: false
      - type: bind
        source: /data/docker-volume/jenkins/docker.sock
        target: /var/run/docker.sock
        read_only: false