docker构建_基础知识总结

本文介绍了Docker的适用范围,强调其在分布式服务和微服务架构中的作用,以及作为虚拟机替代方案的优势。通过Dockerfile制作镜像,经过build、push/pull流程来部署服务。提到了常用Docker命令,并概述了docker-machine、docker-compose和docker-swarm三大技术,以及Docker容器间的网络连接。

参考书籍:《Docker技术入门与实战.pdf》《第一本DOCKER书.pdf》。推荐《第一本DOCKER书.pdf》。

  1. Docker适用范围
    参考链接:https://www.cnblogs.com/163yun/p/9626706.html
    总结:Docker的推广必须借助与开发人员的接入,单纯的运维人员介入,实际的工作量是很大的。Docker适用分布式服务,微服务架构,跑一次性/定时任务。(模糊理解:需要使用虚拟机的场景,虚拟机开销大,docker可以实现替换虚拟的的作用)。一个镜像就是一个服务,多个镜像进行服务配置,端口映射等进行系统组装。前期配置的工作量是比较大的,后续就只需要修改dockerfile,发布镜像,启动镜像等简单命令(系统简单的化,本人觉得直接用Jenkins进行脚本级的部署还要好一点)(复杂环境用docker才能体现它的特定,否则只能视为一个虚拟机,有些情况下还没有虚拟机好使用)
  2. 工作流程
    制作Dockerfile–>docker build(编译成镜像)–>push到镜像存储服务器/pull到部署服务器–>启动服务
    附上常用命令:
FROM ubuntu:18.04  #引用初始镜像,命令FROM
LABEL maintainer="james@example.com"  ##为自己的镜像打上标签,以便后续查找及维护
ENV DEBIAN_FRONTEND noninteractive   ##在使用apt-get安装依赖时并非静默安装,需要交互,所以无法正常通过,用这条命令可以解决这个问题

RUN apt-get -qq update  ## 执行更新apt-get 的命令
RUN apt-get -qq install tomcat8 default-jdk  ##通过apt-get 安装tomcat

ENV CATALINA_HOME /usr/share/tomcat8  ##设置环境变量,在后续的文件种使用
ENV CATALINA_BASE /var/lib/tomcat8
ENV CATALINA_PID /var/run/tomcat8.pid
ENV CATALINA_SH /usr/share/tomcat8/bin/catalina.sh
ENV CATALINA_TMPDIR /tmp/tomcat8-tomcat8-tmp

RUN mkdir -p $CATALINA_TMPDIR  

VOLUME [ "/var/lib/tomcat8/webapps/" ]  ##挂载文件的路径设置,该路径是在容器外可见的,而不需要进入容器内部查看

EXPOSE 8080  ##对外暴露的端口号

ENTRYPOINT [ "/usr/share/tomcat8/bin/catalina.sh", "run" ]  ##启动镜像时执run **.sh脚本的命令
sudo docker built -t name:V1.0.0  ##镜像名称:版本号
sudo docker run -d -p 端口号 --name 镜像名称:版本号    ##启动服务,不同服务,命令不同
sudo docker exec -ti 容器ID /bin/bash  ##进入到容器内部
sudo docker stop/rm 容器ID  ##停止/删除容器服务
sudo docker images  ##查看镜像
sudo docker ps  ##查看运行种的容器
sudo docker push/pull  ##上传或者下拉镜像
sudo docker login -u=用户名 -p=密码  ##登录docker_hub
sudo docker top 进程ID ##查看容器具体的运行情况
sudo docker search 镜像名称 -s 次数  ##查找开源镜像,指定超过mark次数的
可能会涉及到的服务安装命令
Busybox:集成了100多个常用Linux命令的软件工具箱。
sudo docker search busybox
sudo docker pull busybox
sudo docker run -it busybox
ssh :commit创建支持ssh服务的镜像
1:ubuntu 命令安装
sudo docker run -it ubuntu:18.04 /bin/bash  ##进入容器内部
apt-get update  ##
apt-get install openssh-server
mkdir -p /var/run/sshd
/usr/sbin/sshd -D & ##启动服务
netstat -tunlp ##查看状态
sed -ri 's/session required pam_loginuid.so/#session reqiured pam_loginuid.so/g' /ect/pam.dsshd  ##取消登录限制
mkdir root/.ssh
ssh -keygen -t rsa 等命令
配置完成后设置脚本 run.sh 
【#!/bin/bash】  /usr/sbin/sshd -D
sudo docker commit fcl sshd:ubuntu ##退出容器,用commit命令保存一个新的sshd:ubuntu的镜像
sudo docker run -p 10022:22 -d sshd:ubuntu /run.sh

ssh Dockerfile 创建镜像:

mkdir sshd_ubunru
cd sshd_ubuntu 
touch Dockerfile run.sh
编辑run.sh 
[#!/bin/bash /usr/sbin/sshd -D]
编辑Dokcerfile
FROM ubuntu:18.04
LABEL maintainer="james@example.com" 
ENV DEBIAN_FRONTEND noninteractive 
RUN apt-get -qq update  ## 执行更新apt-get 的命令
RUN apt-get -qq install -y openssh-server
RUN mkdir -p /var/sshd
RUN mkdir -p /root/.ssh
ADD anthorized_keys /roo/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
EXPOSE22
CMD ["/run.sh"] ##设置自启动命令
在宿主主机上生成ssh密钥:
ssh-keygen -t rsa 
cat ~/.ssh/id_rsa.pub > authorized_keys
创建镜像:
cd sshd_ubuntu
sudo docker build -t sshd:ubuntu:V1.0.0 .
  1. 其余知识
    docker三大技术:
    docker-machine,
    docker-compose,
    docker-swarm
    容器之间的网络连接(Docker-Networking):
sudo docker network create app 创建网络
sudo docker network ls
sudo docker run -d --net=app --name 启动服务名称 镜像名称 ##指定容器在哪一个网络种运行

相关参考连接:
1:https://www.jianshu.com/p/0e231a928ee6
2:https://github.com/vonzhou/dockerbook_code
3:https://www.cnblogs.com/qixidi/p/10245696.html
4:https://blog.youkuaiyun.com/qq_35904833/article/details/80662683
5:https://blog.youkuaiyun.com/sky_jiangcheng/article/details/80309176
6:https://www.cnblogs.com/yufeng218/p/8370670.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值