本帖最后由 java 于 2017-12-15 17:08 编辑
http://www.runoob.com/docker/centos-docker-install.html
Docker 要求 CentOS 系统的内核版本高于 3.10
$ uname -r
3.10.0-693.5.2.el7.x86_64
安装 DockerDocker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下: # yum -y install docker
启动 Docker 后台服务
# service docker start
查看版本
# docker version
- Client:
- Version: 1.12.6
- API version: 1.24
- Package version: docker-1.12.6-61.git85d7426.el7.centos.x86_64
- Go version: go1.8.3
- Git commit: 85d7426/1.12.6
- Built: Tue Oct 24 15:40:21 2017
- OS/Arch: linux/amd64
- Server:
- Version: 1.12.6
- API version: 1.24
- Package version: docker-1.12.6-61.git85d7426.el7.centos.x86_64
- Go version: go1.8.3
- Git commit: 85d7426/1.12.6
- Built: Tue Oct 24 15:40:21 2017
- OS/Arch: linux/amd64
复制代码
/////////////////////////////////////////////////////
CentOS7升级最新版本Docker
首先升级一下系统包 (可以跳过)
$ sudo yum update
卸载旧版本的 Docker
$ sudo yum erase docker docker-common docker-client docker-compose
添加 Docker 的 yum 源
创建一个 /etc/yum.repos.d/docker.repo 文件,内容如下:
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
安装新版本 Docker
$ sudo yum install -y docker-engine
安装完后设置为系统开机自动启动服务
$ sudo systemctl enable docker.service
启动服务
$ sudo systemctl start docker
测试一下
docker info
docker version
//////////////////////////////////////////////////
测试运行 hello-world从已有的image生成自己的image1.通过docker images找到要提交的container ID
docker tag docker.io/ubuntu:16.04 hechengjin/mailserver:ubuntu16.04-wildduck
docker login -u username -p password
docker push hechengjin/mailserver:ubuntu16.04-wildduck
# 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://cloud.docker.com/
- For more examples and ideas, visit:
- https://docs.docker.com/engine/userguide/
复制代码
查看运行的容器
docker ps
后台运行容器
查看容器内的标准输出
~$ docker logs 2b1b7a428627
停止容器
~$ docker stop 2b1b7a428627docker run -i -t hechengjin/mailserver:ubuntu16.04-wildduck /bin/bash
Docker 客户端
~# docker
通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
~$ docker run -d -p 5000:5000 training/webapp python app.py
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
网络端口的快捷方式
docker port 7a38a1ad55c6
5000/tcp -> 0.0.0.0:5000
docker inspect james
docker inspect --format ' {{.Name}} {{.NetworkSettings.Networks.hechengjin_default.IPAddress}}' $(docker ps -a -q)
查看容器的进程
docker top 7a38a1ad55c6
查看 Docker 容器的配置和状态信息
docker inspect 7a38a1ad55c6
停止应用容器
docker stop 7a38a1ad55c6
启动应用容器
docker start 7a38a1ad55c6
重启运行中的容器
docker restart 7a38a1ad55c6
移除应用容器
docker rm 7a38a1ad55c6
删除容器时,容器必须是停止状态,否则会报错
运行交互式的容器
runoob@runoob:~$ docker run -i -t ubuntu:16.04 /bin/bash
root@dc0050c79503:/#
各个参数解析:
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
列出本地主机上的镜像
docker images
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签 docker inspect james
docker inspect --format ' {{.Name}} {{.NetworkSettings.Networks.hechengjin_default.IPAddress}}' $(docker ps -a -q)
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
所以,我们如果要使用版本为16.04的ubuntu系统镜像来运行容器时,命令如下:
docker run -t -i ubuntu:16.04 /bin/bash
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。
获取一个新的镜像
预先下载一个镜像
docker pull ubuntu:16.04
查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
runoob@runoob:~$ docker search httpd
NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布
拖取镜像
docker pull httpd
Using default tag: latest
创建镜像
1.从已经创建的容器中更新镜像,并且提交这个镜像
在容器内进行相关操作后
(
docker run -t -i ubuntu:16.04 /bin/bash
apt-get update
)
通过命令 docker commit来提交容器副本。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各个参数说明:
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要创建的目标镜像名
我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:
2.使用 Dockerfile 指令来创建一个新的镜像
...
设置镜像标签
docker tag 860c279d2fec runoob/centos:dev
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
从已有的image生成自己的image并上传到自己的远程仓库
docker tag docker.io/ubuntu:16.04 hechengjin/mailserver:ubuntu16.04-wildduck
docker login -u username -p password
docker push hechengjin/mailserver:ubuntu16.04-wildduck
进入image安装软件
docker run -i -t hechengjin/mailserver:ubuntu16.04-wildduck /bin/bash
docker inspect james
docker inspect --format ' {{.Name}} {{.NetworkSettings.Networks.hechengjin_default.IPAddress}}' $(docker ps -a -q)
|