docker-compose up -d
用于部署一个 Compose 应用。
docker-compose stop
停止 Compose 应用相关的所有容器,但不会删除它们。
被停止的应用可以很容易地通过 docker-compose restart 命令重新启动。
docker-compose rm
用于删除已停止的 Compose 应用。
它会删除容器和网络,但是不会删除卷和镜像。
docker-compose restart
重启已停止的 Compose 应用。
如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
docker-compose ps
用于列出 Compose 应用中的各个容器。
输出内容包括当前状态、容器运行的命令以及网络端口。
docker-compose down
停止并删除运行中的 Compose 应用。
它会删除容器和网络,但是不会删除卷和镜像。
docker exec -it CONTAINER_ID bash
进入容器终端并且保留为容器终端的输入形式(-it和bash的结合作用)
docker-compose up 本质是docker-compose logs -f,它会收集所有容器的日志输出直到退出docker-compose up命令,或者容器都停止运行,比如创建容器时失败,会退出当前命令行
docker-compose up -d 以后台的方式运行容器。不会在终端上打印运行日志
tail -f 实时查看日志文件
nvidia-docker version
搜索镜像:docker search
获取镜像: docker pull
查看镜像:docker images
删除镜像:docker rmi
重启docker:systemctl start docker
查看docker版本:docker -v
随机启动nginx 容器 随机端口 docker run -d -p 80:80 --name mynginx nginx -d表示后台运行 --name 别名
查看容器启动情况: docker ps
进入容器:docker exec -it id /bin/bash
查看日志情况:docker logs Name/ID
查看最近20行日志:docker logs -f --tail -20 id
显示一个运行的容器里面的进程信息:docker top id
停止容器:docker stop id
启动容器:docker start id
查看容器启动情况:docker ps
查询所有容器:docker ps -a
强制停止容器:docker kill id
删除容器:docker rm id
强制删除容器:docker rm -f id
查看容器日志:docker logs id
首先docker images 查看容器名称和别名
批量停止容器:docker rm -f $(docker ps -aq)
docker run -d -p 81:80 --name myngin1 nginx
查看docker的硬盘空间使用情况:docker system df
容器导出导入
mkdir ubuntu-t #创建文件夹
cd ubuntu-t # 进入文件夹
sudo docker export id > ubuntu.tar #导出
ls # 显示ubuntu.tar 导出成功
cat /ubuntu.tar | sudo docker import - test/ubuntu:v1
sudo docker images #查看镜像是否导入成功
sudo docker ps -a #查询所有镜像
sudo docker rm -f id # 删除镜像
sudo docker pull training/webapp #拉镜像
sudo docker run -d -P training/webapp python app.py #运行镜像 大写的P
sudo docker ps
sudo docker run -d -p 5000:5000 training/webapp python app.py# 更改端口号 内部5000转本地5000 小写的p
sudo docker port id #
sudo docker logs -f id #运行日志查询
sudo docker top id #查询当前进程
sudo docker inspect id #查询配置与状态信息
sudo docker stop id #停止
sudo docker images # 镜像
sudo docker search httpd#查找镜像
sudo docker pull httpd# 拉镜像
sudo docker images
sudo docker rmi httpd#删除镜像
sudo docker ps #找容器
sudo docker commit -m="update" -a="fu" bf25 ubuntu-fu:v2 #创建镜像
sudo docker images
mkdir Dockerfile # 创建镜像的另一种方法
cd Dockerfile
gedit Dockerfile
from ubuntu:18.04
run apt-get update
sudo docker build -t fu/ubuntu .#运行
---------------------------------------------------------------------------------------------------------------------------------
-d 后台运行
-v 绑定一个数据卷
-p 指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器. 支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort
-P Docker会随机映射一个 49000~49900 的端口到内部容器开放的网络端口.
举例:docker run -v /usr/ToolsAPIDir:/ToolsAPIDir1 -d -p 5005:5004 -it toolsapi:v8 python3 tools_api.py
-v 本地目录:容器目录,挂载主机的本地目录 /usr/ToolsAPIDir 目录到容器的/ToolsAPIDir1 目录,本地目录的路径必须是绝对路径
-d 后台运行容器
-p 5005:5004指定主机的5005端口映射到容器的5004端口
-it toolsapi:v8 以交互模式运行 toolsapi:v8启动的容器
python3 tools_api.py 启动api.py文件,这样可以不需要再Dockfile中指定 CMD命令,或者覆盖Dockfile中的CMD命令
---------------------------------------------------------------------------------------------------------------------------------
1.代码上传(映射)
2.创建容器 docker runtime=nivida -v 本地路径:容器路径
-d 后台运行
-v 绑定一个数据卷
-p 指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器. 支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort
-P Docker会随机映射一个 49000~49900 的端口到内部容器开放的网络端口.
docker runtime=nvidia -it --name lxj_ner -v /test/lxj_model/BERT-BiLSTM-CRF-NER-master-new:/work votiethuy/tensorflow1.12-gpu-base
docker runtime=nvidia -it --name lxj_ner -v 服务器代码绝对路径:/work image名字:版本号
docker run -it --name lxj_ner -v /data1/home/lixiaojian/test/lxj_model/bert-bilstm-crf-ner-master-new:/work votiethuy/tensorflow1.12-gpu-base:latest bash
docker run -it -d --gpus all --restart=always -v /data1/home/gaorong/lxj_test/AIS:/work gw000/keras-full:latest bash #25号机这也启动容器才可以用gpu
docker run -it -p 8000:80 镜像名 将本地8000端口指定到容器的80端口
---------------------------------------------------------------------------------------------------------------------------------
build_base.sh
# --no-cache
docker build -t "text_classification:1.0" -f base/Dockerfile . 根据base中的Dockerfile创建得到的第一版镜像
build.sh
docker build -t "text_classification:1.0" . 每次更新迭代完后运行sh得到更新后的镜像
以下命令不用运行build命令,可以直接创建镜像
sh build_base.sh
sh build.sh
---------------------------------------------------------------------------------------------------------------------------------
###将docker容器保存为 tar 包###
1、docker commit <容器id> <镜像名>:<tag> ---- 将容器保存成镜像
保存后 docker images 便可以看到镜像
2、docker save -o <tar包名>.tar <镜像名>:<tag> ---- 将镜像保存为.tar文件,默认保存在当前目录
---------------------------------------------------------------------------------------------------------------------------------
###从 tar 包导入docker镜像###
1、docker load -i <tar包名>.tar ---- 从 tar 包导入镜像
导入镜像后,通过 docker images 便可看到导入的镜像。
2、docker run -itd -p <本地端口>:<容器端口> <镜像名>:<tag> ---- 通过镜像起容器
---------------------------------------------------------------------------------------------------------------------------------
###案例###
1、docker commit 294oajfhfnci abcdef:latest ---- 将294oajfhfnci容器保存为镜像abcdef
2、docker save -o abcdef.tar abcdef:latest ---- 将镜像abcdef保存为abcdef.tar
3、docker load -i abcdef.tar ---- 从 abcdef.tar 导入镜像
4、docker run -itd -p 8888:80 --restart=always abcdef:latest ---- 通过abcdef镜像启动容器
---------------------------------------------------------------------------------------------------------------------------------
###服务部署流程###
准备工作:两个文件夹:images、docker-compose
其中images里是一堆服务需要的镜像的tar文件,docker-compose里主要用到的是docker-compose.yml文件,当然也有一些其它文件
具体步骤:
1、进入images文件对需要的镜像一个一个进行docker load -i 镜像名
2、进入docker-compose文件夹打开docker-compose.yml文件,进行相应修改,例如:修改镜像版本号、替换原有数据接口地址为现在的地址,添加挂载路径等等
3、docker-compose up -d 构建服务镜像 ***这里注意:docker-compose restart是重启服务,docker-compose up -d是构建,如果对yml文件或者其它进行修改,最好是up -d重构,因为重启不会更新更改内容。
4、可以按照README文件的指示进行操作
ps:新知识---假设kkk.sh文件里的内容是docker exec -it python work/src/xxx/manage.py 当sh kkk.sh时,执行的就是前面的指令,意思是进入容器然后用python执行manage.py文件,这样的好处是可以不用进入容器就执行python脚本
---docker cp /usr/local/ship_list.json situation-server:/tmp 意思是将宿主机/usr/local/路径下的ship_list.json复制到situation-server容器内的tmp文件下
---docker cp situation-server:/tmp/ship_list.json /usr/local 也可以反过来,将situation-server容器内tmp路径下的ship_list.json复制到宿主机/usr/local路径下
docker inspect 镜像id 查看镜像架构
docker images | grep xxx 筛选查看
Shift+g vim跳转最后一行
Linux环境下Python无法import自定义模块
vi /etc/profile 在最后一行添加export PYTHONPATH=$PYTHONPATH:/root/sw/
多行插入同样内容:ctrl + v 、上下选中 、shift i 、输入要添加的内容 、ESC
快速删除:esc状态下,dd删除整行
复制粘贴:光标移至起始点,n+yy 其中n为复制几行,p粘贴
撤回:u
cat /etc/issue 看镜像是Ubuntu还是debian
###给只读文件添加写入权限###
ls -l命令来看看文件及目录的相关信息
chmod u+w filename 对文件创建者赋予写入权限