docker常用命令
作用 | 命令 |
---|---|
启动/停止容器 | docker start/stop [container_name] |
删除容器 | docker rm [container_name/ID] |
删除镜像 | docker rmi [image_name/ID] |
查看正在运行的容器 | docker ps |
查看所有容器 | docker ps -a |
查看所有镜像 | docker images |
创建镜像 | docker build -t [image_name] . |
创建容器 | docker run -it --name [container_name] [image_name] |
进入正在运行中的容器 | docker exec -it [container_name] /bin/bash |
Dockerfile文件
用于创建镜像,通常包含以下步骤。
实例操作
一、创建“可执行程序及依赖库”的镜像
将一个可执行程序及其依赖库打包进镜像,该镜像不依赖于任何基础镜像,
相当于将程序打包,任何使用者利用该镜像即可执行程序,不用关心所处的开发环境。
这种无法进入目录,进入目录需要命令行工具bash,需要依赖于一个操作系统的环境镜像。
-
写一个简单的C程序,main.c
-
gcc编译main.c生成a.out
-
查看a.out的依赖
可见a.out依赖于
/lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2
-
在当前目录创建依赖库的对应路径,并将依赖库拷贝
-
创建Dockerfile文件
这里设置工作目录为/app;
FROM scratch 指基础镜像为空;
COPY拷贝可执行程序a.out,并将依赖库拷贝到指定位置,防止库链接出错。 -
创建名为hello_docker的镜像
docker build -t hello_docker .
查看镜像是否存在
docker images -
创建容器并运行
docker run -it --name hello_docker hello_docker
出现Hello docker!表示运行成功。
查看容器
docker ps -a
注:这种给软件打包的镜像与容器,在容器启动后运行可执行程序后,容器就会自动结束,在docker ps中也查询不到在运行中的容器。
二、创建“可编程环境”的镜像
基于ubuntu-18.04的开发环境,创建一个可编程环境的镜像。进入该镜像创建的容器,可以进行程序编译与运行,相当于一个ubuntu系统。
- 创建一个code文件夹与main.c
- 编写Dockerfile
- 创建镜像docker_test
docker build -t docker_test .
查看镜像,docker_test创建成功 - List item
创建容器并运行
docker run -it --name docker_test docker_test
出现以下字样表明成功创建容器,并进入容器,当前目录为Dockerfile中创建的工作目录/code
通过ls命令查看,可以发现main.c存在于/code下,
利用gcc编译main.c并运行可执行程序a.out,
出现Hello docker!
表明镜像与容器创建成功。
可通过vscode远程连接进入容器docker_test中
如何进入容器
已经创建了一个容器,后面怎么进入该容器中?
通过docker exec命令
- 启动容器
docker start container_name
- 进入容器
启用交互模式,可利用命令行进行交互(需要容器中包含bash shell)
docker exec -it container_name /bin/bash
docker exec基本语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
• OPTIONS: 可选参数,用于指定一些附加选项,比如 -i(交互式)、-t(分配伪终端)等
• CONTAINER: 要执行命令的目标容器名称或容器ID
• COMMAND [ARG…]: 要在容器内执行的命令及其参数
更过使用细节,可通过help命令查看
docker exec --help