ubuntu使用docker创建镜像与容器

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,需要依赖于一个操作系统的环境镜像。

  1. 写一个简单的C程序,main.c
    在这里插入图片描述

  2. gcc编译main.c生成a.out
    在这里插入图片描述

  3. 查看a.out的依赖
    可见a.out依赖于
    /lib/x86_64-linux-gnu/libc.so.6
    /lib64/ld-linux-x86-64.so.2
    在这里插入图片描述

  4. 在当前目录创建依赖库的对应路径,并将依赖库拷贝
    在这里插入图片描述

  5. 创建Dockerfile文件
    在这里插入图片描述
    这里设置工作目录为/app;
    FROM scratch 指基础镜像为空;
    COPY拷贝可执行程序a.out,并将依赖库拷贝到指定位置,防止库链接出错。

  6. 创建名为hello_docker的镜像
    docker build -t hello_docker .
    在这里插入图片描述
    查看镜像是否存在
    docker images在这里插入图片描述

  7. 创建容器并运行
    docker run -it --name hello_docker hello_docker
    出现Hello docker!表示运行成功。在这里插入图片描述
    查看容器
    docker ps -a在这里插入图片描述

注:这种给软件打包的镜像与容器,在容器启动后运行可执行程序后,容器就会自动结束,在docker ps中也查询不到在运行中的容器。


二、创建“可编程环境”的镜像

基于ubuntu-18.04的开发环境,创建一个可编程环境的镜像。进入该镜像创建的容器,可以进行程序编译与运行,相当于一个ubuntu系统。

  1. 创建一个code文件夹与main.c
    在这里插入图片描述
  2. 编写Dockerfile
    在这里插入图片描述
  3. 创建镜像docker_test
    docker build -t docker_test .
    在这里插入图片描述
    查看镜像,docker_test创建成功在这里插入图片描述
  4. 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命令

  1. 启动容器
    docker start container_name
  2. 进入容器
    启用交互模式,可利用命令行进行交互(需要容器中包含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

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值