docker容器的操作步骤
docker小白的操作步骤~欢迎大神指正~转载请注明出处~
个人理解:
docker是一个让容器运行的环境,容器是一个个小的可移植的操作系统。我们以前的部署是在服务器上安装tomcat,用tomcat映射项目,但是我们如果想部署在另一台服务器上,就要把环境重新搭建一遍。使用docker后无需搭建系统,只需要复制镜像到另一台服务器,启动容器就可以了。以前部署时,tomcat停止再启动中间会有一段时间网页登录不了。使用docker后,我们可以先启动dockerB,启动好之后默默的替换dockerA,客户就不会感觉到系统在升级。(实现这个功能好像需要用到kubernetes,我还没有研究。)
一、安装docker
1、需求
Docker runs on CentOS 7.X.
Docker requires a 64-bit OS and version 3.10 or higher of the Linux kernel.
docker需安装在centos7以上版本的操作系统中。
docker需要64位操作系统和3.10或更高版本的Linux内核
2、禁用centos7的Firewalls 安装iptables(个人习惯)
参考:http://www.52codes.net/article/959.html
下面步骤摘自:http://www.centoscn.com/CentOS/config/2015/0620/5698.html
首先要停止 firewall 服务,输入下面的命令:
systemctl stop firewalld.service
然后要禁止 firewall 服务在系统启动的时候自动启动, 输入下面的命令:
systemctl disable firewalld.server
安装iptables 包,使用下面的命令:
yum install iptables-services
设置iptables 防火墙服务开机自动启动,输入下面的命令:
systemctl enable iptables
如果你想使用/etc/init.d/iptables save 命令来保存已经更改的防火墙策略,那么需要输入下面的命令,将iptables.init 脚本用刚才安装iptables 启动脚本覆盖,输入下面的命令:
/usr/libexec/iptables/iptables.init /etc/init.d/iptables
3、安装docker
查看你当前的内核版本 uname –r
如果内核版本不是3.0以上 可以使用如下升级内核教程:
http://blog.csdn.net/taiyang1987912/article/details/42744019
docker安装参考:https://docs.docker.com/engine/installation/linux/centos/
以下步骤摘自按照这个教程操作:http://www.linuxidc.com/Linux/2014-12/110034.htm
Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:
[root@localhost ~]# yum install docker
启动 Docker 服务
安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:
- [root@localhost ~]# service docker start
- [root@localhost ~]# chkconfig docker on
(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:
- [root@localhost ~]# systemctl start docker.service
- [root@localhost ~]# systemctl enable docker.service
)
二、下载镜像
docker相关命令参考:http://h2appy.blog.51cto.com/609721/1670017
可以查看仓库中的镜像:docker search centos
INDEX 仓库名
name 镜像名称
description 此镜像的描述信息
starts 被下载次数
下载镜像(以centos为例) docker pull [name]
查看现在存在的镜像 :docker images
三、创建镜像
两种方法:
方法一:命令行先创建一个容器再提交成镜像
docker run -it --name 'test' -v /opt/soft:/opt/soft 6759 /bin/bash
-v 把一个宿主机上的目录挂载到镜像里。冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。挂在后镜像内就可以共享宿主机里的文件了。
(挂载目录可以参考:https://my.oschina.net/piorcn/blog/324202)
--name 指定创建容器的名字
6759是镜像的ID 只输入前四位即可
进入这个容器,cd到/opt/soft这个目录下可以看到宿主机中的该目录下的文件。我们把安装包放在此目录下,容器中就可以安装了。
安装jdk、tomcat,可以将war包放在webapp下,也可以在tomcat的server.xml中映射解压后的war包。
安装好后输入 exit 即可退出。
docker ps –a 可以查看所有的容器
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
[OPTIONS]:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
[REPOSITORY[:TAG]]
REPOSITORY提交至哪一个仓库
TAG 相当于这个镜像的名称
提交镜像参考:http://blog.csdn.net/qq_28602957/article/details/53727993
方法二、dockerfile
Dockerfile是docker的编排文件,我们可以在Dockerfile文件中定义对容器编排的相关步骤
http://blog.csdn.net/rznice/article/details/52211620
eg:创建一个文件夹docker ,在文件夹中创建一个文件dockerfile
我已经事先创建了安装了jdk、tomcat的镜像,并且tomcat的映射项目路径也已经改好,所以From的镜像就是该CAM镜像。
FROM basic:cam
COPY /cam /opt/www/cam(复制与dockerfile在同一个文件夹下的项目至容器中的目录下)
ENV JAVA_HOME /usr/java/jdk1.8.0_91
ENV PATH $JAVA_HOME/bin:$PATH
ENTRYPOINT /opt/soft/apache-tomcat-8.0.28/bin/startup.sh && tail -F /opt/soft/apache-tomcat-8.0.28/logs/catalina.out(设置tomcat启动)
EXPOSE 8081(暴露容器的8081端口)
保存后建立镜像:
docker build -t container:cam -f /opt/docker/Dockerfile /opt
或者docker build -t container:cam .(不要忘记.)
(通过-f来指定Dockerfile文件的位置,后面的/soft及其目录下必须能够找到Dockerfile文件否则就会报上下文环境的错误。
四、创建容器
docker run -d -p 8081:8081 --name cam container:cam
-p 建立宿主机与容器的端口映射
--name 给容器起个别名
如果是按照上述dockerfile创建的容器 直接run一个容器后tomcat就自启动了
否则需要命令行进入容器
推荐使用 docker exce –it [ID] /bin/bash 进入容器
使用 docker attach进入容器有时会卡死或者退出时ports也断了。
docker start 开启一个停止的容器
docker stop 停止一个运行的容器。
docker ps 可以查看端口映射中的容器
五、集成Jenkins
Jenkins上是有docker这个插件的 但是我还没有研究 现在是使用命令行运行容器
思路就是:
关闭运行中的容器
删除容器
删除镜像
dockerfile创建镜像(这样更新后的项目文件夹就copy到镜像中了)
创建容器