Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

命令整理 —— Docker常用命令 #4

Open
Heqingsong opened this issue Aug 15, 2019 · 0 comments
Open

命令整理 —— Docker常用命令 #4

Heqingsong opened this issue Aug 15, 2019 · 0 comments

Comments

@Heqingsong
Copy link
Owner

image

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的镜像

docker build [选项] <上下文路径/URL/>
docker build ./
docker build https://github.com/Heqingsong/article_suix.git

参数
--rm=true表示构建成功后,移除所有中间容器
--no-cache=false表示在构建过程中不使用缓存

指定repo和可选的tag

docker build -t repo[:tag]

开启/停止/重启容器

docker start/stop/restart [容器名字]

启动一个容器并进入交互模式

docker start -i [容器名字]

显示所有的容器,包括未运行的

docker ps -a

显示正在运行中的容器列表

docker ps

收集有关容器和镜像的底层信息

docker inspect [image | container]

删除一个或多个容器

docker rm [容器名字]

删除所有的容器

docker rm docker ps -a -q

清理批量后台停止容器

docker rm -f $(docker ps -qa)

删除一个或多个镜像

docker rmi [选项] <镜像名字>

删除虚悬镜像

docker rmi $(docker images -q -f dangling=true)

强制杀掉运行中的容器

docker kill b8446934bf9c

停止所有正在运行的容器

docker kill $(docker ps -q)

运行指定ID的docker镜像

docker run b8446934bf9c

将容器的端口映射到宿主机的端口【主机端口:容器端口】

docker run -i -t -p -rm 80:3000 a930416db1fa

使用镜像创建容器并进入交互模式, login shell是/bin/bash

docker run -i -t [镜像名字] /bin/bash
docker run -it --rm ubuntu:14.04 bash

hello world 例子

docker run learn/tutorial echo “hello word”

在learn/tutorial镜像里面安装ping程序

docker run learn/tutorial apt-get install -y ping

查看镜像支持的环境变量

docker run IMAGE env

创建一个web容器并加载一个数据卷到容器的 /webapp目录

sudo docker run -d -P --name web -v /webapp training/webapp python app.py

查看本地安装过的镜像

docker images

列出本地所有的镜像

docker images -a

列出本地镜像的id

docker images -q

查看虚悬镜像

docker images -f dangling=true

在docker index中搜索image

docker search node

将一个容器固化为一个新的镜像,后面的repo:tag可选

docker commit [选项] <容器ID或者容器名字> [<仓库名>[:<tag标签名>]] 
docker commit --author "suix" --message "修改了内容" webserver nginx:v2

保存对容器的修改

1.获得镜像ID

docker ps -l

2.执行保存

docker commit [镜像id] [新的名字]

从docker registry server 中下拉image

docker pull node
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

推送一个镜像或容器到远端服务器

docker push [image | repository]

查看docker的版本号,包括客户端、服务端、依赖的Go等

docker version

查看系统(docker)层面信息,包括管理的镜像,容器数等

docker info

与运行中的容器交互

docker attach [容器名字]

列出容器内发生变化的文件和目录

docker diff [容器名字]

打印指定时间内的容器的实时系统事件

docker events

导入远程文件、本地文件和目录

docker import http://example.com/example.tar

从容器内复制文件到指定的路径上

docker cp [容器名字]:[路径] [目的地址]

登录|退出docker容器服务器[例如阿里云容器服务]

docker login/logout [options] [server]

注意:
mac,linux下第一次输入电脑本机密码
第二次输入docker推送密码

阻塞对指定容器的其它调用方法

docker wait [容器名字]

载入镜像或仓库|保存镜像到STDIN

docker load/save [镜像名字]

查看镜像内的历史版本

docker history [镜像名字]

重新命名镜像

docker rename [旧的镜像名字] [新的镜像名字]

使用centcommit:v1.0.0镜像创建一个名为test容器

docker create -it --name test centcommit:v1.0.0

获取容器的日志

docker logs

进入容器执行操作

docker exec -it webserver bash

给镜像打标签

docker tag  [镜像名字][:tag] 
docker tag d1fe488556fd registry.cn-hangzhou.aliyuncs.com/project/projectName:0.1

导出容器快照

docker export [容器名字] > nginx.tar

备份数据卷

sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

恢复数据卷

sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/dash 
sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

Dockerfile(指令不区分大小写。但是,命名约定为全部大写。)

所有Dockerfile都必须以FROM命令开始。 FROM命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像,FROM命令可以多次使用,表示会创建多个镜像。

FROM ubuntu

设置该镜像的作者

MAINTAINER suix

在shell或者exec的环境下执行的命令

RUN cd /app && npm install

单纯文件拷贝

COPY ["<源路径>","<目标路径>"]

高级复制文件(如果是压缩包会自动解压)

ADD [外部路径] [容器中的路径]
ADD ./ /www/

在容器中默认执行命令 Dockerfile只允许使用一次CMD指令

CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD ["nginx", "-g", "daemon off;"]

指定容器在运行时监听的端口

EXPOSE 3000

配置给容器一个可执行的命令,类似于CMD,Docker只允许一个ENTRYPOINT,多个ENTRYPOINT会抵消之前所有的指令

ENTRYPOINT ["executable", "param1","param2"]
ENTRYPOINT command param1 param2

指定RUN、CMD与ENTRYPOINT命令的工作目录

WORKDIR /www

设置环境变量,它们使用键值对,增加运行程序的灵活性

ENV <key> <value>
ENV <key>=<value> <key1>=<value1>

设置环境变量,与ENV不同的是在将来运行时是不会存在这些环境变量的

ARG <参数名>[=<默认值>]

镜像正在运行时设置一个UID

USER

授权访问从容器内到主机上的目录

VOLUME ["/data"]

设置检查容器健康状况

HEALTHCHECK [选项] CMD<命令>

在下一次构建的时候运行

ONBUILD <命令>
**例子:**
FROM node:slim
RUN "mkdir /app"
WORKDIR /app
ONBUILD COPY ./package.json /app
ONBUILD RUN ["npm","install"]
ONBUILD COPY . /app/
CMD ["npm", "start"]

设置不喜欢构建时传给Docker引擎可以配置文件

.dockerignore

@Heqingsong Heqingsong changed the title Docker 常用命令整理 命令整理 —— Docker常用命令 Aug 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant