-
Docker 常用命令
-
查看所有镜像:“docker images”
-
删除image
- docker rmi IMAGE ID
- 若上步无法删除,则需要先删除运行过该images的container,先利用“docker ps -a”查看退出的container;再利用“docker rm CONTAINER ID”;再利用上步删除images
- 若发现无法删除container,利用“docker ps”查看正在运行的container,再利用“docker stop CONTAINER ID”关闭container,最后再利用上一步操作完成
-
非root用户加入docker用户组省去sudo
-
sudo usermod -aG docker
-
查看用户组中有木有docker组“sudo cat /etc/group | grep docker”
-
确定可以直接运行docekr命令 “docker info”
-
若提示没有权限,则修改权限“sudo chmod a+rw /var/run/docker.sock”
-
-
docker基本概念
- 镜像(Image):特殊的文件系统,不包含动态数据,类似于面向程序设计中的“类”
- 容器(Container):容器是镜像运行时的实体,可以被创建,启动,停止,删除,暂停。类似于面向程序设计中的“实例”。容器的实质是进程,拥有独立的命名空间,root文件系统,网络配置等,处于一个隔离环境中。
- 仓库(Repository):镜像构成后,很容易在本机上运行,为了在其他服务器上使用镜像,需要一个集中的存储,分发镜像的服务Docker Registry 。仓库可用于存储镜像,一个仓库包含多个标签,每个标签对应一个镜像。利用<仓库名>:<标签>指定具体是该软件的哪个版本的镜像。仓库多以两段式路径出现,如jwilder/nginx-proxy,前者用户名,后者软件名。
-
docker 运行
- 有了镜像后,以该镜像为基础启动一个容器:“docker run -it --rm ubuntu:18.04 bash”
- -it:表示-i(交互式操作)和-t(终端),-it表示交互式终端
- --rm:容器退出后即删除
- ubuntu:18.04:镜像:版本
- bash:使用bash作为交互式shell,一般写作/bin/bash
- 退出容器:exit
- 有了镜像后,以该镜像为基础启动一个容器:“docker run -it --rm ubuntu:18.04 bash”
-
使用Dockerfile定制镜像
- 新建文本文件:“mkdir test && touch Dockerfile && vi Dockerfile”
- 编辑Dockerfile
- FROM:指定基础镜像。为了使镜像体积更小,可以使用:“FROM scratch”
- RUN:执行命令行命令,分为shell格式和exec格式,前者为“RUN <命令>”,后者“RUN ["可执行文件",“参数1”,“参数2”]”,类似于函数调用的格式。为了降低镜像层数,尽量减少RUN的数量,不同命令可以使用“&&”串起来,用一个RUN将其放在一层。Dockerfile支持Shell类的行尾添加 的命令换行,行首添加#注释。
- COPY:将从构建上下文目录中
<源路径>
的文件/目录复制到新的一层的镜像内的<目标路径>
位置,例如 COPY src pdffigure-detection,需要提前指定工作目录,"WORKDIR /apps" - ADD:类似于COPY,但是源路径可以是URL,一般不用
- CMD:ubuntu中CMD默认为/bin/bash
- ENV:设置环境变量
- 构建镜像:在Dockerfile目录下直接:“docker build -t nginx:v3 .”,也可以用-f指定Dockerfile路径,例如:“docker build -f Dockerfile -t nginx:v3 .”
-
其他镜像制作方法
- 从rootfs压缩包导入:docker import 压缩包(压缩包下载地址)仓库名:标签
- 保存镜像为压缩包:docker save Image(镜像名) 压缩名 ,例如"docker save hello-world" a.tar
- 从压缩包加载镜像:docker load -i 压缩包地址 ,例如"docker load -i a.tar"
-
docker的容器与本地文件复制
- 本地to容器:docker cp path Container ID:path,例如 "docker cp /home/wps/ssh.txt 1b4cd38be498:/apps/k.txt"
- 容器to本地:docker cp Container ID:path path,例如"docker cp 1b4cd38be498:/apps/requirements.txt /home/wps/r.txt"
-
容器操作
-
查看所有容器:docker ps -a
-
查看当前开启的容器:docker ps
-
开启容器:docker start Container ID
-
停止容器:docker stop Container ID
-
进入容器:docker attach Container ID
-
互不干扰的进入容器:docker exec -it Container ID bash
-
导出容器到本地:docker export Container ID > 压缩包名
-
导入容器快照:docker import 压缩包 仓库名:标签
-
删除容器:先终止容器,再删除:"docker rm Container ID"
-
容器保存为镜像:docker commit [Container ID] [仓库名:标签]
-
-
仓库操作
- 查找官方仓库镜像:docker search 镜像名
- 登录:docker login
- 拉取镜像:docker pull 镜像名
- 推送镜像:docker tag 镜像名 username/镜像名,例如:docker tag ubuntu:18.04 username/ubuntu:18.04;也可以登录后直接push,例如:docker push username/ubuntu:18.04