GVKun编程网logo

docker(二):CentOS安装docker(centos安装 docker)

9

本文将为您提供关于docker(二):CentOS安装docker的详细介绍,我们还将为您解释centos安装docker的相关知识,同时,我们还将为您提供关于CentOS7系统安装docker及do

本文将为您提供关于docker(二):CentOS安装docker的详细介绍,我们还将为您解释centos安装 docker的相关知识,同时,我们还将为您提供关于CentOS 7 系统 安装docker及docker compose 组件、CentOS 7下安装Docker以及Docker的基本使用、CentOS 7安装Docker V1.0 及 Docker相关命令、CentOS 8.0 64位安装Docker 以及 Docker Compose的实用信息。

本文目录一览:

docker(二):CentOS安装docker(centos安装 docker)

docker(二):CentOS安装docker(centos安装 docker)

前置条件

 1. CentOS 7:要求系统为64位、系统内核版本为 3.10 以上

使用如下命令,查看机器配置

lsb_release -a
uname -a

2. 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

配置yum源(可做)

配置centos7的yum源(阿里云)

# 1.进入centos的yum目录
cd /etc/yum.repos.d/

# 2.备份原来的repo文件
mv CentOs-Base.repo CentOs-Base.repo.bak

# 3.下载文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 4.执行更新

  yum clean all
  yum makecache
  yum update

安装

1.删除旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.安装必要系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 

3.添加软件源信息

# 1. 配置docker源(前面执行过的 可以不执行此命令)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 2. 列出可下载安装的docker版本
yum list docker-ce.x86_64  --showduplicates |sort -r

# 3.说明:docker-ce为软件名称,不用带x86_64;用“-”分割18.06.2版本号
# 示例如下
yum install docker-ce-18.06.2.ce-3.el7
# 4. 更新yum缓存
sudo yum makecache fast

4. 启动 Docker 后台服务

sudo systemctl start docker
systemctl enable docker

 

5.测试运行 hello-world 

sudo docker run hello-world

 

 镜像加速

docker镜像仓库,(理解为maven仓库,是国外的镜像仓库,下载慢),需要配置国内镜像源,提高下载速度。

 1. 编辑该文件:vi /etc/docker/daemon.json  // 如果该文件不存在就手动创建;

2. 在文件中输入以下内容,

{
    "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

3. 有阿里云,华为云等云厂商的可以试试的云商的镜像加速,我试过感觉挺好的

 

使用普通用户执行docker(可做)

 

# 1.添加 docker 用户组,18.06已经默认做了
groupadd docker
# 2. 把需要执行的 docker 用户添加进该组,这里是 dev
gpasswd -a dev docker
# 3. 重启 docker
systemctl restart docker
#4.  切换用户
su - dev
# 5. 运行成功,查看docker启动的容器
docker ps -a

 

注意事项

如果之前是使用 root 用户拉取的镜像,mpsp用户启动镜像可能会出现问题,eg:
docker.elastic.co/elasticsearch/elasticsearch 6.2.4
会出现
mktemp: failed to create directory via template ''/tmp/elasticsearch.XXXXXXXX'': Permission denied
解决方案:
使用mpsp 用户重新拉取镜像

 

CentOS 7 系统 安装docker及docker compose 组件

CentOS 7 系统 安装docker及docker compose 组件

概述

本章将详细介绍在CentOS7.0系统下如何安装docker,分为在线安装和离线安装两部分。目前,CentOS仅发行版本中的内核支持Docker。推荐使用CentOS 7.0及以上版本,64位操作系统、系统内核版本为3.10以上。

在线安装Docker

1)首先查看CentOS版本是否要求。若不符合版本要求,请升级系统版本

cat /etc/redhat-release

2)安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

3)添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4)更新yum缓存

yum makecache fast

5)安装Docker-CE

yum -y install docker-ce

6)启动docker后台服务

systemctl start docker

7)查验docker是否安装成功

docker version

8)安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

9)赋执行权限

chmod +x /usr/local/bin/docker-compose

10)查验docker-compose是否安装成功

docker-compose version

12)设置docker服务开机自启动

systemctl enable docker

离线安装Docker

1)获取docker离线安装包,形如centos-local.tgz压缩包。(请联系我获取)

2)将离线包上传到服务器的root目录下

