[置顶] Docker笔记
2015-12-28 11:48
701 查看
参考文档
① Docker的安装和镜像创建
② Docker的save和export命令的区别
③ 如何在 Fedora 22 上面配置 Apache 的 Docker 容器
一、一个故事
很久以前,有个小小的程序员维护着一台小小的服务器。这个小小的服务器里面运行着一个小小的程序。这个小小的程序有依赖其他很多小小的程序。每当夜幕降临,小小的程序员都担心别人把服务器别人把小小的服务器或者小小的程序依赖的其他小小程序改动了,他那个小小的程序便无法运行了。小小的程序员难以成眠。每次转移、升级,小小的程序员小小的心脏都要蹦出来。
终于,有一天小小的程序员倒下了,灵魂飘忽到一座小小的岛上。小小的岛上住着一个大大的大牛。大大的大牛听说了小小的程序员小小的故事,十分悲伤。大大的大牛开发了docker,并在小小的岛上发着小小的心愿,愿天下程序员不再有悲伤,难过。
二、Docker安装
内核要求3.8+,推荐ubuntu 14.04+。
ubuntu环境
fedora环境
权限配置
默认docker是需要root权限运行。对于笔者来说,每次都要输入sudo和用户密码,这是不可以接受的。将用户附加到组docker即可拥有运行权限。添加命令如下:
三、Docker镜像
pull方式
模板方式
模板下载地址
build方式
Dockerfile模板
build命令
成果检查
四、Docker运行
普通方式
简单的运行镜像docker.io/ubuntu:14.04,并以bash方式进入命令行。
端口映射
运行镜像opm:14.04,并将主机的8080映射到容器里面的80端口,将主机的~/Workspace/OPM/opm目录挂载到容器里面的/root/opm,并以zsh方式进入命令行。
设备映射
或者
对于deepin 2015系统,需要手动创建loop节点。命令如下
更多运行方式可以
五、镜像提交
镜像运行的过程中,可以通过
提交后可以通过
六、镜像保留
导出模板
通过
镜像保存
七、其他应用
tomcat
项目主页
gogs
项目主页
① Docker的安装和镜像创建
② Docker的save和export命令的区别
③ 如何在 Fedora 22 上面配置 Apache 的 Docker 容器
一、一个故事
很久以前,有个小小的程序员维护着一台小小的服务器。这个小小的服务器里面运行着一个小小的程序。这个小小的程序有依赖其他很多小小的程序。每当夜幕降临,小小的程序员都担心别人把服务器别人把小小的服务器或者小小的程序依赖的其他小小程序改动了,他那个小小的程序便无法运行了。小小的程序员难以成眠。每次转移、升级,小小的程序员小小的心脏都要蹦出来。
终于,有一天小小的程序员倒下了,灵魂飘忽到一座小小的岛上。小小的岛上住着一个大大的大牛。大大的大牛听说了小小的程序员小小的故事,十分悲伤。大大的大牛开发了docker,并在小小的岛上发着小小的心愿,愿天下程序员不再有悲伤,难过。
二、Docker安装
内核要求3.8+,推荐ubuntu 14.04+。
ubuntu环境
sudo apt-get install docker docker.io
fedora环境
sudo dnf install docker
权限配置
默认docker是需要root权限运行。对于笔者来说,每次都要输入sudo和用户密码,这是不可以接受的。将用户附加到组docker即可拥有运行权限。添加命令如下:
sudo usermod -a -G docker zhouyixing
三、Docker镜像
pull方式
sudo docker pull ubuntu:14.04
模板方式
模板下载地址
cat ubuntu-14.04-x86-minimal.tar.gz | sudo docker import - ubuntu:14.04
build方式
Dockerfile模板
FROM scratch # https://partner-images.canonical.com/core/ ADD ubuntu-trusty-core-cloudimg-amd64-root.tar.gz / # a few minor docker-specific tweaks # see https://github.com/docker/docker/blob/master/contrib/mkimage/debootstrap RUN echo '#!/bin/sh' > /usr/sbin/policy-rc.d \ && echo 'exit 101' >> /usr/sbin/policy-rc.d \ && chmod +x /usr/sbin/policy-rc.d \ \ && dpkg-divert --local --rename --add /sbin/initctl \ && cp -a /usr/sbin/policy-rc.d /sbin/initctl \ && sed -i 's/^exit.*/exit 0/' /sbin/initctl \ \ && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \ \ && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \ && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \ && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \ \ && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \ \ && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes # enable the universe RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list # overwrite this with 'CMD []' in a dependent Dockerfile CMD ["/bin/bash"]
build命令
sudo docker build -f Dockerfile -t desay:14.04.3
成果检查
zhouyixing@vmach ~ % sudo docker images 15-12-28 11:08 [sudo] zhouyixing 的密码: REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE opm 14.04 0e30db633767 About an hour ago 520.9 MB docker.io/ubuntu 14.04 89d5d8e8bafb 2 weeks ago 187.9 MB
四、Docker运行
普通方式
sudo docker run -i -t docker.io/ubuntu:14.04 /bin/bash
简单的运行镜像docker.io/ubuntu:14.04,并以bash方式进入命令行。
端口映射
sudo docker run -it --rm -p 8080:80 -v ~/Workspace/OPM/opm:/root/opm opm:14.04 /bin/zsh
运行镜像opm:14.04,并将主机的8080映射到容器里面的80端口,将主机的~/Workspace/OPM/opm目录挂载到容器里面的/root/opm,并以zsh方式进入命令行。
设备映射
sudo docker run -it --hostname=docker --user=desay --device=/dev/loop0:/dev/loop0 --cap-add SYS_ADMIN desay:14.04.3 /bin/zsh
或者
sudo docker run -it --rm=true --hostname=docker --user=desay --privileged=true --cap-add SYS_ADMIN -v ~/openwrt:/home/desay/openwrt -v ~/packages:/home/desay/openwrt/dl -w /home/desay/openwrt desay:14.04.3 /bin/bash
对于deepin 2015系统,需要手动创建loop节点。命令如下
sudo mknod /dev/loop0 b 7
更多运行方式可以
docker --help以及
docker run --help查询。
五、镜像提交
镜像运行的过程中,可以通过
sudo docker ps -a命令确定CONTAINER ID。通过以下命令提交。
sudo docker commit <CONTAINER ID> > tag:commit
提交后可以通过
sudo docker images会看到新提交的images
六、镜像保留
导出模板
通过
sudo docker ps -a命令确定CONTAINER ID。通过以下命令导出。
sudo docker export <CONTAINER ID> > ~/export.tar.gz
镜像保存
sudo docker save <REPOSITORY> > /home/save.tar
七、其他应用
tomcat
项目主页
# 安装 docker pull tomcat # 运行 docker run -p 8080:8080 -v tomcat:latest # 其他 # 对于笔者来说,笔者仅仅想要一个web server。 # ${WEB_APP_PATH}为web存放路径,首页命名为index.html(或者index.jsp)即可。 # 浏览器登陆http://localhost:8080/可验证 docker run -p 8080:8080 -v ${WEB-APP}:/usr/local/tomcat/webapps/ROOT tomcat:latest
gogs
项目主页
# 安装 docker pull gogs/gogs # 建立gogs目录 sudo mkdir /gogs # 运行 # 注意到/gogs的权限是root。对于笔者来说,git服务器需要开机即运行。所以笔者不会有权限问题。 # 将以下命令添加到/etc/profile文件即可。 # 10080为网页访问端口。10022为ssh clone端口。 docker run --rm=true -p 10022:22 -p 10080:3000 -v /gogs:/data gogs/gogs
相关文章推荐
- What Docker?简介
- Dockerfile制作Docker镜像
- Docker命令详解
- Docker学习笔记(一)
- Docker认识理解之路
- Docker介绍与安装使用(一)
- DICOM:docker实现DICOM服务虚拟化
- [Docker] - 制作你自己的镜像
- Docker安装使用笔记
- 我的第一个docker镜像
- Mac OS X Install Docker
- Docker学习总结(4)——Docker镜像与容器命令
- Docker学习总结(4)——Docker镜像与容器命令
- Docker镜像与容器命令
- [Docker] - 如何发现和运行自己需要的Image(镜像)
- [Docker] - 理解镜像和容器 - Understanding images&container
- [Docker] - 安装Docker
- Docker 从零开始制作基础镜像[centos]
- Centos上Docker 使用dockerfile构建容器实现ssh
- Docker 1.9.1 源码编译