还我漂漂机--docker的艺术

早就听闻docker之名,能带来怎么怎么好,一直没有使用。如今来研究研究它,那么docker是什么有什么用呢?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发

布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,以上是百度百科的解释。

那么说说我理解的docker,docker是容器有点类似于虚拟机,docker里面可以放很多程序。

那么我们可以做什么呢,我们在写程序的时候配置环境是最烦人的,什么python2,python3,java系的各种配置环境;

还有安装各种开发软件。当你后来不需要他们卸掉的时候,电脑里有可能有各种程序的残留。

残念

如果能把这些东西都放入docker中,我的系统保持不变,然而所有的软件为我所用。我的电脑什么都没有,借各种软件为我所用,有种本来无一物,何处惹尘埃的禅意。

安装docker

关闭 selinux

输入selinux 0是临时关闭,重启后selinux又由处于开启状态

永久关闭selinux可以使用vi命令打开/etc/sysconfig/selinux 文件将SELINUXTYPE=(disable或permissive)

使用DaoCloud的安装脚本

curl -sSL https://get.daocloud.io/docker | sh
systemctl start docker 启动
systemctl enable docker 设置开机启动

安装完成后,国内访问 Docker Hub 有时会遇到困难,可以配置镜像加速。

推荐阿里云加速镜像和163的,DaoCloud我用的比较慢。

以下地址需登录

阿里云docker安装及加速

https://cr.console.aliyun.com/#/accelerator

163镜像

https://c.163.com/hub#/m/home/

docker官网中文也有加速了,我没有试过,有兴趣的可以试试

https://www.docker-cn.com/registry-mirror

常用的docker命令


docker images   查看本地镜像
docker ps       正在使用的docker
docker ps -a    没有在使用的docker

docker rmi xx 删除镜像

docker run -it centos /bin/bash 进入生成新的容器

docker exec -it xx bash 进入已经有的容器

docker run --name my-web -d -p 8080:80 mynginx 打开容器8080端口映射80 docker run --name my-web -d -p 8080:80 -v /etc/docker/mynginx/nginx/conf:/etc/nginx/conf.d mynginx 打开容器8080端口映射80

docker stop xx 停止容器 docker rm -v xx 删除容器

docker build xx . 构造镜像

 docker logs xx(容器id) 查看日志

我的构建

nginx的Dockerfile文件

图例


代码

FROM centos
RUN yum -y update 
&& echo -e '[nginx]\nname=nginx repo\nbaseurl=https://nginx.org/packages/centos/$releasever/$basearch/\ngpgcheck=0\nenabled=1 ' > /etc/yum.repos.d/nginx.repo
&& yum -y install nginx
&& yum clean all EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
构建命令
docker build -t nginx

构建火狐的Dockerfile文件

图例

代码

FROM centos
RUN yum -y update && yum  -y install  firefox && 
export uid=1000 gid=1000 &&
mkdir -p /home/developer &&
mkdir -p /etc/sudoers.d/ &&
systemd-machine-id-setup &&
echo "developer❌${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd &&
echo "developer❌${uid}:" >> /etc/group &&
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer &&
chmod 0440 /etc/sudoers.d/developer &&
chown ${uid}:${gid} -R /home/developer USER developer ENV HOME /home/developer CMD /usr/bin/firefox

构建命令
docker build -t firefox
执行火狐镜像
docker run -ti --rm 
-e DISPLAY=$DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix
firefox

理想状态

我的理想状态是把eclipse、maven、java等组装成docker的状态,
好吧,目前还是没有达到我理想的状态,挖了个坑。
人生的成长就想一台电脑一样,一开始什么都没有,后来学习了java、python和go等各种语言,
然后又装了各种软件,知道的东西越来越多了,可是突然发现你还是你吗,生活中有一种docker的东西吗
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃

参考地址

http://www.aizhuanji.com/a/rw02dqQW.html

http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/

http://www.runoob.com/docker/docker-tutorial.html

https://docs.docker-cn.com/       docker官网中文地址

暂无评论
发表新评论