3)进入root目录,解压.tgz包

cd /root
tar -xvzf centos-local.tgz

4)安装createrepo

cd /root/docker-ce-local
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm

5)新增docker-ce-local.repo源文件,写入以下内容

vi /etc/yum.repos.d/docker-ce-local.repo

[docker-ce-local]

  name=Local Yum

  baseurl=file:///root/docker-ce-local/

  gpgcheck=1

  gpgkey=file:///root/docker-ce-local/gpg

  enabled=1

6)生成源索引及缓存

createrepo /root/docker-ce-local
yum makecache

7)安装docker-ce

yum install docker-ce

8)启动并测试

systemctl start docker
docker version

9)加入开机自启

systemctl enable docker

10)安装docker-compose

cp /root/docker-ce-local/docker-compose /usr/bin/

11)赋执行权限

chmod +x /usr/bin/docker-compose

12)验证版本

docker-compose version

 

CentOS 7下安装Docker以及Docker的基本使用

CentOS 7下安装Docker以及Docker的基本使用

CentOS 7 安装 Docker CE  https://cloud.tencent.com/developer/article/1382457

安装前的准备

系统要求

  • 官方推荐使用 CentOS 7 的维护版本,已经归档的版本不受支持或未经测试
  • 需要启用centos-extrasrepository。在 CentOS 7 中这个仓库是默认启用的,如果之前有将其禁用,则需要重新启用
  • 推荐使用overlay2作为 Docker 的存储驱动

卸载旧版本

旧版本的 Docker 在 CentOS 中的包名为dockerdocker-engine。如果之前安装了 Docker 的旧版本,需要先卸载旧版 Docker 及相关依赖

> sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

yum提示卸载成功没有找到相关包,即可进行下一步操作。

注意/var/lib/docker/目录下的内容,包括镜像、容器、卷组、网络等文件将被保留Docker CE 的新包名为docker-ce

安装 Docker CE

有以下三种方法安装 Docker CE,可根据实际需要选择:

  1. 建立 Docker 仓库:安装过程及后续的更新方便,Docker 官方推荐
  2. 下载 RPM 包手动安装:手动管理更新。适合离线环境
  3. 通过安装脚本自动安装:适合测试及开发环境

方法 1:建立 Docker 仓库

首次安装 Docker CE 前需要建立 Docker repository,之后可通过仓库安装并更新 Docker。

建立仓库

1.安装所需软件包yum-utils提供了yum-config-manager工具,存储驱动devicemapper则依赖于device-mapper-persistent-datalvm2

> sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

2.使用以下命令建立stable版本的 repository

> sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3.可选启用edgetest仓库。这些仓库包含在docker.repo文件中,但默认是禁用的。可以将它们与stable仓库共同启用。

> sudo yum-config-manager --enable docker-ce-edge
> sudo yum-config-manager --enable docker-ce-test

使用带--disable参数的yum-config-manager命令即可禁用edgetest仓库,使用--enable参数则会重新启用。例如下面的命令将禁用edge仓库:

> sudo yum-config-manager --disable docker-ce-edge

Docker17.06版本开始,stable仓库的 releases 也会推送至edgetest仓库中。 点击此处查看 Docker 官方关于stableedge的说明

安装 Docker CE

1.使用以下命令安装最新版 Docker CE

> sudo yum install docker-ce

如果提示是否接受 GPG 密钥,则需验证密钥指纹是否符合下面的内容,若符合即可点击 accept 继续安装:

060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35

如果启用了多个 Docker 仓库,并且在yum installyum update命令中没有指明版本,则会安装所有仓库中版本号最新的 Docker

2.要安装指定版本的 Docker CE,则需要从仓库中列出所有可用的版本,再根据需要选择安装:

> yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64            18.09.0.ce-1.el7.centos             docker-ce-stable

此时安装包名的格式为docker-ce-<VERSION STRING>。例如安装18.03.0版本的 Docker CE:

> sudo yum install docker-ce-18.03.0.ce

此时 Docker 应该已经安装完成,但还没有启动。新的用户组docker也已创建,目前为空。

3.启动 Docker

> sudo systemctl start docker

4.运行hello-world镜像以验证 Docker 是否正确安装

> sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

升级 Docker CE

