Docker 常用命令笔记

前提准备

  • 宿主机操作系统 Win10
  • Docker desktop community 2.1.0.5(40683)
    • Docker version 19.03.5, build 633a0ea

常用命令

1. 运行 Docker HelloWorld

  1. 初次使用docker run运行HelloWorld

    docker run ubuntu /bin/echo "Hello world"
    Hello world
    

    这是本机首次运行docker run,该命令会导致docker会从docker hub下载相应的镜像(image)ubuntu,在本机实例化它的一个容器,启动该容器,并在该容器中运行/bin/echo "Hello world",然后停止该容器的运行;

    对该命令的解释 :

    1. 容器(container)操作系统使用了ubuntu
    2. 在宿主机命令行终端执行以上命令,显示Hello world然后返回宿主机命令行终端;
    3. 如果本地镜像(image)列表中不存在ubuntu则会尝试从docker hub获取:
      例如 : latest: Pulling from library/ubuntu
  2. docker ps查看运行中的容器

    docker ps
    CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES
    

    对该命令的解释 :

    1. 使用 docker container ls 效果跟该命令相同。
    2. 执行docker run ubuntu /bin/echo "Hello world"结束后,再执行docker ps,输出结果为空,原因是docker ps只输出运行中的容器,而该容器已经停止运行。使用docker ps -a可以看到该容器的状态,如下所示。
  3. docker ps查看所有容器:运行中的+已经结束的

    docker ps -a
    CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES
    637db579c54a     ubuntu     "/bin/echo 'Hello wo…"   8 minutes ago     Exited (0) 8 minutes ago thirsty_rubin
    

    对该命令的解释 :

    1. 使用 docker container ls -a 效果跟该命令相同。
    2. 从该命令的输出结果可以看出,上面执行Hello World 命令所所使用的容器已经处于退出状态,也就是不在处于运行状态了。
  4. docker image ls 查看本地镜像

    docker image ls
    REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
    ubuntu                 latest              775349758637        4 weeks ago         64.2MB
    

    对该命令的解释 :
    从该命令的输出可以看到,最初本机是没有任何镜像文件的,但是通过上面的Hello World命令,本机出现了一个ubuntu镜像文件。该镜像文件其实就是dockerdocker hub中拉取下来的。

2. 跟容器交互

上面执行完Hello World命令之后,我们知道相应的容器已经停止了,现在我们再启动镜像ubuntu的一个容器并进入容器进行操作。

  1. 启动并进入容器命令行

    docker run -it ubuntu /bin/bash
    root@c579ada9f94b:/#
    

    对该命令的解释 :

    1. 该命令行会使用镜像ubuntu启动一个新的容器对象,该容器跟上面步骤中的容器是不同的容器对象。
    2. 此时我们会离开宿主机命令行,进入到了容器操作系统ubuntubash命令行中。

    使用宿主机其他命令行运行docker ps确认该容器跟上面运行Hello World命令时的容器不同 :

    docker ps -a
    CONTAINER ID   IMAGE   COMMAND   CREATED   STATUS   PORTS   NAMES
    c579ada9f94b   ubuntu   "/bin/bash"   10 minutes ago   Up 10 minutes   vigorous_blackwell
    826d239a93b5   ubuntu   "/bin/echo 'Hello wo…"   25 minutes ago   Exited (0) 25 minutes ago   strange_mendel
    

    这里多出了一个容器CONTAINER IDc579ada9f94b,这就是我们正在运行bash命令的容器,而运行Hello World命令时容器的CONTAINER ID637db579c54a,已经停止,注意这两个容器是不同的。

  2. 容器变动后保存到镜像(比如在容器中安装或者卸载了软件)

    1. 找到相应容器最新的状态
    docker ps -l
    
    1. 提交容器最新变化到镜像
    docker commit {container} {image}
    
  3. 连接到运行中的容器

    docker exec -it 229 /bin/bash
    

    例子解释 :

    1. 229 是容器CONTAINER ID 的前缀;
  4. 从容器中复制文件到宿主机

       docker cp 229:/README.md  .
    

    例子解释 : 复制容器文件系统文件./README.md到宿主机文件系统当前路径

    1. 229 是容器CONTAINER ID 的前缀;
    2. /README.md 是容器中的一个文件的绝对路径;
    3. . 是宿主机当前路径;
  5. 从宿主机复制文件到容器

     docker cp application.yml 229:/application.yml
       ```
     例子解释 : 复制宿主机文件系统当前目录下文件`application.yml`到容器文件系统根目录
     1. `229` 是容器`CONTAINER ID` 的前缀;
     2. `application.yml` 表示宿主机文件系统当前目录的一个文件;  			 
    
    

3. 发布自己的镜像

  • 前提
    1. docker hub 上要有自己的账号,比如 andy
    2. docker hub 上自己账号下面要有 repository : pristine
  • 命令行
    	docker tag 1760 andy/pristine:andy-ubuntu
    	docker push andy/pristine:andy-ubuntu
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值