启动一个操作系统
docker run --name ubuntuAliasName -p 3002:3001 -it -v /home/dev-02/webapps/ubuntu2:/test/ubuntu ubuntu /bin/bash
以interactive的方式启动一个Ubuntu系统,别名为ubuntuAliasName,镜像名称为 ubuntu,挂载一个目录到Ubuntu的/test/ubuntu下,本机的端口3002映射到容器的3001上,访问时访问3002就能访问到容器的3001对应内容。
-p == --port 一个-的表示缩写, 两个-的表示全拼, (-? 参数)之间有一个空格
docker run --name ubuntuAliasName -p 3001:3001 -v /home/dev-02/webapps/ubuntu2:/test/ubuntu -d ubuntu
以后台进程的方式启动,当时不进入终端,用下面的命令进入交互模式
docker exec -it ContainerName /bin/bash
以交互模式进入容器
exit
退出容器
docker logs -f containerName
以滚动的方式查看容器的输出日志,如果是以后台进程的方式启动的,就需要用这种方式查看日志输出
docker logs -f -t --since "2019-03-28" --tail =100 containerId
如果容器已经运行了很久,要从指定天开始查看日志,需要指定 since 参数。
sudo docker logs containerId > ./myLog.txt
日志分析,需要查看容器启动后所有内容,使用 docker logs xxx, 会飞快滚动并至当前日志行,如果需要保存所有日志信息需要将容器日志的输出重定向到一个指定位置即可。
根据容器创建新镜像
docker commit [containerID] newIMGName:tag
tar包导入到镜像
docker load < ./xxx.tar
把镜像导出成tar
docker save img -o ./xxx.tar
docker save img > ./xxx.tar
容器内时间和宿主机不一致,导致部分日志输出日期不对,docker run时加上
-e TZ=Asia/Shanghai
以交互模式进入容器,执行date命令
Tue Mar 13 09:41:21 CST 2019
返回CST(China Standard Time),即可。
docker-compose 部署部分:
和docker-compose.yml在同一目录下
启动:
docker-compose up -d #默认找当前目录下的docker-compose.yml, docker-compose.yaml
docker-compose -f /path/file.yml up -d
查看:
暂停:
docker-compose -f ./path/file.yml stop
停止:
docker-compose -f ./path/file.yml down
重启:
docker-compose 启动脚本报错,ERROR: Failed to program FILTER chain: iptables failed: iptables --wait -I FORWARD -o br-5b57984ae0b
重建docker0网络恢复:
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
systmctl restart docker
docker stack deploy 部署调试部分:
sudo docker service ls #查看已经有哪些服务
sudo docker service rm id #删除服务
sudo docker stack deploy --compose-file xx.yml service
或
sudo docker stack deploy -c xx.yml name #启动一个name_xx的服务
sudo docker ps -a #查看对应的服务容器状态
sudo docker logs -f containerId #跟踪容器日志
sudo docker exec -it containerId /bin/bash #进入容器
apt update #更新依赖库
apt install vim #安装文本编辑工具
vim file #编辑指定文件,保存退出
exit #退出交互模式
sudo docker commit containerId newImageName:version #新的镜像名称和老的一样可以覆盖掉老的,建议先备份