如需升级 Docker CE,则可根据上述安装教程,选择安装最新版docker-ce,即可完成升级。

方法 2:下载 RPM 包手动安装

安装 Docker CE

如果无法使用 Docker 仓库,可以下载.rpm安装包手动安装 Docker CE

1.前往https://download.docker.com/linux/centos/7/x86_64/stable/Packages/,下载对应版本的 RPM 安装包

2.使用yum命令安装 RPM 包

> sudo yum install /path/to/package.rpm

3.启动 Docker

> sudo systemctl start docker

4.运行hello-world镜像以验证 Docker 是否正确安装

> sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

升级 Docker CE

如需升级,则可下载新版本的 RPM 安装包,使用yum upgrade命令升级:

> sudo yum -y upgrade /path/to/package.rpm

方法 3:通过安装脚本自动安装

通过 Docker 提供的一键安装脚本可以在开发环境中快速安装 Docker CE,且无需交互。get.docker.com 及 test.docker.com 分别对应edgetest版本,脚本源码存放在 docker-install 仓库 中。

Docker 官方不推荐在生产环境中使用安装脚本

下面的示例将使用 get.docker.com 提供的脚本安装 Docker CE 的最新发布版本。如果要安装最新测试版本,只需将脚本替换为 test.docker.com,并将下面示例命令中的get替换为test

> curl -fsSL https://get.docker.com -o get-docker.sh
> sudo sh get-docker.sh

<output truncated>

如果需要让非root用户使用 Docker,则使用以下命令将用户添加至docker用户组

> sudo usermod -aG docker your-user

注销并重新登录,即可生效。之后启动 Docker

> sudo systemctl start docker

运行hello-world镜像以验证 Docker 是否正确安装

> sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

卸载 Docker CE

1. 卸载 Docker 安装包

> sudo yum remote docker-ce

2. 删除相关文件

主机上的镜像、容器、卷组以及自定义的配置文件需要手动删除

> sudo rm -rf /var/lib/docker

参考资料

Get Docker CE for CentOS | Docker Docs

Post-installation steps for Linux | Docker Docs

Docker Docs


镜像加速
如果发现Docker拉取镜像的速度非常缓慢,可以配置加速器来解决

在这里使用阿里云的加速地址:

https://br10hqrl.mirror.aliyuncs.com

修改Docker的配置文件来设置加速地址

vim /etc/docker/daemon.json
1
{
  "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"]
}
1
2
3
如果没有该文件,新建一个

也可以通过以下命来设置

tee /etc/docker/daemon.json <<-''EOF''
{
  "registry-mirrors": ["https://br10hqrl.mirror.aliyuncs.com"]
}
EOF
1
2
3
4
5
使配置文件生效

systemctl daemon-reload && systemctl restart docker
1
删除Docker-ce
yum remove -y docker-ce
rm -rf /var/lib/docker
1
2
Docker Hello World
Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

输出Hello world

docker run ubuntu /bin/echo "hello world"
1
Unable to find image ''ubuntu:latest'' locally
latest: Pulling from library/ubuntu
7413c47ba209: Pull complete 
0fe7e7cbb2e8: Pull complete 
1d425c982345: Pull complete 
344da5c95cec: Pull complete 
Digest: sha256:c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a
Status: Downloaded newer image for ubuntu:latest
hello world
1
2
3
4
5
6
7
8
9
参数解析:

docker:Docker的二进制文件
run:与前面的docker组合使用来运行一个容器
ubuntu:latest:指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo “hello world”:在启动的容器里执行的命令
整句意思是:Docker以ubuntu:latest镜像创建一个容器,然后在容器里面执行bin/echo "hello world"命令,然后输出结果。

运行交互式的容器
我们可以通过docker的-i-t参数来让容器实现"对话"功能

docker run -it ubuntu:latest /bin/bash
root@a08b25f150bc:/# 
1
2
参数解析:

-i:允许你对容器内的标准输入 (STDIN) 进行交互。
-t:在新容器内指定一个伪终端或终端。
通过-i-t两个参数我们进入到了ubuntu这个容器内部

在容器内部运行以下命令查看当前系统版本信息和当前目录下的文件列表

root@a08b25f150bc:/# cat /proc/version
Linux version 3.10.0-957.21.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Tue Jun 18 16:35:19 UTC 2019
root@a08b25f150bc:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@a08b25f150bc:/# 

