参考书籍:《Docker技术入门与实战.pdf》《第一本DOCKER书.pdf》。推荐《第一本DOCKER书.pdf》。
- Docker适用范围
参考链接:https://www.cnblogs.com/163yun/p/9626706.html
总结:Docker的推广必须借助与开发人员的接入,单纯的运维人员介入,实际的工作量是很大的。Docker适用分布式服务,微服务架构,跑一次性/定时任务。(模糊理解:需要使用虚拟机的场景,虚拟机开销大,docker可以实现替换虚拟的的作用)。一个镜像就是一个服务,多个镜像进行服务配置,端口映射等进行系统组装。前期配置的工作量是比较大的,后续就只需要修改dockerfile,发布镜像,启动镜像等简单命令(系统简单的化,本人觉得直接用Jenkins进行脚本级的部署还要好一点)(复杂环境用docker才能体现它的特定,否则只能视为一个虚拟机,有些情况下还没有虚拟机好使用) - 工作流程
制作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 .
- 其余知识
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