Docker系列(二)---基本操作和使用

操作命令

Docker提供了一组功能强大的操作命令,通过它们可以完成管理、操作等任务。

命令格式:

docker [option] [command] [arguments]

命令说明:

  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

查看子命令的帮助:

docker docker-subcommand --help

使用镜像

Docker 容器是根据 Docker Image构建的。 默认情况下,Docker 从 Docker Hub 中提取这些镜像,Docker 是 Docker 项目背后的公司,管理着 Docker 注册中心。 任何人都可以在 Docker Hub 上托管他们的 Docker 映像,所以你需要的大多数应用程序和 Linux 发行版都会在那里托管映像。

测试是否可用

docker run hello-world

Docker 最初无法在本地找到 hello-world 映像,因此它从 Docker Hub (默认存储库)下载了这个映像。 下载IMage后,Docker 根据Image和执行的容器内的应用程序创建一个容器,显示消息。

常用命令

搜索镜像

magc@magc-ThinkPad-T480:~$ docker search ubuntu
NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   10811               [OK]
dorowu/ubuntu-desktop-lxde-vnc                            Docker image to provide HTML5 VNC interface …   419                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   244                                     [OK]
consol/ubuntu-xfce-vnc                                    Ubuntu container with "headless" VNC session…   214                                     [OK]
ubuntu-upstart                                            Upstart is an event-based replacement for th…   106                 [OK]
ansible/ubuntu14.04-ansible                               Ubuntu 14.04 LTS with ansible                   98                                      [OK]
neurodebian                                               NeuroDebian provides neuroscience research s…   68                  [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          50                                      [OK]
ubuntu-debootstrap                                        debootstrap --variant=minbase --components=m…   44                  [OK]
nuagebec/ubuntu                                           Simple always updated Ubuntu docker images w…   24                                      [OK]
i386/ubuntu                                               Ubuntu is a Debian-based Linux operating sys…   19
1and1internet/ubuntu-16-apache-php-5.6                    ubuntu-16-apache-php-5.6                        14                                      [OK]
1and1internet/ubuntu-16-apache-php-7.0                    ubuntu-16-apache-php-7.0                        13                                      [OK]
eclipse/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   12                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10   ubuntu-16-nginx-php-phpmyadmin-mariadb-10       11                                      [OK]
1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4         ubuntu-16-nginx-php-5.6-wordpress-4             7                                       [OK]
1and1internet/ubuntu-16-apache-php-7.1                    ubuntu-16-apache-php-7.1                        6                                       [OK]
darksheer/ubuntu                                          Base Ubuntu Image -- Updated hourly             5                                       [OK]
pivotaldata/ubuntu                                        A quick freshening-up of the base Ubuntu doc…   4
1and1internet/ubuntu-16-nginx-php-7.0                     ubuntu-16-nginx-php-7.0                         4                                       [OK]
pivotaldata/ubuntu16.04-build                             Ubuntu 16.04 image for GPDB compilation         2
smartentry/ubuntu                                         ubuntu with smartentry                          1                                       [OK]
1and1internet/ubuntu-16-php-7.1                           ubuntu-16-php-7.1                               1                                       [OK]
pivotaldata/ubuntu-gpdb-dev                               Ubuntu images for GPDB development              1
1and1internet/ubuntu-16-sshd                              ubuntu-16-sshd                                  1                                       [OK]

更换国内Docker仓库

在服务器本机的/etc/docker/下新建daemon.json,并输入以下内容:如果需要更换不同的镜像地址,直接替换掉“https://alzgoonw.mirror.aliyuncs.com”即可

{ 
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] 
}

重启并加载配置:

systemctl daemon-reload   //载入daemon.json
systemctl restart docker   //重启docker

查看是否生效:
通过docker info命令,可以在底部看到仓库地址已经更新了。

下载镜像

docker pull ubuntu

在下载了一个映像之后,您可以使用 run 子命令使用下载的映像运行一个容器。 正如您在 hello-world 示例中看到的那样,如果使用 run 子命令执行 Docker 时没有下载映像,Docker 客户机将首先下载映像,然后使用它运行一个容器。

查看本地镜像

magc@magc-ThinkPad-T480:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              4e5021d210f6        4 weeks ago         64.2MB

本地的镜像可以运行形成容器,它可以被修改,生成新的镜像文件,

运行容器

使用镜像启动容器