1
2
3
4
5
6
启动容器
在我们启动容器的时候通过-d参数可以使容器后台运行

docker run -d ubuntu:latest /bin/sh -c "while true; do echo hello world; sleep 1; done"
1391c001ef7f562c8c95730998a94b638f9be9fc05be9075db19fd2aa8f2fc9b

1
2
3
在输出中,我们没有看到期望的"hello world",而是一串长字符

1391c001ef7f562c8c95730998a94b638f9be9fc05be9075db19fd2aa8f2fc9b

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

首先,我们需要确认容器在运行,可以通过docker ps来查看,加-a参数可以查看所有容器,包括退出、创建中和正在运行的容器。

docker ps
1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
1391c001ef7f        ubuntu:latest       "/bin/sh -c ''while t…"   5 minutes ago       Up 5 minutes                            mystifying_burnell

1
2
3
docker ps -a
1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
1391c001ef7f        ubuntu:latest       "/bin/sh -c ''while t…"   About an hour ago   Exited (137) 19 minutes ago                          mystifying_burnell
700af38bbd37        ubuntu:latest       "/bin/bash"              About an hour ago   Exited (0) About an hour ago                         practical_wescoff
a08b25f150bc        ubuntu:latest       "/bin/bash"              About an hour ago   Exited (130) About an hour ago                       gallant_curie
6eb5efafcfe8        ubuntu              "/bin/echo ''hello wo…"   About an hour ago   Exited (0) About an hour ago                         sharp_curran
64a28ff4f5cd        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                               clever_booth

1
2
3
4
5
6
7
参数解析:

CONTAINER ID:容器ID
NAMES:自动分配的容器名称
我们可以使用docker logs ["CONTAINER" | "NAMES"]来查看容器内的标准输出和日志

docker logs 1391c001ef7f
hello world
hello world
hello world
hello world
hello world
1
2
3
4
5
6
docker logs mystifying_burnell
hello world
hello world
hello world
hello world
hello world
1
2
3
4
5
6
停止容器
我们使用docker stop ["CONTAINER" | "NAMES"]来停止容器

docker stop 1391c001ef7f
1391c001ef7f
1
2
通过docker ps查看,容器已经停止工作

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1
2
也可以使用下面的命令来停止

docker stop mystifying_burnell
1
Docker 容器的使用
Docker的所有命令
我们可以输入doker --help或者直接输入docker来查看docker的所有命令

docker --help
1
Usage:    docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  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

Run ''docker COMMAND --help'' for more information on a command.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
我们还可以通过docker COMMAND --help来查看某个选项的更多信息

docker rm --help
1
运行一个Web应用
前面我们运行的容器并没有什么特别的用处。

接下来我们尝试使用Docker构建一个web应用程序

我们将在Docker容器中运行一个 Python Flask 应用来运行一个web应用。

下载镜像
我们可以通过docker pull命令来下载镜像,如果不指定镜像的tag则默认是用latest版本的镜像

docker pull training/webapp
1
docker pull training/webapp
Using default tag: latest
latest: Pulling from training/webapp
e190868d63f8: Pull complete 
909cd34c6fd7: Pull complete 
0b9bfabab7c1: Pull complete 
a3ed95caeb02: Pull complete 
10bbbc0fc0ff: Pull complete 
fca59b508e9f: Pull complete 
e7ae2541b15b: Pull complete 
9dd97ef58ce9: Pull complete 
a4c1b0cb7af7: Pull complete 
Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for training/webapp:latest
docker.io/training/webapp:latest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
上面我所下载的镜像没有指定tag,所以默认使用的是latest的镜像版本,我们可以使用docker pull image:tag来下载指定版本的镜像。

例如,我想下载一个1.16版本的Nginx稳定版镜像

docker pull nginx:1.16
1
1.16: Pulling from library/nginx
1ab2bdfe9778: Pull complete 
f50f9bfaef26: Pull complete 
eef791162233: Pull complete 
Digest: sha256:764877c3b96e7d57f8f15bb84597dd108dcdf700bfc43fbe340dae764630386d
Status: Downloaded newer image for nginx:1.16
docker.io/library/nginx:1.16
1
2
3
4
5
6
7
当指定了tag时,docker下载镜像就会下载指定的tag版本镜像,而不是默认的latest镜像。

