如何部署 Docker 容器部署模型

当前位置: &
4,515 次阅读 -
【Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container)】
Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container)。(我个人还是喜欢称虚拟机)
Docker应用容器相对于 VM 有以下几个优点:
启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久
资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试
性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源
因为VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销。
个人体会较深的两处优点:
1、 快速部署,传统的部署模式是:安装(包管理工具或者源码包编译)-&配置-&运行;Docker的部署模式是:复制-&运行。
2、 可以保证线上与测试环境一致,计划以后上线就直接复制测试使用的docker容器)
什么是docker?
为什么你应该关注docker?
1、docker安装
debian7安装docker
参考地址:
echo deb http://get.docker.io/ubuntu docker main | sudo tee/etc/apt/sources.list.d/docker.list
sudo apt-key adv –keyserver
–recv-keys 36A1D0F966E92DD21E9
sudo apt-get update
sudo apt-get install -y lxc-docker
#四行命令,Docker就安装好了。下面创建一个ubuntu虚拟系统:
docker pull ubuntu #此处是从官网拉取名为ubuntu的image,也可手动在https://index.docker.io上搜索想要的镜像。
docker run -i -t ubuntu /bin/bash #创建一个容器,-t是临时终端。
ubuntu12.04、windows、macOS安装docker
参考docker中文文档
2、docker使用过程实践
2.1 在测试机启动容器,安装ssh
docker run -i -t ubuntu /bin/bash #此方式运行的容器,退出后容器就会关闭。
apt-get install openssh-server #安装ssh
#需要修改/etc/sshd/sshd_config文件中内容
PermitRootLogin yes
2.2 启动ssh,容器以后台方式运行
docker run -d -p 50001:22 容器id /usr/sbin/sshd-D
#容器id可通过 docker ps-a查看,最上面的为最新的。
2.3 通过ssh连接到容器安装软件
ssh root@127.0.0.1-p 50001
#连上后想装什么就装什么,可使用exit退出容器,但后台还会运行。
2.4 服务安装完成后,停止容器。
docker stop 容器id #停止运行的容器
2.5 把容器提交生成最新的镜像
docker commit 容器id debian02 #把这个容器提交生成新的debian02镜像(该镜像是原始镜像与容器的整合)
2.6 打包镜像
docker save debian02 /root/debian02.tar #debian02镜像打包
2.7 在另外的机器上导入镜像
docker load
docker images #查看存在的镜像
2.8 启动容器
docker run -h=“redis-test” –name redis-test -d -p 51000:22 -p -p
-p 51005:80 -p
debian02 /etc/rc.local
#此处是我测试机器启动命令,指定主机名与端口映射。
#启动后,后面又装了程序,开机自启动命令可放在/etc/rc.local文件中。
docker容器迁移简单方便,可以任意的拷贝部署,以后再也不怕新部署环境了,一堆依赖装的想死有木有。
3、关于docker容器的端口映射
由于docker容器的IP地址每次启动都会变,所以不适用于手动添加端口映射(难道每次重启都来查看容器的IP么?),所以需要每次启动容器时由docker程序自动添加NAT规则,前期尽可能的把需要映射的端口在创建容器时配置好,如下:
docker run -h=“activemq” –name activemq -d -p 51000:22 -p -p
-p 51005:80-p
debian/base/etc/rc.local
#此处我把mysql,redis,nginx,ssh都进行了映射。
后续对于docker容器的管理,记住容器的名称,如上述名称是activemq,则使用docker stop,start来控制容器进程。
docker stop activemq
docker start activemq
当然,也可以不让docker每次启动容器修改容器的IP地址,参考如下:
docker网络配置:
4、关于docker容器的多程序开机自动运行
docker容器每次启动时,开机自启动的命令都要在启动容器前指定。如 docker run -I -t debian /bin/bash命令,只会运行/bin/bash程序,其它的程序都不会运行,对于要跑多个程序的容器特别纠结。
多程序开机自动运行方法:
可把前面所说的启动命令换成dockerrun -I -t debian /etc/rc.local,在容器中把所有需要开机自的启动命令放在/etc/rc.local中,就可以达到多程序开机自启动了。
后台运行则是:docker run -d -p 50001:22 debian /etc/rc.local。注意:run命令是创建一个新的容器,如果要启动一个曾经运行过的容器,则用命令docker ps -a中找对应的容器ID,然后使用docker start &容器ID&即可。
5、关于docker容器和镜像的关系
无论容器里做什么操作,写文件,删文件。该容器的基本镜像都不会有任何改变。
这是因为Docker从父镜像建立增量镜像,只存储每个容器的更改。因此,如果你有一个300MB的父镜像,如果你在容器中安装了50MB的额外应用或服务,你的容器只有50MB,父镜像还是300MB。
但是可以使用Dockfile或commit命令来,把增量镜像和父镜像一起生成一个新的镜像。
commit使用:
docker commit 容器id 新镜像名称
Dockfile使用:
root@yangrong:/data# cat Dockerfile
FROMubuntu/testa #这是基础镜像
CMD[“/root/start.sh”] #这是启动命令
root@yangrong:/data# docker build -t 新镜像名 ./
关于Dockfile更多参数参考地址:
6、docker参数详解
useage of docker
-D 默认false 允许调试模式(debugmode)
-H 默认是unix:///var/run/docker.sock tcp://[host[:port]]来绑定 或者unix://[/path/to/socket]来使用(二进制文件的时候),当主机ip host=[0.0.0.0],(端口)port=[4243] 或者 path=[/var/run/docker.sock]是缺省值,做为默认值来使用
-api-enable-cors 默认flase 允许CORS header远程api
-b 默认是空,附加在已存在的网桥上,如果是用’none’参数,就禁用了容器的网络
-bip 默认是空,使用提供的CIDR(ClasslessInter-Domain Routing-无类型域间选路)标记地址动态创建网桥(dcoker0),和-b参数冲突
-d 默认false 允许进程模式(daemonmode)
-dns 默认是空,使docker使用指定的DNS服务器
-g 默认是”/var/lib/docker”:作为docker使用的根路径
-icc 默认true,允许inter-container来通信
-ip 默认&#.0.0″:绑定容器端口的默认Ip地址
-iptables 默认true 禁用docker添加iptables规则
-mtu 默认1500 : 设置容器网络传输的最大单元(mtu)
-p 默认是/var/run/docker.pid进程pid使用的文件路径
-r 默认是true 重启之前运行的容器
-s 默认是空 ,这个是docker运行是使用一个指定的存储驱动器
-v 默认false 打印版本信息和退出
7、docker run命令详解
Usage: docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG…]
Run a command in a new container
-a=map[]: 附加标准输入、输出或者错误输出
-c=0: 共享CPU格式(相对重要)
-cidfile=“”: 将容器的ID标识写入文件
-d=false: 分离模式,在后台运行容器,并且打印出容器ID
-e=[]:设置环境变量
-h=“”: 容器的主机名称
-i=false: 保持输入流开放即使没有附加输入流
-privileged=false: 给容器扩展的权限
-m=“”: 内存限制 (格式: unit, unit单位 = b, k, m or g)
-n=true: 允许镜像使用网络
-p=[]: 匹配镜像内的网络端口号
-rm=false:当容器退出时自动删除容器 (不能跟 -d一起使用)
-t=false: 分配一个伪造的终端输入
-u=“”: 用户名或者ID
-dns=[]: 自定义容器的DNS服务器
-v=[]: 创建一个挂载绑定:[host-dir]:[container-dir]:[rw|ro].如果容器目录丢失,docker会创建一个新的卷
-volumes-from=“”: 挂载容器所有的卷
-entrypoint=“”: 覆盖镜像设置默认的入口点
-w=“”: 工作目录内的容器
-lxc-conf=[]: 添加自定义-lxc-conf=“lxc.cgroup.cpuset.cpus = 0,1”
-sig-proxy=true: 代理接收所有进程信号(even in non-tty mode)
-expose=[]: 让你主机没有开放的端口
-link=“”: 连接到另一个容器(name:alias)
-name=“”: 分配容器的名称,如果没有指定就会随机生成一个
-P=false: Publish all exposed ports to thehost interfaces 公布所有显示的端口主机接口
8、docker常用命令总结
docker pull 镜像名:tag #从官网拉取镜像
docker search 镜像名 #搜索在线可用镜像名
8.1查询容器、镜像、日志
docker top
#显示容器内运行的进程
docker images #查询所有的镜像,默认是最近创建的排在最上。
docker ps #查看正在运行的容器
docker ps -l #查看最后退出的容器的ID
docker ps -a #查看所有的容器,包括退出的。
docker logs {容器ID|容器名称} #查询某个容器的所有操作记录。
docker logs -f {容器ID|容器名称} #实时查看容易的操作记录。
8.2删除容器与镜像
docker rm$(docker ps -a -q) #删除所有容器
docker rm 容器名or ID #删除单个容器
docker rmi
#删除单个镜像
docker rmi$(docker images | grep none | awk ‘{print $3}’ | sort -r) #删除所有镜像
8.3启动停止容器
docker stop 容器名or ID #停止某个容器
docker start 容器名or ID #启动某个容器
docker kill 容器名or ID #杀掉某个容器
8.4容器迁器
docker export
/home/export.tar #导出
cat /home/export.tar | sudo docker import – busybox-1-export:latest # 导入export.tar文件
docker save debian /home/save.tar #将debian容器打包
docker load /home/save.tar #在另一台服务器上加载打包文件
save和export的对比参考地址:
8.5运行一个新容器
#运行一个新容器,同时为它命名、端口映射。以debian02镜像为例
docker run -h=“redis-test” –name redis-test -d -p 51000:22 -p -p
-p 51005:80 -p
debian02 /etc/rc.local
#从container中拷贝文件,当container已经关闭后,在里面的文件还可以拷贝出来。
sudo docker cp 7bb0e258aefe:/etc/debian_version . #把容器中的/etc/debian_version拷贝到当前目录下。
8.6 docker Dockfile镜像制作
root@yangrong:/data# cat Dockerfile
FROM ubuntu/testa #这是基础镜像
CMD [“/root/start.sh”] #这是启动命令
root@yangrong:/data# docker build -t 新镜像名 ./ #生成新的镜像
Dockfile更多参数参考:
From : 51CTO
注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。
相关文章!
做最棒的数据科学社区
扫描二维码,加微信公众号
联系我们:在Docker容器中部署静态网页的方法教程
作者:兴国First
字体:[ ] 类型:转载 时间:
这篇文章主要给大家介绍了在Docker容器中部署静态网页的方法教程,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
一般我们在访问容器时需要通过容器的端口来访问,那如何设置容器的端口映射呢?
我们通过以下命令来设置:
docker run -p ip:hostPort:containerPort [--name] [-i] [-t] 镜像名 [COMMAND][ARG...]
ip:表示宿主机ip
hostPort:宿主机端口号
containerPort:容器端口号
设置的方式有以下几种:
containerPort,指定容器端口号,宿主机端口随机生成
[root@localhost ~]# docker run -p 80 --name web_test -i -t
hub./library/ubuntu /bin/bash
hostPort:containerPort映射主机端口和容器端口
[root@localhost ~]# docker run -p 8080:80 --name web_test -i -t
hub./library/ubuntu /bin/bash
ip::containerPort设置主机的随机端口到容器端口
[root@localhost ~]# docker run -p 0.0.0.0::80 --name web_test -i -t
hub./library/ubuntu /bin/bash
ip:hostPort:containerPort映射指定地址的指定端口到容器的指定端口
[root@localhost ~]# docker run -p 0.0.0.0:8080:80 --name web_test -i -t
hub./library/ubuntu /bin/bash
下面通过nginx在容器部署静态网页,通过以下步骤
&&&&& - 创建80映射端口的交互式容器
&&&&& - 安装nginx
&&&&& - 安装文本编辑器vim
&&&&& - 创建静态网页
&&&&& - 运行nginx
&&&&& - 验证网页
示例如下(如果安装完ubuntu后不能安装nginx进行apt-get update):
[root@localhost ~]# docker run -p 80 --name static_test -i -t hub./library/ubuntu /bin/bash
root@25fcbf6e953d:/# apt-get install -y nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nginx
root@25fcbf6e953d:/# apt-get update
Get:1 /ubuntu xenial InRelease [247 kB]
Get:2 /ubuntu xenial-updates InRelease [102 kB]
**中间日志省略。。。。。。。。。。**
Fetched 24.9 MB in 9s (2717 kB/s)
Reading package lists... Done
root@25fcbf6e953d:/# apt-get install -y nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
**安装日志省略。。。。。。。。。。**
然后安装vim:
root@25fcbf6e953d:/# apt-get install -y vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
**安装日志省略。。。。。。。。。。**
然后建立存放静态文件的目录,并创建一个简单的html文件:
root@25fcbf6e953d:/# mkdir -p /var/www/html
root@25fcbf6e953d:/#
root@25fcbf6e953d:/# cd /var/www/html/
root@25fcbf6e953d:/var/www/html# vim index.html
root@25fcbf6e953d:/var/www/html# ll
drwxr-xr-x. 2 root root 53 Mar 13 05:02 ./
drwxr-xr-x. 3 root root 17 Mar 13 04:50 ../
-rw-r--r--. 1 root root 79 Mar 13 05:02 index.html
-rw-r--r--. 1 root root 612 Mar 13 04:51 index.nginx-debian.html
root@25fcbf6e953d:/var/www/html# cat index.html
this is the first docker static file
root@25fcbf6e953d:/var/www/html#
找到nginx的安装目录,更改default的root值为刚才创建的目录:
root@25fcbf6e953d:/var/www/html# whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx
root@25fcbf6e953d:/var/www/html# cd /etc/nginx/sites-enabled/
root@25fcbf6e953d:/etc/nginx/sites-enabled# ll
drwxr-xr-x. 2 root root 20 Mar 13 04:51 ./
drwxr-xr-x. 6 root root 4096 Mar 13 04:51 ../
lrwxrwxrwx. 1 root root 34 Mar 13 04:51 default -& /etc/nginx/sites-available/default
root@25fcbf6e953d:/etc/nginx/sites-enabled# vim default
然后启动nginx,查看容器进程:
root@25fcbf6e953d:/etc/nginx/sites-enabled# nginx
root@25fcbf6e953d:/etc/nginx/sites-enabled# ps -ef
PID PPID C STIME TTY
0 0 04:48 ?
00:00:00 /bin/bash
1 0 05:06 ?
00:00:00 nginx: master process nginx
www-data 828 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 829 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 830 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 831 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 832 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 833 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 834 827 0 05:06 ?
00:00:00 nginx: worker process
www-data 835 827 0 05:06 ?
00:00:00 nginx: worker process
1 0 05:07 ?
00:00:00 ps -ef
root@25fcbf6e953d:/etc/nginx/sites-enabled#
然后按ctrl+p,ctrl+q退出交互式容器。
使用Docker ps查看容器的端口和运行情况,也可以通过dcoker port 镜像名查看:
root@localhost ~]# docker ps
CONTAINER ID
25fcbf6e953d
hub./library/ubuntu "/bin/bash"
18 minutes ago
Up 18 minutes
0.0.0.0:32772-&80/tcp static_test
[root@localhost ~]# docker port static_test
80/tcp -& 0.0.0.0:32772
[root@localhost ~]#
可以看到容器的80端口映射到注解的32772端口。
通过curl访问创建的index.html文件:
[root@localhost ~]# curl http://127.0.0.1:32772/index.html
this is the first docker static file
[root@localhost ~]#
也可以通过docker inspect 容器名来查看容器的详细信息和ip
通过容器ip进行访问:
[root@localhost ~]# docker inspect static_test
其他信息省略
"IPAddress": "172.17.0.5",
[root@localhost ~]# curl http://172.17.0.5/index.html
this is the first docker static file
[root@localhost ~]#
当我们使用docker stop 容器名停止这个容器后,再使用docker start 容器名启动容器后,里面的nginx并没有启动。那么我们使用docker exec 容器名 nginx来启动:
[root@localhost ~]# docker stop static_test
static_test
[root@localhost ~]# docker ps
CONTAINER ID
b4f32bbe4a34
hub./library/ubuntu "/bin/bash"
41 hours ago
Up 41 hours
loving_brattain
d75a2d8c7822
xingguo/df_test1
"nginx -g 'daemon off" 2 days ago
0.0.0.0:32770-&80/tcp df_nginx_web
959c0fc5d903
xingguo/commit_test1
"nginx -g 'daemon off" 2 days ago
0.0.0.0:32769-&80/tcp nginx_test
[root@localhost ~]# docker start static_test
static_test
[root@localhost ~]# docker ps
CONTAINER ID
25fcbf6e953d
hub./library/ubuntu "/bin/bash"
29 minutes ago
Up 2 seconds
0.0.0.0:32773-&80/tcp static_test
b4f32bbe4a34
hub./library/ubuntu "/bin/bash"
41 hours ago
Up 41 hours
loving_brattain
d75a2d8c7822
xingguo/df_test1
"nginx -g 'daemon off" 2 days ago
0.0.0.0:32770-&80/tcp df_nginx_web
959c0fc5d903
xingguo/commit_test1
"nginx -g 'daemon off" 2 days ago
0.0.0.0:32769-&80/tcp nginx_test
[root@localhost ~]# docker top static_test
[root@localhost ~]# docker exec static_test nginx
[root@localhost ~]# docker top static_test
nginx: master process nginx
nginx: worker process
nginx: worker process
nginx: worker process
nginx: worker process
nginx: worker process
nginx: worker process
nginx: worker process
nginx: worker process
[root@localhost ~]#
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具以下是centos系统安装docker的操作记录
1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker安装epel源[root@docker-server ~]# wget [root@docker-server ~]# rpm -ivh epel-release-latest-6.noarch.rpm[root@docker-server ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6[root@docker-server ~]# sed -i 's/^#baseurl/baseurl/g' /etc/yum.repos.d/epel.repo[root@docker-server ~]# sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel.repo
安装docker-io[root@docker-server ~]# yum install docker-io -y
修改docker镜像和容器存储路径[root@docker-server ~]# vim /etc/sysconfig/docker ------------ other_args="--graph=/docker" & & & & & & & & & & & & & & & & //配置这一行------------
启动docker[root@docker-server ~]# service docker start
[root@docker-server ~]# chkconfig docker on[root@docker-server ~]# ps -ef|grep dockerroot
19:35 pts/0 00:00:00 /usr/bin/docker -d --graph=/dockerroot
0 19:35 pts/0 00:00:00 grep --color docker
[root@docker-server ~]# ls /docker/containers devicemapper graph init linkgraph.db repositories-devicemapper tmp trust volumes
获取官方centos或ubuntu镜像。这里需要特别说明下:通过实测发现,现在在centos6下的docker获取镜像失败,在centos7下的docker获取镜像可以。所以一般建议在centos7下部署docker环境,然后docker获取centos6的容器镜像(centos7容器镜像有不少坑)[root@docker-server ~]# docker pull centos[root@docker-server ~]# docker pull ubuntu[root@docker-server ~]# docker images & & & & & &//查看本地镜像
运行一个docker容器容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。(/bin/bash命令语句必须要放在镜像名的后面)[root@docker-server ~]# docker run -i -t centos /bin/bash [root@docker-server ~]# docker run -i -t ubuntu /bin/bash
[root@docker-server ~]# docker -v & & & & & & & & & & & //版本不是最新版的Docker version 1.7.1, build 786b29d/1.7.1
上面是centos6系统下做法。如果是centos7的话,直接yum&install docker即可安装。
2)第二种方法:安装Docker官方的最新发行版(推荐在centos7下采用这种方法安装最新版本的docker)[root@docker-server ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@docker-server ~]# curl -sSL https://get.daocloud.io/docker | sh [root@docker-server ~]# systemctl enable docker &[root@docker-server ~]# systemctl start docker
[root@docker-server ~]# systemctl stop docker & & & & &//关闭 [root@docker-server ~]# systemctl restart docker & & &//重启
安装过程结束后,可执行下面命令验证安装的状态。如果看到输出 active (running) 就表示安装成功。[root@docker-server ~]# systemctl status docker
查看docker版本[root@docker-server ~]# docker -v & & & & & & & & //最新版本Docker version 1.12.5, build 7392c3b
开机启动,systemctl enable docker.service
(docker.service改为docker也可以)
启动,systemctl start/stop/restart/status docker.service
启动,systemctl start docker.service
帮助,docker --help
概要信息,docker info
镜像查看,docker images
容器查看,即进程查看,docker ps -a
获取官方centos或ubuntu镜像[root@docker-server ~]# docker pull centosUsing default tag: latestlatest: Pulling from library/centos45a2e645736c: Pull complete Digest: sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88fc38799Status: Downloaded newer image for centos:latest
[root@docker-server ~]# docker images & & & & & &//查看镜像REPOSITORY TAG IMAGE ID CREATED SIZEcentos latest
2 weeks ago 191.8 MB
上面在centos7下安装的docker,如果在获取centos容器镜像的时候不指定版本,那么下载下来的容器镜像默认也是centos7版本;但是可以在获取镜像的时候指定版本,比如:[root@linux-node2 ~]# docker pull centos:centos6centos6: Pulling from library/centos32c4f4fef1c6: Pull complete Digest: sha256:da4facccce5adf133b0ecf173c1f47bStatus: Downloaded newer image for centos:centos6[root@linux-node2 ~]# docker imagesREPOSITORY
SIZEcentos
2 weeks ago
191.8 MBcentos
8315978ceaaa
8 weeks ago
194.6 MBdaocloud.io/daocloud/daocloud-toolset
8 months ago
还可以如下获取镜像docker pull ubuntudocker pull ubuntu:14.04docker pull ubuntu:latestdocker pull centos:latestdocker pull centos:7.1docker pull centos:6.5docker pull centos:6.8docker pull centos:6docker pull centos:7
启动容器,并且进入到centos容器的bash命令。启动时的现象:其实相当于启动了一个虚拟机;[root@linux-node2 ~]# docker run -i -t centos /bin/bash [root@fd /]# echo "welcome to docker"welcome to docker[root@8f65f826ad80 /]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
通过docker ps命令可以列出当前所有正在运行的container[root@linux-node2 ~]# docker psCONTAINER ID
"/bin/bash"
About a minute ago
Up About a minute
focused_bose
下面命令将会停止上面启动的实例,这样就会自动强制退出容器[root@linux-node2 ~]# docker stop fdfd[root@linux-node2 ~]#
docker ps CONTAINER ID
其他:docker ps -l
//列出最近一次启动的,且正在运行的containerdocker ps -a
//列出所有的container
docker run -p 80:8080 &image& &cmd&
//映射容器的8080端口到宿主机的80端口docker rm `docker ps -a -q`
//删除所有容器docker rm $CONTAINER_ID
//删除容器id为CONTAINER_ID的容器docker images
//查看本地镜像docker attach $CONTAINER_ID
//启动一个已存在的docker实例docker stop $CONTAINER_ID
//停止docker实例(或者直接退出容器登陆;不然这个命令执行后也会强制退出容器的登陆)docker logs $CONTAINER_ID //查看docker实例运行日志,确保正常运行docker inspect $CONTAINER_ID //查看container的实例属性,比如ip等等
------------------------------------------------------------------------------------------------------------------------如下:举例说明在docker下部署nginx宿主机上执行下面命令:启动容器,进入centos容器的/bin/bash命令,并且会映射container的8080端口到宿主机的8888端口/home/wangshibo/docker为要挂载的宿主机本地目录(如果提前不创建,也会自动生成的);/home/mycontainer为docker映射路径,即在容器里的路径。这个和上面挂载宿主机的文件夹里内容一样!(下面是基于centos镜像创建的容器)[root@linux-node2 ~]# docker run -t -i -v /home/wangshibo/docker:/home/mycontainer:rw -p
centos /bin/bash
docker命令包含以下三个部分:
docker run &相关参数& &镜像 ID& &初始命令&
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v &宿主机目录&:&容器目录&
[root@8f65f826ad80 /]# yum install -y wget lsof vim
添加CentOS 7 Nginx yum资源库,然后安装nginx[root@8f65f826ad80 /]# rpm -Uvh [root@8f65f826ad80 /]# yum install -y nginx
[root@8f65f826ad80 conf.d]# pwd
/etc/nginx/conf.d[root@8f65f826ad80 conf.d]# cat test.conf
listen 8080;
location / {
root /var/www/
index index.
[root@8f65f826ad80 conf.d]# mkdir -p /var/www/html[root@8f65f826ad80 conf.d]# cat /var/www/html/test.htmlthis is nginx page of docker!!
启动/关闭/重启nginx:systemctl start/stop/restart nginx.service开机启动nginx:systemctl enable nginx.service网站文件存放默认目录:/usr/share/nginx/html网站默认站点配置:/etc/nginx/conf.d/default.conf自定义Nginx站点配置文件存放目录:/etc/nginx/conf.d/Nginx全局配置:/etc/nginx/nginx.conf
启动nginx,有如下报错[root@8f65f826ad80 conf.d]# systemctl start nginx.serviceFailed to get D-Bus connection: Operation not permitted--------------------------------------------------------------------------------------------------------------------这是centos7容器里面出现的一个BUG!即centos7镜像创建的容器里面安装服务后,不能用systemctl/service启动服务,centos6的容器里没有这个坑!可以通过使用其他的方式启动或者换用centos6的镜像来避免这个错误。
解决方案如下:原因是dbus-daemon没能启动。其实systemctl并不是不可以使用,可以将你的CMD或者entrypoint设置为/usr/sbin/init即可。这样就会自动将dbus等服务启动起来。即采用 /usr/sbin/init自动启动dbus daemon
下面这个命令会一直在执行中,不能停止这个命令[root@linux-node2 ~]# docker run --privileged -t -i -v /home/wangshibo/docker:/home/mycontainer:rw -p
centos /sbin/init
保证上面的命令执行后,可以查到它的容器ID(这个ID就是nginx所在容器的ID)[root@linux-node2 ~]# docker psCONTAINER ID
NAMESeaf66f1e43ab
"/sbin/init"
16 seconds ago
Up 15 seconds
0.0.0.0:/tcp
hungry_khorana
接着在另一个终端窗口下执行下面命苦:即通过上面容器ID进入到它的/bin/bash命令下[root@linux-node2 ~]# docker exec -it eaf66f1e43ab /bin/bash[root@eaf66f1e43ab /]#然后就接着安装nginx的操作了(从上面的yum install -y wget lsof vim开始重新操作)--------------------------------------------------------------------------------------------------------------------
如上解决后,再次启动nginx[root@eaf66f1e43ab /]# systemctl start nginx.service[root@eaf66f1e43ab /]# ps -ef|grep nginxroot
00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.confnginx
00:00:00 nginx: worker processroot
00:00:00 grep --color=auto nginx[root@eaf66f1e43ab /]# lsof -i:8080COMMAND PID
DEVICE SIZE/OFF NODE NAMEnginx
TCP *:webcache (LISTEN)nginx
TCP *:webcache (LISTEN)
记得在宿主机的防火墙上开启8888端口:[root@linux-node2 home]# vim /etc/sysconfig/iptables.......-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT[root@linux-node2 home]# systemctl restart iptables.service
验证访问(宿主机ip假设为110.117.88.99)
检查下容器创建时映射目录和挂载目录情况:[root@eaf66f1e43ab ~]# ll /home/mycontainer/ & & &&total 0[root@eaf66f1e43ab ~]# echo "123456" & /home/mycontainer/test[root@eaf66f1e43ab ~]# cat /home/mycontainer/test & & & & & &//容器里面的情况123456
[root@linux-node2 ~]# cat /home/wangshibo/docker/test & & &//容器外挂载到宿主机目录下的情况123456
可以将这个docker主机添加到DaoCloud云平台里面管理
-------------------------------------------------------------------------------------------------------------------------------------
[下载DaoCloud里面的镜像]可以通过DaoCloud云平台--&镜像仓库--&发现镜像,找到对应镜像的地址。最后可以根据这个镜像地址下载到docker服务器上,如下:
然后找到对应镜像的镜像地址:
然后就可以在服务器上进行镜像下载了:
-------------------------------------------------------------------------------------------------------------------------------------
以下是Ubuntu 12.04以上系统安装docker环境的操作记录
安装方法一ubuntu14.04以上的版本都是自带docker安装包的,所以可以直接安装,但一般也不是最先版本。[ubuntu@localhost:~]$ sudo apt-get update[ubuntu@localhost:~]$ sudo apt-get install docker.io
安装方法二安装 Docker 官方的最新发行版[ubuntu@localhost:~]$ curl -sSL https://get.daocloud.io/docker | sh
安装过程结束后,可执行下面命令验证安装结果。如果看到输出 docker start/running 就表示安装成功。[ubuntu@localhost:~]$ sudo service docker status
--------------或者使用下面的安装,也是最新版的docker--------------------[ubuntu@localhost:~]$ sudo apt-get update[ubuntu@localhost:~]$ curl -s https://get.docker.io/ubuntu/ | sudo sh
这个方法启动docker若出现下面错误;FATA[0000] Error loading docker apparmor profile: fork/exec /sbin/apparmor_parser: no such file or directory ()别担心,请安装apparmor软件即可[ubuntu@localhost:~]$ sudo apt-get install apparmor
阅读(...) 评论()

我要回帖

更多关于 win2016 容器部署 的文章

 

随机推荐