Docker 常用指令

1. docker run

docker run :创建一个新的容器并运行一个命令

语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-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=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷

eg. sudo docker run -it -p 6622:22 -d --privileged -v /dev/bus/usb/:/dev/bus/usb/ --name="ros_foxy" ros:foxy-ros-base-l4t-r32.4.4

2. docker 容器

#退出容器
exit
Ctrl+P+Q

#查看运行容器
docker ps 
docker container ls

#查看所有容器
docker ps -a
docker container ls -a

#启动已经停止的容器
docker start ${Container ID}

#停止容器
docker stop ${Container ID}

#重启容器
docker restart ${Container ID}

#查看容器分层级显示的信息
docker inspect ${Container ID}

#停用全部运行中的容器
docker stop $(docker ps -q)

#删除一个容器
docker rm -f ${Container ID}

#删除全部容器
docker rm -f $(docker ps -aq)

#导出容器
docker export ${Container ID} > ${file_path/file_name}

#导入容器快照,成为一个镜像,相比docker save,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照
docker import ${file_path/file_name} ${docker_image_name}
#单独说一下Docker容器的进入方式,共有四种

#后台启动时进入容器时,使用attach命令(使用attach进入容器后,再退出这个容器,会导致容器的停止)
docker attach ${Container ID}

#后台启动时进入容器时,使用exec命令(使用exec进入后台运行的容器,从容器中退出,不会导致容器的停止)
docker exec -it ${Container ID} /bin/bash

#SSH方式连接,也就是通过外部IP访问,这里不详细阐述

#使用nsenter进入Docker
#在主机中安装nsenter
$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz  
$ tar -xzvf util-linux-2.24.tar.gz  
$ cd util-linux-2.24/  
$ ./configure --without-ncurses  
$ make nsenter  
$ sudo cp nsenter /usr/local/bin  

#nsenter可以访问另外一个进程的名称,所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID
#使用docker inspect查看该PID
sudo docker inspect ${Container ID}

#显示该容器第一个PID
sudo docker inspect -f {{.State.Pid}} ${Container ID}

sudo nsenter --target ${FIRST PID} --mount --uts --ipc --net --pid  

3. docker 镜像

#获取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS:选项。可以使用如下OPTIONS:
-a, –all-tags:从镜像仓库中下载所有被标记的镜像
–disable-content-trust:跳过验证
NAME:仓库名
TAG:标签
DIGEST:数据摘要

#查看镜像提交历史信息
docker history IMAGE [IMAGE...]

#列出镜像
docker image ls
docker images

#列出所有镜像
docker image ls -a
docker images -a

#删除镜像
docker image rm
docker rmi

#从容器中导出镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
eg. docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 

#打包一个镜像,会保存该镜像的的所有历史记录,比docker export命令导出的文件大
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
-o, --output string :写入一个文件,取代标准输出
eg. docker save -o /tmp/test.tar nginx:latest

#载入镜像
docker load [OPTIONS]
OPTIONS 说明:
--input , -i : 指定导入的文件,代替 STDIN
--quiet , -q : 精简输出信息。
eg. docker load --input fedora.tar

#使用 Dockerfile 创建镜像
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--squash :将 Dockerfile 中所有的操作压缩为一层。
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network: 默认 default。在构建期间设置RUN指令的网络模式

eg. sudo docker build -t ros:foxy -f Dockerfile.ros.foxy  --build-arg BASE_IMAGE="nvcr.io/nvidia/l4t-base:r32.4.3" .

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值