运行容器
docker run -d -P training/webapp python app.py
5bc0e295d0033648eb98943f33d7acfc0f603d7b62225f3db21d812f81da1634
1
2
参数解析:

-d:让容器在后台运行。
-P:将容器内部使用的端口映射到主机的随机端口,如果使用-p参数,则是指定容器内部端口映射到主机上的某个端口,具体用法-p <主机端口>:<容器内部端口>。
查看Web应用容器
我们可以使用docker ps来查看docker正在运行的容器:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
5bc0e295d003        training/webapp     "python app.py"     16 seconds ago      Up 13 seconds       0.0.0.0:32768->5000/tcp   upbeat_knuth
1
2
3
各栏目解析:

CONTAINER ID:指容器的ID,每一个容器运行时都会有一个唯一的ID。

IMAGE:容器使用的镜像。

COMMAND:容器执行的命令。

CREATED:容器创建的时间。

STATUS:容器运行的时长。

PORTS:容器的端口映射情况,后面是容器内部使用的5000端口,映射到主机的32768端口,我们访问主机的32768端口,就可以使用容器提供的服务了。

NAMES:容器的名字,可以通过--name指定,和ID一样是唯一的。

通过标准输出,我们看到了容器提供服务的端口,打开浏览器,输入主机的ip:容器映射到主机的端口,来访问容器提供的服务了,这里我输入http://192.168.6.128:32768来访问。

前面我们使用-P来随机映射端口,下面我们自己来指定端口,使用-p参数指定

docker run -d -p 5000:5000 --name web training/webapp
4c1acc0051961193cc8faf8dcacf05dea454fb960217a243ae89b8e327ee8daf
1
2
我们把容器内部的5000端口映射到主机的5000端口,打开浏览器访问http://192.168.6.128:5000,就可以得到容器提供的服务了。

查看容器的端口
我们可以通过docker ps来查看正在运行的容器的ID、名字、和端口,要查看某个容器的端口,可以根据他的容器ID或者名字来获取它的端口信息,例如:

docker ps 
1
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
4c1acc005196        training/webapp     "python app.py"     About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp    web
5bc0e295d003        training/webapp     "python app.py"     3 hours ago         Up 3 hours          0.0.0.0:32768->5000/tcp   upbeat_knuth

1
2
3
4
我们要查看第一个容器的端口信息,它的ID是4c1acc005196,名字是web

docker port 4c1acc005196
5000/tcp -> 0.0.0.0:5000
1
2
docker port web
5000/tcp -> 0.0.0.0:5000
1
2
查看容器的日志信息
当我们运行docker容器时,需要查看它的日志信息,来确定是否运行正常,我们通过docker logs [CONTAINER | NAMES]来查看

docker logs -f 4c1acc005196
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.6.1 - - [16/Aug/2019 07:00:48] "GET / HTTP/1.1" 200 -
192.168.6.1 - - [16/Aug/2019 07:00:48] "GET /favicon.ico HTTP/1.1" 404 -
1
2
3
4
-f:让docker logs可以向tail -f一样持续输出容器内部的标准输出

查看WEB应用程序容器的进程
我们可以使用docker top来查看容器内部运行的进程

docker top 4c1acc005196
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                19910               19891               0                   14:02               ?                   00:00:01            python app.py
1
2
3
检查WEB应用程序
使用docker inspect来查看Docker的底层信息,他会返回一个json文件记录着Docker容器的配置和状态信息。

