Docker 杂记

docker使用沙箱机制,容器相互之间不会有任何关系,更重要的是性能开销极低。个人认为该技术也算是虚拟机的一种,但它的虚拟方式与传统的vmware不同,它不需要模拟硬件设备,所以资源损耗更小。

Docker安装:

linux可以直接安装,直接yum就可以

yum -y install docker-io

Docker基本命令:
搜索容器:
docker images //查看当前已存在的容器镜像
docker search [容器名称]//搜索容器,包括线上的容器
运行容器:
docker run -it cocktailgu/ssh:v2 /usr/sbin/sshd -D
docker run -d cocktailgu/ssh:v2 /usr/sbin/sshd -D

-t 运行容器后进入到shell界面
-d 运行容器并在后台一直运行
注意:如果没-t或-d的参数,则运行完就直接退出容器
cocktailgu/ssh 容器镜像的仓库名称,冒好后面的参数是标签名
/usr/sbin/sshd -D 为加载这个容器后输入的命令,例子为开启ssh的服务。

docker run -d -p 99:80name web2 test:v2

-p 映射端口,访问宿主的99端口,相当于访问容器的80端口
-name 运行该容器的别名

容器运行状态:
docker ps
docker kill [容器id\容器在ps下的别名] //删除容器
删除容器镜像:
docker rmi 0bdc9f543b07

0bdc9f543b07:利用docker images查看的imagesID

重新进入已在运行的容器:

进入了容器的shell界面下,可以通过crtl+p+q挂起当前容器,并退出到宿主终端界面,可通过以下命令重新进入容器:

docker attach 0bdc9f543b07

0bdc9f543b07:利用docker ps查看的Container ID


新建容器:

所有新建的容器都要建立在已存在的基础容器之上,以CentOS为例,例如需要在该系统上安装nginx,可以通过两种方式进行,第一种是进入CentOS的基础容器的shell界面进行安装后退出,输入docker commit命令;第二种是通过编写dockerfile后,输入docker build命令进行建立。

第一种:

通过进入一个已存在的容器的shell下进行操作,操作完后exit,输入以下命令:

docker commit -m "added xxx" -a "cocktail" 74e905399028 testadduser:v2

-m 说明
-a 用户信息
74e905399028 容器的id
testadduser:v2 冒号前是容器的repository 的名称,后面是TAG
commit后会生成一个新的容器

第二种:

新建dockerfile文件,输入以下内容:

FROM testyum

MAINTAINER cocktail

RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel gcc-c++
RUN wget http://nginx.org/download/nginx-1.8.0.tar.gz
RUN tar -zxvf nginx-1.8.0.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.8.0 && ./configure --prefix=/usr/local/nginx && make && make install

EXPOSE 80

CMD ["/usr/local/nginx/nginx"]

FROM:为基础镜像,但发觉直接用centos的基础包发觉yum的命令用不了,我是利用centos建立一个自己的基础包后又能使用。

ADD:可以把当前目录下的文件放进容器系统中

ENV:设置环境命令,例如

ENV DEBIAN_FRONTEND noninteractive

VOLUME:共享目录,该目录可以共享给其他容器使用,需要在容器增加参数,例如:

docker run -it --name cocktailtest3 --volumes-from e70d649bf21a testuseradd

name:是容器加载后的别名,别名只用于方便操作
volume-from:后面加的是容器的id,或者可以使用容器的别名(要是正在运行中的容器)
testuseradd:为现在要运行的容器repository名称

WORKDIR:将启动后的工作目录切换到worker目录,接下来的RUN,CMD,ENTRYPOINT,COPY和ADD等指令都在该工作目录下进行,如果不存在,会被创建。

ENTRYPOINT:容器启动后执行的命令,让容器执行表现的像一个可执行程序一样,与CMD的区别是不可以被docker run覆盖,会把docker run后面的参数当作传递给ENTRYPOINT指令的参数。Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。docker run命令的-entrypoint参数可以把指定的参数继续传递给ENTRYPOINT。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值