docker常用指令, 以rustdesk的使用举例

所有 docker 操作都需要 root 权限,需要加 sudo:

[root@archlinux srv]# docker search rustdesk-server

搜索服务镜像(image),挑选有 STARS 比较多的,相对好一些。

docker pull rustdesk/rustdesk-server-s6

下载相应镜像,由于 index.docker.io 被墙,需要梯子,下载会很慢。

docker build -t NAME .

在当前目录根据 Dockerfile 构建容器, 如果你是用Dockerfile的话。

docker run -i -t --name rustdesk-server --net=host \
  -e "RELAY=r.o0o.top" \
  -e "ENCRYPTED_ONLY=1" \
  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest

这里采用多用户模式运行的,所以端口号会不同,修改211对应2xx,和名字后面的数字一致

cd /srv/rustdesk
docker run --name rustdesk-server11 \
  -p 21115:21115 -p 21116:21116 -p 21116:21116/udp \
  -p 21117:21117 -p 21118:21118 -p 21119:21119 \
  -e "RELAY=r.o0o.top:21117" \
  -e "ENCRYPTED_ONLY=1" \
  -v "$PWD/data11:/data" -d rustdesk/rustdesk-server-s6:latest

运行一个 Container=rustdesk-server,支持的参数:

-d Detached 或者 daemon mode,后台运行。
-i -t 开一个 tty 终端,保持交互模式,这两个一般共同使用。
-e 设置环境变量参数,参考 Install GitLab With Docker 。
–net=host 加了–net=host以后就不需要再做端口映射了
-p [host_port]:[container_port] 映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
-v [host-path]:[container-path] 把 HOST 文件夹挂载到 Container 用以保存数据。
–rm 自动删除已运行存在的相同 IMAGE 的容器。

docker attach --sig-proxy=false CONTAINER

attach 后台运行的容器,加上 –sig-proxy=false 参数可以通过 Ctrl+C detach,不然一旦 attach 就没办法取消,这种一般是进入带有ssh这种命令行的镜像里面的操作

docker exec CONTAINER ls -ls /

执行镜像里面的命令, 这种操作应该更常见

docker commit –run=’COMMAND’ -m ‘message’ CONTAINER IMAGE:tag

登录容器做一些修改,退出到 HOST 保存修改到镜像,或者直接在 HOST 通过 –run 给正在运行的容器发送命令并保存到镜像。

docker stop/start/restart/kill/rm CONTAINER

停止、重启、杀死、删除容器。

docker ps -a -q

列出当前运行的容器, -a 会列出所有,包括已停止的, -q 只列出容器 ID。
docker ps -a -q | xargs docker rm 可以删除所有未运行的容器。

docker logs -f CONTAINER

查看容器运行日志。

docker cp CONTAINER:/PATH HOSTPATH

拷贝容器内文件或文件夹到 HOST。目前只支持 Container 到 HOST 的单向拷贝,HOST 到 Container 可以通过 insert 命令。

docker insert IMAGE URL PATH

将 URL 文件内容写入相应 PATH,这个操作不修改原来 IMAGE 内容,而是再它的基础上新建一个 IMAGE.

docker images

列出已安装的镜像。可以通过 docker rmi IMAGE 删除镜像。

docker inspect CONTAINER

检查容器配置,包含内部 IP 等信息(grep IPAddress)。

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在Linux分类目录。将固定链接加入收藏夹。

发表回复