docker命令(1)

一、容器生命周期管理

1、查看所有的容器:docker  ps -a

2、启动容器:

启动已被停止的容器:docker start <容器 ID>

停止运行中的容器:docker stop <容器 ID>

重启容器:docker restart <容器 ID>

3、杀掉一个运行中的容器:docker kill -s KILL<容器 ID>

4、删除容器:docker rm

强制删除容器:docker rm -f<容器 ID1><容器 ID2>

移出容器间的网络连接:docker rm -l<容器 ID>

删除与容器关联的卷:docker rm -v<容器 ID>

删除所有已经停止的容器:docker rm $(docker ps -a -q)

批量删除的方式:https://blog.csdn.net/jiangeeq/article/details/79499324

5、暂停/恢复容器提供服务:docker pause/unpause<容器 ID>

6、使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob且不启动:docker create --name myrunoob nginx:latest

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

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

docker run --name mynginx -d nginx:latest

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

docker run -P -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上

docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

二、容器使用操作

1、进入容器:

docker attach<容器 ID>

docker exec<容器 ID>:推荐使用 此命令,因为此退出容器终端,不会导致容器的停止。经常使用“-it”

2、查看容器的进程信息:docker top<容器名>

3、查看容器日志:

docker logs -f<容器名>:实时跟踪容器的日志输出

docker logs --since="2020-07-01" --tail=10<容器名>:查看容器从2020年7月1日后的最新10条日志

4、查看容器端口映射情况:docker port<容器名>

5、查看 Docker 的底层信息(配置和状态信息):docker inspect <容器名/ID>

三、镜像仓库

1、登录镜像仓库:docker login -u 用户名 -p 密码;登出则是:docker logout

2、从镜像仓库中拉取或者更新指定镜像:docker pull <镜像目标>;如果加”-a“则是下载所有镜像

3、将本地的镜像上传到镜像仓库(要先登陆到镜像仓库):docker push <镜像目标>

4、查找镜像:docker search

四、本地镜像管理

1、列出本地镜像中REPOSITORY为ubuntu的镜像列表:docker images ubuntu;不加目标参数则列出本地所有镜像列表:docker images

2、删除本地一个或多个镜像:docker rmi -f runoob/ubuntu:v4

3、使用 Dockerfile 创建镜像:

使用当前目录的 Dockerfile 创建:docker build -t <标签名> .

使用URL的 Dockerfile 创建:docker build github.com/creack/docker-firefox

通过Dockerfile 文件的位置创建:docker build -f /path/to/a/Dockerfile .

4、查看指定镜像的创建历史:docker history

5、将指定镜像保存成 tar 归档文件以及导入使用:docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3;docker load -inputmy_ubuntu_v3.tar

五、制作Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。就像脚本一样会自动执行我们构建镜像所需的所有指令

基础指令

FROM <定制需要的基础镜像,如运行我们的python脚本:python:3.8-alpine>

RUN <执行后面跟着的命令行命令>:RUN 、RUN [exec 格式:"可执行文件", "参数1", "参数2"]

WORKDIR <工作目录路径>:指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。

COPY <原路径> <目标路径>:从上下文目录中复制文件或者目录到容器里指定路径

CMD["<可执行文件或命令>","","",...] :类似于 RUN 指令,用于运行程序,是在docker run 时运行,而RUN是在docker build时运行。为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。

ENTRYPOINT ["","","",...]:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。但是, 如果运行 docker run 时使用了 --entrypoint 选项,此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序。

ENV = =...:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

VOLUME <路径>:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。避免容器变大,丢失重要的数据

注意1:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。而【以 && 符号连接命令】,这样执行后,就只会创建 1 层镜像。

注意2:如果 Dockerfile 中如果存在多个 CMD/ENTRYPOINT 指令,仅最后一个生效。

通过上述步骤,定制好了一个Dockerfile后,在 Dockerfile 文件的存放目录下,执行构建动作:

如:通过目录下的 Dockerfile 构建一个 nginx:test(镜像名称:镜像标签)。

docker build -t nginx:test .

注意3:命令最后的点,是上下文路径,指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

六、docker实践操作案例

1、docker容器中运行一个 Python Flask 应用来运行一个web应用

首先载入镜像:docker pull training/webapp<镜像目标>

后台运行容器,并将容器内部使用的网络端口随机映射到我们使用的主机上:docker run -d -P training/webapp python app.py

docker ps 查看容器,获取端口信息

然后网页打开:主机地址+获取的主机端口

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容