docker容器的操作步骤

docker小白的操作步骤~欢迎大神指正~转载请注明出处~

2017-10-18增加以前看过的一个网址:http://blog.sae.sina.com.cn/archives/2896


个人理解:

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

查看系统版本: cat /etc/redhat-release

查看你当前的内核版本  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 服务,并将其设置为开机启动:

  1. [root@localhost ~]# service docker start
  2. [root@localhost ~]# chkconfig docker on

(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:

  1. [root@localhost ~]# systemctl start docker.service
  2. [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 login 仓库地址  (或直接 docker login -u 用户名 -p  密码  仓库地址)

上传步骤

1. 首先将要上传的镜像打tag  

比如原镜像叫  repository/test1  上传仓库后叫tes2 

docker tag  repository/test1   仓库地址/test2 


2.上传  

因为已经登陆了仓库  所以直接push

docker push 仓库地址/test2 


五、创建容器

docker run -d -p 8081:8081 --name cam container:cam

 

-p 建立宿主机与容器的端口映射  

--name 给容器起个别名

 

如果是按照上述dockerfile创建的容器 直接run一个容器后tomcat就自启动了

否则需要命令行进入容器

推荐使用 docker exec  –it  [ID] /bin/bash 进入容器

使用 docker attach进入容器有时会卡死或者退出时ports也断了。

docker start 开启一个停止的容器

docker stop 停止一个运行的容器。

docker ps 可以查看端口映射中的容器

 

 

六、集成Jenkins

Jenkins上是有docker这个插件的  但是我还没有研究  现在是使用命令行运行容器

思路就是:

     关闭运行中的容器

     删除容器

     删除镜像

     dockerfile创建镜像(这样更新后的项目文件夹就copy到镜像中了)

     创建容器







摘自:http://h2appy.blog.51cto.com/609721/1670017

docker命令的使用

查看容器挂载目录

$ docker inspect container_name | grep Mounts -A 20

    1、直接输入docker命令来查看所有的Options和Commands。

    查看某一个command的详细使用方法:docker COMMAND --help


    2、搜索可用的docker镜像:docker search NAME


    3、下载镜像:docker pull NAME[:TAG]

    比如获取最新的centos镜像:docker pull centos:latest

    注意:这里要写用docker search搜索到的完整的镜像名。
    4、查看安装的镜像:docker images [NAME]

wKiom1R1c7LgL0uwAADPCgcMWqw663.jpg

    5、在docker容器中运行命令:docker run IMAGE [COMMAND] [ARG...]

    docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。

    注意:IMAGE=REPOSITORY[:TAG],如果IMAGE参数不指定镜像的TAG,默认TAG为latest。

    在刚刚下载的镜像中输出"hello word":docker run centos echo 'hello world!'wKiom1R1c3fj6XQFAABqRD8XV6o479.jpg

    6、列出容器:docker ps -a

    查看最近生成的容器:docker ps -l

    查看正在运行的容器:docker ps

    7、显示容器的标准输出:docker logs CONTAINERID

    无需拷贝完整的id,一般写最开始的三至四个字符即可。

wKiom1R1m_STX0iUAAGRjbJx35o891.jpg

    8、在容器中安装新程序,比如安装ifconfig命令(centos7默认没有ifconfig):docker run centos yum install net-tools -y

    如果yum不指定-y参数的话,yum命令会进入交互模式,需要用户输入命令来进行确认,在docker环境中是无法响应这种交互的。但使用docker run的-i -t参数就会响应这种交互,用户可以输入命令了,比如:docker run -i -t centos yum install net-tools

    9、保存对容器的修改并生成新的镜像:docker commit CONTAINERID [REPOSITORY[:TAG]]

    REPOSITORY参数可以是新的镜像名字,也可以是旧的镜像名;如果和旧的镜像名和TAG都相同,会覆盖掉旧的镜像。


    10、停止正在运行的容器:docker stop CONTAINERID

    默认等待10秒钟再杀死指定容器。可以使用-t参数来设置等待时间。

wKioL1R1eVaAon28AAFM9IS_WPk474.jpg

    11、查看容器或镜像的详细信息:docker inspect CONTAINERID|IMAGE

    参数可以是容器的ID或者是镜像名(NAME:TAG)。

wKioL1R1e8uSeslZAAIcWL54yBA017.jpg

    12、删除容器:docker rm CONTAINERID

    查看所有容器ID:docker ps -a -q

    删除所有的容器:docker rm $(docker ps -a -q)

    13、删除镜像:docker rmi IMAGE

wKioL1R1oW-gqMmrAALqpTRiwN8314.jpg

    14.查看docker的信息,包括Containers和Images数目、kernel版本等。

wKiom1R1sCDBp_afAAEBBnNOVBo956.jpg

创建容器并登入的操作

    1、创建一个新容器并登入:docker run -i -t IMAGE /bin/bash

    使用image创建container并进入交互模式,login shell是/bin/bash,现在可以自由的对容器进行操作了。最后使用exit退出容器。

    注意:如果IMAGE参数不指定TAG,默认TAG为latest。

    2、启动一个退出的容器:docker start CONTAINERID

    3、attach到运行中的容器:docker attach CONTAINERID



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值