作为一个例子,让我们使用最新的 Ubuntu 映像运行一个容器。 I 和 t 开关的组合使您可以对容器进行交互式 shell 访问:

docker run -it ubuntu

注:其中i和t参数的组合会使你可以使用与容器进行交互式的Shell
启动后,将得到类似下面的终端提示:

root@d9b100f2f636:/#

注意命令提示符中的容器 id。 在这个示例中,它是 d9b100f2f636。 稍后您将需要该容器 ID 来标识需要移除的容器。

现在,您可以在容器内运行任何命令。 例如,让我们更新容器内的包数据库。 你不需要给任何命令加上 sudo 的前缀,因为你是以 root 用户的身份在容器中操作的:

apt-get update

这里试着安装一下nodejs:

sudo apt-get install nodejs

安装之后,查看Nodejs的版本:

node -v

注:在容器中所作的修改只适用于当前容器。直接退出后将消失。

退出容器

使用exit命令来退出当前容器

exit

管理Docker

查看容器

使用 Docker 一段时间后,您的计算机上将有许多活动(正在运行)和非活动容器。 要查看活动的文件,请使用:

# 查看活动的容器
docker ps 
# 查看所有容器(活动的和非活动的)
docker ps -a
# 查看最新创建的容器
docker ps -l

例如:

magc@magc-ThinkPad-T480:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
cb997f81f82c        ubuntu              "/bin/bash"         2 minutes ago       Exited (127) 30 seconds ago                       charming_dewdney
6e5462d590b6        ubuntu              "/bin/bash"         8 minutes ago       Exited (0) 3 minutes ago                          modest_blackburn

magc@magc-ThinkPad-T480:~$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
cb997f81f82c        ubuntu              "/bin/bash"         4 minutes ago       Exited (127) 2 minutes ago                       charming_dewdney

启动容器

若要启动已停止的容器,请使用 docker start,后跟容器 ID 或容器名称。 让我们启动 ID 为 cb997f81f82c的基于 ubuntu 的容器:

magc@magc-ThinkPad-T480:~$ docker start cb997f81f82c
cb997f81f82c
magc@magc-ThinkPad-T480:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
cb997f81f82c        ubuntu              "/bin/bash"         7 minutes ago       Up 12 seconds                           charming_dewdney

注: 启动新容器时,可以通过参数 --name 来指定一个名字, 还可以使用–rm参数,代表该容器停止时就自动删除

连接到正在运行的容器

先找到要连接的容器的ID,
docker exec -it /bin/bash

停止容器

若要停止正在运行的容器,请使用 docker stop,后跟容器 ID 或名称。

magc@magc-ThinkPad-T480:~$ docker stop cb997f81f82c
cb997f81f82c
magc@magc-ThinkPad-T480:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

删除容器

当您决定不再需要容器时,使用 docker rm 命令移除它,同样使用容器 ID 或者名称。 使用 docker ps-a 命令查找与 hello-world 映像关联的容器的容器 ID 或名称并将其删除。

注:容器可以转换成IMage,您可以使用这些IMage构建新的容器。

保存容器的修改到镜像中

启动 Docker 映像时,您可以像使用虚拟机一样创建、修改和删除文件。 您所做的更改只适用于该容器。 您可以启动和停止它,但是一旦使用 docker rm 命令销毁它,更改将永远丢失。

在这里,我们将展示如何将容器中修改保存到镜像中,以便下次直接使用最新的镜像内容。

例如,在上面我们在ubuntu的一个容器中安装了Nodejs,此时容器的状态与原始镜像已经不同,如果我们想将最新的变更保存到镜像中,以便后面可以直接使用成果,可以用下面的办法,生成一个新的镜像:

magc@magc-ThinkPad-T480:~$ docker commit -m "added Nodejs" -a "magc" 6e5462d590b6 magc/ubuntu-nodejs
sha256:824e7cdb2d5020ea901474b6b5d764ae5dc97c23223ee95c0bf17f60f1943ab1

查看本地的镜像:

magc@magc-ThinkPad-T480:~$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
magc/ubuntu-nodejs   latest              824e7cdb2d50        28 seconds ago      153MB
ubuntu               latest              4e5021d210f6        4 weeks ago         64.2MB

可以发现,其中magc/ubuntu-nodejs 就是新生成的镜像文件,大小已经比原来ubuntu镜像大了不少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值