Docker 入门教程(镜像与容器的使用) 二

2019-10-01  本文已影响0人  404d67ac8c12

Docker 镜像与容器的使用

Docker 系统有两个程序:docker 服务端和 docker 客户端。其中 docker 服务端是一个服务进程,管理着所有的容器。docker 客户端则扮演着 docker 服务端的远程控制器,可以用来控制 docker 的服务端进程。大部分情况下 docker 服务端和客户端运行在一台机器上。

一 搜索可用的docker镜像

命令行的格式为:docker search 镜像名字,例如:

$ docker search ubuntu
NAME                             DESCRIPTION                                     STARS     OFFICIAL    AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   9978      [OK]
dorowu/ubuntu-desktop-lxde-vnc   Docker image to provide HTML5 VNC interface …   345                   [OK]
rastasheep/ubuntu-sshd           Dockerized SSH service, built on top of offi…   231                   [OK]
consol/ubuntu-xfce-vnc           Ubuntu container with "headless" VNC session…   187                   [OK]
ubuntu-upstart                   Upstart is an event-based replacement for th…   99        [OK]
ansible/ubuntu14.04-ansible      Ubuntu 14.04 LTS with ansible                   97                    [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   59        [OK]
..........
二 下载容器镜像

命令行的格式为:docker pull 镜像名字,例如:

# 下载 latest 版本的镜像
$ docker pull ubuntu

# 下载指定版本号的镜像
$ docker pull ubuntu:18.04
三 运行容器

命令行的格式为:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
1、 在容器中运行 hello world

$ docker run ubuntu:18.04 echo "hello world"
hello world

2、更新容器中的系统

$ docker run ubuntu:18.04 apt update

备注:apt update 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

四 Docker 镜像、容器的查看与删除

1、查询镜像 docker images ,可以看到所有已经存在的镜像的 ID (IMAGE ID)。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               a2a15febcdf3        5 weeks ago         64.2MB
hello-world         latest              fce289e99eb9        8 months ago        1.84kB

2、查询容器:docker ps -a,可以看到所有容器的 ID (CONTAINER ID)。

$ docker ps -a
CONTAINER ID   IMAGE               COMMAND        CREATED      STATUS                   PORTS     NAMES
ce8a07737e4f   testnet:18.04       "/bin/bash"    5 days ago   Exited (0) 5 days ago              test1
df329130a249   ubuntu_base:18.04   "/bin/bash"    2 weeks ago  Exited (0) 5 days ago              test2
39d2edba3611   ubuntu:18.04        "/bin/bash"    2 weeks ago  Exited (0) 2 weeks ago             musing_lalande

3、先删除容器:docker rm 容器ID

$ docker rm ce8a07737e4f

4、再删除镜像:docker rmi 镜像ID

$ docker rmi 9764aa177ecf

注意:

$ docker rm CONTAINER_ID   删除容器
$ docker rmi IMAGE_ID      删除镜像
五 保存对容器的修改

当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为 committing,它保存新旧状态之间的区别,从而产生一个新的版本。
命令行的格式为:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

# 1、使用 docker ps -l 命令获得安装完ping命令之后容器的id
$ docker ps -l
CONTAINER ID   IMAGE          COMMAND        CREATED        STATUS                     PORTS               NAMES
e5d13254f0fb   ubuntu:18.04   "apt update"   3 minutes ago  Exited (0) 3 minutes ago                       trusting_meninsky

# 2、使用 commit 提交更改
$ docker commit e5d13254f0fb  ubuntu-update:18.04

# 3、查看新提交的镜像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu-update       18.04               3f68ea2d04da        6 seconds ago       91.4MB
六 后台运行容器并访问

1、后台运行容器
命令行的格式为:docker run -itd IMAGE [COMMAND] [ARG...]
参数说明:

Docker 中系统镜像的缺省命令是 bash,如果不加 -it bash 命令执行后会自动会退出。这是因为如果没有衔接输入流,本身就会马上结束。加 -it 后 docker 命令会为容器分配一个伪终端,并接管其 stdin/stdout 支持交互操作,这时候 bash 命令不会自动退出。

$ docker run -itd ubuntu:18.04 /bin/bash

$ docker ps -l
docker ps -l
CONTAINER ID   IMAGE          COMMAND        CREATED        STATUS         PORTS     NAMES
77d851adc856   ubuntu:18.04   "/bin/bash"    8 minutes ago  Up 8 minutes             suspicious_golick

2、使用 exec 命令访问容器
无需任何配置访问容器最简单的两种方式:

# 容器外执行命令:`docker exec CONTAINER_ID Command`
$ docker exec 77d851adc856 ls -l /

# 容器内执行命令:`docker exec -it CONTAINER_ID /bin/bash
$ docker exec -it 77d851adc856 /bin/bash

# 退出容器:直接使用 exit 命令,退出后容器仍然在后台继续执行。
参考

ubuntu 安装 docker 以及 docker 入门教程

上一篇下一篇

猜你喜欢

热点阅读