Ubuntu 安装Docker 常用命令

一、安装

Docker需要64的操作系统,kernel内核至少在3.10版本之上。
检测当前的kernel版本:

uname -r

安装Docker命令:

wget -qO- https://get.docker.com/ | sh
docker -v
# ===> Docker version 1.12.6, build 78d1802

或者:

sudo apt install curl
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

二、验证和配置

开启进程:

sudo service docker start

检测是否安装成功:

sudo docker run hello-world   //打印测试镜像信息

修改默认存储路径:

vi /etc/docker/daemon.json
添加:
{
  "data-root": "/data/docker"
}
重启:
systemctl restart docker

三、创建docker组

docker进程使用的Unix的socket而不是TCP端口,而Unix的socket属于用户root。可以使用sudo命令。如果不想使用sudo,创建一个Unix组名为docker添加当前用户。

sudo groupadd docker
sudo usermod -aG docker $USER

退出重新登录,再测试:

docker run hello-world

四、命令

卸载docker,不会删除镜像和容器,需手动删除:

rm -rf /var/lib/docker

运行容器命令:

docker run参数
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;


使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。
docker run -p 80:80 -v /data:/data -d nginx:latest

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it nginx:latest /bin/bash

在运行的容器中执行命令:

docker exec
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

查看容器密码:

docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1

查看运行的容器:

docker ps
docker ps -a   包括已经停止的。

容器的启动,停止,kill:

docker stop <容器名orID>
docker start <容器名orID>
docker kill <容器名orID>

docker stop $(docker ps -a -q)   //停止所有容器

删除容器:

docker rm <容器名orID>   单个
docker rm `docker ps -a -q` 所有

查看所有镜像:

docker images

拉取镜像:

docker pull malaohu/ssr-with-net-speeder

删除所有镜像:

docker rmi `docker images -q`

条件删除镜像:

没有打标签
docker rmi `docker images -q | awk '/^<none>/ { print $3 }'`
docker rmi $(docker images | grep "none" | awk '{print $3}')
镜像名包含关键字
docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    //其中doss-api为关键字

构建自己的镜像:

docker build -t <镜像名> <file路径>

迁移镜像:

docker save aaaa > /aaaa.tar  保存
docker load < /aaaa.tar  载入

把一个宿主机上的目录挂载到镜像里:

# -v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash

从容器内拷贝文件到主机上:

docker cp <containerId>:/file/path/within/container /host/path/target

从主机上拷贝文件到容器内:

# 用-v挂载主机数据卷到容器内
docker run -v /path/to/hostdir:/mnt $container  
# 在容器内拷贝  
cp /mnt/sourcefile /path/to/destfile 

五、删除镜像步骤

docker images # 查找image id
docker rmi 7b13adf4339f  #如果出现报错,说明有容器存在,需要先删除容器
docker ps -a  # 查看容器
docker rm ab6c1c542a11 #删除容器,可能需要先停止容器docker stop <容器名orID>
docker rmi 7b13adf4339f  #再删除镜像
#强制删除镜像
docker rmi 7b13adf4339f  -f
#一次性删除所有容器
docker rm $(docker ps -a -q)

六、细节问题

1、在构建某些镜像时需要获取cuda信息:

1、Edit/create the /etc/docker/daemon.json with the below content:
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"
}

2、Install nvidia-container-runtime package. I had followed the instructions here, but it seems nvidia-container-runtime isn't installed by default.
sudo apt-get install nvidia-container-runtime

3、sudo systemctl restart docker.service
Try your docker build again.

参考解决
2、构建时Sending build context to Docker daemon 的数据量非常大:
docker构建时会默认把dockerfile同路径下所有文件发送过去,一种解决方法是新建一个文件夹把需要的文件放进去;另一种是在同路径下新近.dockerignore文件,把忽略的文件名和文件夹放进去
3、RuntimeError: DataLoader worker (pid 69) is killed by signal: Bus error错误:
内存不足,使用–shm-size 8g指定内存

docker run -it -v /data:/tcdata --shm-size 8g com/tianchi:1.0

七、Dockerfile示例

docker build -t registry_tianchi:0.5 .
# mmdet镜像制作

# 基础镜像
FROM gouchicao/mmdetection:latest

# RUN在build时执行shell命令
RUN pip3 uninstall -y mmdet mmcv
RUN pip3 install tqdm opencv-python==4.2.0.32 mmcv==0.2.15

RUN rm -rf /mmcv
RUN rm -rf /mmdetection

# ADD ./ /将当前文件夹下所有文件加入镜像的根目录
# ADD 如果添加文件夹则必须镜像路径下有完全相同的文件名
ADD ./mmdetection /mmdetection

# 跳转工作路径,类似于cd
WORKDIR /mmdetection
RUN python3 setup.py develop

# CMD在启动容器时执行的命令
CMD ["sh", "run.sh"]

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值