docker inspect 4c1acc005196
1
[
    {
        "Id": "4c1acc0051961193cc8faf8dcacf05dea454fb960217a243ae89b8e327ee8daf",
        "Created": "2019-08-16T06:02:31.210492449Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 19910,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-08-16T06:02:32.26229118Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
停止WEB应用容器
docker stop 4c1acc005196
4c1acc005196
1
2
重启WEB应用程序
已经停止的容器,我们可以使用docker start来启动

我们先找出退出容器的ID和名字,然后启动它,我们使用docker ps -a来找出退出的容器。

docker ps -a
1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                     NAMES
4c1acc005196        training/webapp     "python app.py"          2 hours ago         Exited (137) 6 minutes ago                             web
5bc0e295d003        training/webapp     "python app.py"          4 hours ago         Up 4 hours                   0.0.0.0:32768->5000/tcp   upbeat_knuth
1
2
3
我们还可以通过docker ps -l查询最后一次创建的容器

docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
4c1acc005196        training/webapp     "python app.py"     2 hours ago         Up 8 minutes        0.0.0.0:5000->5000/tcp   web
1
2
3
上面输出我们获取了退出容器的ID,下面启动它

docker start 4c1acc005196
4c1acc005196
1
2
正在运行的容器我们可以通过docker restart来重启。

删除WEB应用容器
我们可以使用docker rm命令来删除不需要的容器

docker stop 4c1acc005196
4c1acc005196

docker rm 4c1acc005196
4c1acc005196
1
2
3
4
5
删除容器时,容器必须是停止状态,否则会报错,但是可以使用-f参数来强制删除。

docker rm 4c1acc005196
Error response from daemon: You cannot remove a running container 4c1acc0051961193cc8faf8dcacf05dea454fb960217a243ae89b8e327ee8daf. Stop the container before attempting removal or force remove
1
2
Docker 镜像的使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

下面我们来学习:

1、管理和使用本地 Docker 主机镜像
2、创建镜像
列出镜像列表
我们可以使用 docker images 来列出本地主机上的镜像。

runoob@runoob:~$ docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        11 months ago       348.8 MB
1
2
3
4
5
6
7
8
9
10
各个选项说明:

**REPOSITORY:**表示镜像的仓库源
**TAG:**镜像的标签
**IMAGE ID:**镜像ID
**CREATED:**镜像创建时间
**SIZE:**镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#
1
2
如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:

runoob@runoob:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/# 
1
2
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

获取一个新的镜像
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

Crunoob@runoob:~$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10
1
2
3
4
5
6
7
8
9
下载完成后,我们可以直接使用这个镜像来运行容器。

查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

runoob@runoob:~$  docker search httpd
1


**NAME:**镜像仓库源的名称

**DESCRIPTION:**镜像的描述

**OFFICIAL:**是否docker官方发布

拖取镜像
我们决定使用上图中的httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。

runoob@runoob:~$ docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
8b87079b7a06: Pulling fs layer 
a3ed95caeb02: Download complete 
0d62ec9c6a76: Download complete 
a329d50397b9: Download complete 
ea7c1f032b5c: Waiting 
be44112b72c7: Waiting
1
2
3
4
5
6
7
8
9
下载完成后,我们就可以使用这个镜像了。

runoob@runoob:~$ docker run httpd
1
创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像
更新镜像
更新镜像之前,我们需要使用镜像来创建一个容器。

runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/# 
1
2
在运行的容器内使用 apt-get update 命令进行更新。

在完成操作之后,输入 exit命令来退出这个容器。

此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。

runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
1
2
各个参数说明:

**-m:**提交的描述信息
**-a:**指定镜像作者
**e218edb10161:**容器ID
**runoob/ubuntu:v2:**指定要创建的目标镜像名
我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:

runoob@runoob:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB
1
2
3
4
5
6
7
8
9
10
11
使用我们的新镜像 runoob/ubuntu 来启动一个容器

runoob@runoob:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash                            
root@1a9fbdeb5da3:/#
1
2
构建镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo ''root:123456'' |chpasswd
RUN     useradd runoob
RUN     /bin/echo ''runoob:123456'' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
1
2
3
4
5
6
7
8
9
10
11
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---&gt; d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---&gt; Using cache
 ---&gt; 0c92299c6f03
Step 3 : RUN /bin/echo ''root:123456'' |chpasswd
 ---&gt; Using cache
 ---&gt; 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
1
2
3
4
5
6
7
8
9
10
11
12
参数说明:

-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
hello-world         latest              690ed74de00f        6 months ago         960 B
centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB
1
2
3
4
5
6
7
8
9
10
11
12
13
我们可以使用新的镜像来创建容器

runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id runoob
uid=500(runoob) gid=500(runoob) groups=500(runoob)
1
2
3
从上面看到新镜像已经包含我们创建的用户runoob

设置镜像标签
我们可以使用 docker tag 命令,为镜像添加一个新的标签。

runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev
1
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。

runoob@runoob:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/centos       6.7                 860c279d2fec        5 hours ago         190.6 MB
runoob/centos       dev                 860c279d2fec        5 hours ago         190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        22 hours ago        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago          188 MB
php                 5.6                 f40e9e0f10c8        10 days ago         444.8 MB
nginx               latest              6f8d099c3adc        13 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
centos              6.7                 d95b5ca17cc3        6 months ago        190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dcoker 容器的连接
前面我们实现了通过网络端口来访问运行在 docker 容器内的服务。下面我们来实现通过端口连接到一个 docker 容器

网络端口映射
我们创建了一个 python 应用的容器。

runoob@runoob:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d
1
2
另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。

我们使用 -P 参数创建一个容器,使用 docker ps 可以看到容器端口 5000 绑定主机端口 32768。

runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
fce072cc88ce        training/webapp     "python app.py"     4 minutes ago       Up 4 minutes        0.0.0.0:32768->5000/tcp   grave_hopper
1
2
3
我们也可以使用 -p 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。
runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
33e4523d30aa        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp    berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     8 minutes ago        Up 8 minutes        0.0.0.0:32768->5000/tcp   grave_hopper
1
2
3
4
5
6
另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。

runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES
95c6ceef88ca        training/webapp     "python app.py"     6 seconds ago       Up 6 seconds        5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     10 minutes ago      Up 10 minutes       0.0.0.0:32768->5000/tcp              grave_hopper
1
2
3
4
5
6
7
这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。

上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES
6779686f06f6        training/webapp     "python app.py"     4 seconds ago       Up 2 seconds        5000/tcp, 127.0.0.1:5000->5000/udp   drunk_visvesvaraya
95c6ceef88ca        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     12 minutes ago      Up 12 minutes       0.0.0.0:32768->5000/tcp              grave_hopper
1
2
3
4
5
6
7
8
docker port 命令可以让我们快捷地查看端口的绑定情况。

runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001
1
2
Docker容器连接
端口映射并不是唯一把 docker 连接到另一个容器的方法。

docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。

docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

容器命名

当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 –name 标识来命名容器,例如:

runoob@runoob:~$  docker run -d -P --name runoob training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441
1
2
我们可以使用 docker ps 命令来查看容器名称。

runoob@runoob:~$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
43780a6eabaa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:32769->5000/tcp   runoob
1
2
3
点赞 1
————————————————
版权声明:本文为CSDN博主「莫失莫忘c」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/TangXuZ/article/details/100082144

CentOS 7安装Docker V1.0 及 Docker相关命令

CentOS 7安装Docker V1.0 及 Docker相关命令

CentOS 7安装Docker V1.0

rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum -y install docker-io                      # 仅此一条命令就可以搞定;

#service docker start    //启动

#service docker restart  //重启

#service docker stop    //停止

sudo docker runhello-world                     #验证安装是否成功

chkconfig docker on                            # 加入开机启动


docker命令:http://blog.csdn.net/opensure/article/details/46490749

#sudo docker images  //在本机进行镜像查看
# sudo docker version //docker服务器对应版本查看
#sudo docker  //查看docker的所有命令
#sudo docker command --help  //查看单个docker命令的帮助,如docker ru--help

如果你想通过很快捷的方式查看容器的端口
#sudo docker port 容器ID或容器名称
 
查看容器的具体信息
以JSON的格式返回容器的具体信息
#sudo docker inspect容器ID或容器名称
进入容器执行命令
#sudo docker exec -it 容器ID /bin/bas
查看容器的日志
$sudo docker logs 容器ID或容器名称
退出当前容器
$sudo exit  //在容器内部执行该命令(或crtl+D),一般在交互模式下退出当前容器
创建容器
# sudo docker create--name ubuntContainer ubuntu:14.04 /bin/echo ''Hello world''
重启容器
#sudo docker restart 容器ID
暂停容器
#sudo docker pause 容器ID  //暂停
#sudo docker unpause 容器ID //解除暂停
停止容器
$sudo docker stop 容器ID或容器名称
 
#docker stop $(docker ps -q -a)  //一次性停止所有容器,慎用
杀死容器
$sudo docker kill 容器ID或容器名称
删除容器
$sudo docker rm 容器ID或容器名称   //删除容器,正在运行的容器不能删除
#sudo docker rm $(docker ps -q -a)  //一次性删除所有容器,慎用
以交互模式启动一个容器,将物理机的/src/webapp挂载到/opt/webapp下
#sudodocker run -t -i  -v /src/webapp:/opt/webappubuntu:14.04 /bin/bash
Ø  把物理机的文件挂载到容器里
#sudo dockerrun -t -i  -v/src/webapp/test.html:/opt/webapp/test.html ubuntu:14.04 /bin/bash
从容器内部拷贝文件到物理机
#sudo docker cp cd0f61fb8256:/opt/a.html /
列出容器里被改变的文件夹或文件
#sudo docker diff 容器ID
Docker镜像相关命令
镜像查看
#sudo docker images  //在本机进行镜像查看
 
#sudo docker inspect 镜像ID   //查看单个镜像的具体信息,以JSON格式返回
获取镜像
# sudo docker pull centos    //从DockerHub获取镜像
 
查询镜像
#sudo docker search 镜像名称  //从DockerHub按照镜像名称模拟查询镜像
制作镜像
ü  通过Dockerfile构建镜像
#sudo cd /              //来到根“/”下
#sudo mkdir redis       //创建redis文件夹
#touch Dockerfile       //创建Dockerfile文件,文件内容见如下灰色部分
给镜像打标签
#sudo docker tag 5db5f8471261 ouruser/sinatra:devel  //当commit or build后,对镜像打标签
推送镜像到私有库
ü  下载私有仓库镜像
# docker pull registry           #从DockerHub下载registry镜像,里面含私库的运行环境,#当然你也可以自己下载源码包,自己安装
ü  推送之前打tag
# docker tag 704ca5ad68c5 192.168.202.213:5000/newtouch/activemq #打标签(必须先打标签,#在推送)
ü  Push tag到镜像
#docker push 192.168.202.213:5000/newtouch/activemq    #将此tag推送到私有库
ü  Push到仓库后,远程查看
#curl http://192.168.202.213:5000/v1/search             #push之后,远程查看
ü  在另外一个docker客户端,从私有仓库下载
#docker pull 192.168.202.213:5000/newtouch/activemq

删除镜像
#sudo docker rmi 镜像ID
列出镜像的变更历史
# docker history
Docker运维相关命令
在物理机下查看有哪些容器
$ sudo docker ps       //查看有那些正在运行着的容器


# 查看所有镜像
docker images

# 正在运行容器
docker ps

# 查看docker容器
docker ps -a

# 启动tomcat:7镜像
docker run -p 8080:8080 tomcat:7

# 以后台守护进程的方式启动
docker run -d tomcat:7

# 停止一个容器
docker stop b840db1d182b

# 进入一个容器
docker attach d48b21a7e439

# 进入正在运行容器并以命令行交互
# docker exec -it e9410ee182bd /bin/sh

# docker exec -t -i dev_tomcat /bin/bash

# 以交互的方式运行
docker run -i -t -p 8081:8080 tomcat:7 /bin/bash


基于这个image,创建一个容器吧:

# docker create --name dev_tomcat -p 8080:8080 tomcat
# docker start dev_tomcat
# docker logs dev_tomcat

CentOS 8.0 64位安装Docker 以及 Docker Compose

CentOS 8.0 64位安装Docker 以及 Docker Compose

1. 安装Docker

执行sudo curl -sSL https://get.daocloud.io/docker | sh
执行完之后输入docker -v 查看是否有对应的版本号,有的话则表明安装成功

在这里插入图片描述

2. 安装Docker Compose

官方文档

  1. 执行sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. 执行sudo chmod +x /usr/local/bin/docker-compose。这一步是添加执行权限
  3. 接下来运行docker-compose --version,查看是否出现版本号,如果有表明安装成功。
  4. 如果第三步运行失败,执行sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose命令,把Docker Compose换个路径存储,再执行第三步看看是否成功。

今天关于docker(二):CentOS安装dockercentos安装 docker的分享就到这里,希望大家有所收获,若想了解更多关于CentOS 7 系统 安装docker及docker compose 组件、CentOS 7下安装Docker以及Docker的基本使用、CentOS 7安装Docker V1.0 及 Docker相关命令、CentOS 8.0 64位安装Docker 以及 Docker Compose等相关知识,可以在本站进行查询。

本文标签: