docker 部署

来源:互联网 发布:白自在和谢烟客知乎 编辑:程序博客网 时间:2024/04/29 10:37

docker 部署

@(技术文档)[docker, linux, 环境配置, 项目部署]

一、在CentOS7上安装Docker篇
  1. 查看系统版本:
    $ cat /etc/redhat-release
    CentOS Linux release 7.0.1406 (Core)

  2. 安装docker
    $ yum install docker
    安装过程中报错:
    Transaction check error:
    file /usr/lib/systemd/system/blk-availability.service from install of device-mapper-7:1.02.107-5.el7_2.2.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64
    file /usr/sbin/blkdeactivate from install of device-mapper-7:1.02.107-5.el7_2.2.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64
    file /usr/share/man/man8/blkdeactivate.8.gz from install of device-mapper-7:1.02.107-5.el7_2.2.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64

    解决办法:
    $yum install libdevmapper* -y
    再次运行:
    $yum install docker

3.检查安装是否成功
$docker version
若输出了 Docker 的版本号,说明安装成功了,可通过以下命令启动 Docker 服务:
4. $service docker start
一旦 Docker 服务启动完毕,就可以开始使用 Docker 了。

二、使用docker

使用命令行的工具来检索名字为“tutorial”的镜像
$docker search tutorial

使用docker命令来下载镜像
$docker pull learn/tutorial

查看已下载的镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/learn/tutorial latest 2d13ac7ee948 3 years ago 128 MB

在docker容器中运行hello world!

docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
$docker run learn/tutorial echo “hello word”

在容器中安装新的程序(wget命令)
$docker run learn/tutorial apt-get install -y wget

使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/wget。
$ docker ps -l
Container ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1861c071d861 learn/tutorial “apt-get install -y w” 2 minutes ago Exited (0) 2 minutes ago furious_panini

保存对容器的修改
$ docker commit 1861c071d861 learn/wget
ad2245a8acd8014c39ad46b503cc8e74ce4202d9b4b4fdf48596b596b88059b4
执行完docker commit命令之后,返回新版本镜像的id号

运行新的镜像
到现在为止,我们已经建立了一个完整的、自成体系的docker环境,并且安装了wget命令在里面。它可以在任何支持docker环境的系统中运行啦!(是不是很神奇呢?)让我们来体验一下吧!

在新的镜像中运行wget “http://blog.csdn.net/yown” 命令。
$docker run learn/wget wget “http://blog.csdn.net/yown”

成功啦!
$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e079c9ecac4 learn/wget “wget http://blog.csd” About a minute ago Exited (8) About a minute ago elegant_lumiere

检查运行中的镜像
$docker inspect 2e079c9ecac4

发布自己的镜像
a. 首先在www.docker.com注册账户,登录并在https://cloud.docker.com/repository/list 页面创建learn库

b. 将刚才我们做的镜像起个新的名字:
$docker tag learn/wget:latest yown/learn:latest

c. 在命令行登录:
$docker login

d. 上传
$docker push yown/learn:latest

Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/yown/learn] (len: 1)
ad2245a8acd8: Pushing [=========================> ] 6.482 MB/12.48 MB

Docker 命令

  • service docker start
  • chkconfig docker on 设置开机启动
  • systemctl start docker.service 采用centos7 的systemd 启动服务
  • systemctl enable docker.service 设置开机启动
  • docker pull centos 拉取镜像 从官网下载 centos
  • docker images centos 查看centos镜像
  • docker images 查看镜像
  • docker run -i -t centos /bin/bash 运行centos镜像容器 并得到bash提示符 -i 捕获标准输入输出 -t 分配一个终端或控制台。 断开与容器连接 输入 exit。
  • docker search ubuntu 搜索镜像
  • docker login 登录docker hub
  • docker push mhuihui/learn:latest 向docker hub推镜像

对image操作

  • docker images # 列出镜像列表; -a, –all=false Show all images; –no-trunc=false Don’t truncate output; -q, –quiet=false Only show numeric IDs
  • docker rmi image_name # 删除一个或者多个镜像; -f, –force=false Force; –no-prune=false Do not delete untagged parents, 删除image需先删除所有关联容器
  • docker history image_name # 显示一个镜像的历史; –no-trunc=false Don’t truncate output; -q, –quiet=false Only show numeric IDs

对容器操作

  • docker start name/ID 启动 容器 name/ID 容器名称 或 ID
  • docker stop name/ID 停止容器
  • docker kill name/ID 快速停止容器
  • docker restart name/ID 重启容器
  • docker ps 查看正在运行容器
  • docker ps -l 查看最后一次运行容器
  • docker ps -a 查看所有容器
  • docker rm name/ID 删除指定容器
  • docker rm docker ps -a -q 删除所有容器
容器管理
  • docker run --name 容器名 -d learn/c /bin/bash -c "while true; do echo hello world; sleep 1; done" 创建守护式容器 使用while 循环 打印 hello world 。 只会返回容器ID 。 -d 指定守护进程 -i 捕获标准输入输出 -t 分配一个终端或控制台
    -注:任务执行完 会推出
  • docker logs -f name/ID 查看容器日志 -f 参数来健康Docker日志, 类似 tail -f
  • docker attache name/ID 重新附到该容器的会话上 但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行
  • docker exec -it name/ID /bin/bash 这个命令使用exit 不会退出后台, 一般使用这个命令
  • docker top name/ID 查看容器内的进程
  • docker diff name/ID 列出一个容器里面被改变的文件或目录, list列表会显示三种事件 , A 增加的 , D 删除的, C 被改变的
  • docker cp name/ID:/container_path to_path 从容器中拷贝文件、目录 到本地
Dockerfile
  • docker build -t image_name Dockerfile_path 根据Dockerfile构建一个容器,
    参数:build
    –no-cache=false Do not use cache when building the image
    -q, –quiet=false Suppress the verbose output generated by the containers
    –rm=true Remove intermediate containers after a successful build
    -t, –tag=”” Repository name (and optionally a tag) to be applied to the resulting image in case of success
0 0
原创粉丝点击