进入容器:使用 docker exec 命令进入正在运行的容器。
执行命令:在容器内执行Linux命令,如 ls,cat,apt-get 等。
停止容器:使用 docker stop 命令停止正在运行的容器。
删除容器:使用 docker rm 命令删除不再需要的容器。
这些是控制Docker容器的基本步骤。更多信息,请查看Docker官方文档。
2.1 在测试机启动容器,安装sshdocker run -i -t ubuntu /bin/bash #此方式运行的容器,退出后容器就会关闭。
apt-get install openssh-server #安装ssh
#需要修改/etc/sshd/sshd_config文件中内容
PermitRootLogin yes
UsePAM no
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 <debian02.tar #导入镜像
docker images #查看存在的镜像
2.8 启动容器
docker run -h="redis-test" --name redis-test -d -p 51000:22 -p51001:3306 -p 51003:6379 -p 51004:6381 -p 51005:80 -p 51006:8000 -p 51007:8888 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 51001:3306-p 51003:6379 -p 51004:6381 -p 51005:80-p 51006:8000 -p 51007:8888 debian/base/etc/rc.local
#此处我把mysql,redis,nginx,ssh都进行了映射。
后续对于docker容器的管理,记住容器的名称,如上述名称是activemq,则使用docker stop,start来控制容器进程。docker stop activemq
docker start activemq
当然,也可以不让docker每次启动容器修改容器的IP地址,参考如下:
docker网络配置:http://www.open-open.com/lib/view/open1404896485747.html
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>即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)