Centos安装
一些命令
1 关于docker用户组
1.1 如需要查看“docker”分组下的所有用户,可以使用命令如下:
grep 'docker' /etc/group
1.2 创建用户组(一般安装docker已经创建,无需再管):
sudo groupadd docker
1.3 将某用户添加到用户组:
sudo usermod -aG docker ${USER}
1.4 重启docker服务:
sudo systemctl restart dockerd
账户重新登陆即可直接使用docker相关命令
2 关于docker的常用命令
2.1 删除image和container
docker stop 停止正在运行的container。否则无法删除container
docker rm 删除container,否则无法删除image
docker rmi 删除image 完工
2.2 修改image的名字
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
2.2 上传到自己的仓库
查看当前docker登陆的用户名:
docker info | sed '/Username:/!d;s/.* //'
如果不是想用的退出再docker login
docker tag java:my localhost:5000/java:my
docker push localhost:5000/java:my即可
3 记一次docker的实际使用
docker images 可以查看系统中已经存在的image
docker ps -a 看所有的container状态
3.1 从一个新的image开启container
开启一个container
docker run -it -v /home1/pbliu/all_data/nnUNet/rawDatasets/FLARE21/ValidationImage:/home/nnUNet_raw_data_base/ --user=root --ipc=host --gpus '"device=0,1"' --name=nnunetFLARE_test nbutter/nnunet:latest /bin/bash
# openface
# -rm 貌似你在停止container的时候,就默认把那个container删掉了
docker run -it --rm algebr/openface:latest
# 存货
-v /iflytek/pbliu/2nd_TechValid:/home/openface-build/2nd_TechValid -v /iflytek/pbliu/2nd_TechValid/processed:/home/openface-build/processed -v /home/pbliu/Project1_DepressionEstimation_Pingcheng:/home/openface-build/code
docker run -it -v /home/pbliu/Project1_DepressionEstimation_Pingcheng:/home/openface-build/code -v /iflytek/pbliu/3nd_TechValid/openface_workspace_AD_hzd_20230621__ChaLouBuQue_tmp:/home/openface-build/3nd_TechValid/openface_workspace_AD_hzd_20230621__ChaLouBuQue_tmp -v /iflytek/pbliu/3nd_TechValid/processed_tmp:/home/openface-build/processed --user=root --ipc=host openfacev1.2:latest # 没有/bin/bash了
ps:有时候进去之后不是root用户,可以加上--user root
要安装东西,
apt update
apt install vim
pip install moduleName -i https://pypi.douban.com/simple
如果你只是想运行一下,那就用--rm的模式:
docker container run --gpus "device=1" --name teamname --rm -v $PWD/inputs/:/workspace/inputs/ -v $PWD/teamname_outputs/:/workspace/outputs/ teamname:latest /bin/bash -c "sh predict.sh"
3.2 container和外界的一些交互
本地文件和container文件的传输,传输方向自己调换位置就可以了;文件夹也不用-r 2333
docker cp /home1/pbliu/Personal/nnUNet_FLARE21 ba9d58ac0651:/home/
注:使用nnunet的镜像要pip uninstall nnunet(默认安装了镜像中了),或者你直接去修改他使用的代码也可以。我习惯在自己的代码上修改,所以用自己的code
推出container时,可以ctrl+D,也可以输入exit,即可退出。
3.3 container的stop和start
docker stop container 或者在container内部的命令行运行$ exit 是直接停止了container
docker start container即可再次启动
# 退出container后想再次进入,启动container,然后:
docker attach container
3.3 container经过修改后commit到一个新的image
当我们在一个image的基础上进行相应修改后,希望将修改保存,有两个路子,一个就是直接在系统内保存为一个新的image。
docker commit -a 'ek' -m '1314' 9adeb5943045 nnunet:latest
-a:修改人
-m:备注
3.4 container经过修改后保存为一个tar.gz离线文件
接3.3,另一个路子就是保存到一个离线的tar.gz文件了。又可以分为两种:
3.4.1 直接从container保存为tar
docker export f299f501774c > hangger_server.tar
# 对应导入
docker import - new_hangger_server < hangger_server.tar
3.4.2 从image保存为tar
docker save 0fdf2b4c26d3 > hangge_server.tar # 建议直接使用名字:tag打包,不然解压出来是none
docker save -o images.tar postgres:9.6 mongo:3.4 # 打包多个包
# 对应导入
docker load < hangge_server.tar
注:貌似这两种保存方式和导入方式要匹配,不能乱搞,启动时会报错。
3.5 记录
md遇到一个极其傻逼的问题,我对shell不是很熟悉,常规的cd 命令啥的都不好用在shell脚本里,直到我看到这个网站才解决了我的问题。https://bbs.huaweicloud.com/blogs/209108
不好用的命令后加 exec /bin/bash
e.g.:
cd /home exec /bin/bash
python runs.py exec /bin/bash
好像是shell环境变量的关系。。。那个换行符^M(我在新建路径的时候发现的)
3.6 疑问
docker run和docker container run的区别?
docker load 和docker image load区别?