docker基础教程

body{ font-family: 微软雅黑; font-size: 11pt; line-height: 1;}html, body{ color: ; background-color: ;}h1 { font-size:1.5em; font-weight:bold;}h2 { font-size:1.4em; font-weight:bold;}h3 { font-size:1.3em; font-weight:bold;}h4 { font-size:1.2em; font-weight:bold;}h5 { font-size:1.1em; font-weight:bold;}h6 { font-size:1.0em; font-weight:bold;}img { border:0; max-width: 100%;}blockquote { margin-top:0px; margin-bottom:0px;}table { border-collapse:collapse; border:1px solid #bbbbbb;}td { border-collapse:collapse; border:1px solid #bbbbbb;}
docker基础教程

Docker使用基本教程


Docker中文文档


1.启动docker--有两种方式


  1. 如果你是二进制安装的,你可以使用sudo <path to>/docker -d
    &
    来启动


  2. 如果你是apt-get安装的你可以用service docker start开启

2.搜索安装镜像


  1. 官方安装方式docker pull
    imagename
    从docker的索引中心下载,imagename是镜像名称,例如docker pull
    ubuntu
    就是下载base ubuntu并且tag是latest。

  2. 因为官方速度比较慢你可以从我提供的国内镜像下载,我用的七牛云存储,




#第一种方法url下载安装ubuntudocker import http://docker.widuu.com/ubuntu.tar #第二种方法,下载下来然后根据自己配置安装wget http://docker.widuu.com/ubuntu.tarcat test.tar | sudo docker import - xiaowei:new

学习基本命令


启动docker

如果你使用快速安装并且添加到PATH中,docker就被安装到快捷启动了,当Ubuntu系统启动时就启动了!你只需要运行命令sudo run
docker help
获得输出.

如果你获得结果是"docker: command not found"或者像" /var/lib/docker/repositories:
permission denied",你需要手动指定路径执行它.

# Run docker in daemon modesudo <path to>/docker -d &

下载一个预建立的镜像

# 下载一个ubuntu镜像sudo docker pull ubuntu

这个将从索引仓库中通过名字找到ubuntu镜像,并且从索引仓库顶级中心来下载到本地镜像存储

注:当镜像下载成功后,你可以看到12位的hash值像539c0211cd76,这是下载完整的镜像的精简ID,这些短的镜像ID是完整镜像ID的前12个字符--可以使用docker
inspect
或者 docker images
-notrunc=true
来获得完整的镜像ID

运行交互性的shell(就像运行一个单独的linux)

# 使用ubuntu运行一个交互性的shell,# 分配一个伪终端,附带stdin和stdout(输入/输出流)# 如果你想退出分离出来的伪终端,# 可以使用CTRL -p+CTRL -q --就像先按CTRL -p 然后CTRL -qsudo docker run -i -t ubuntu /bin/bash

管理员命令和docker组

docker进程经常使用root用户运行,从docker的0.5.2版本开始,docker的进程绑定Unix
Socket来代替一个TCP端口,在默认情况下Unix Socket属于root用户,所以在默认情况下,你需要赋予权限sudo

从0.5.3版本开始,如果你(或者你安装的docker)创建的时候用的docker或者添加用户的unix群组,当docker进程启动的时候,这个docker进程会把Unix
socket的读写(read/writable)的所有权交给docker群组.docker进程一般必须root用户运行,但是你运行docker客户端的用户是docker组的,这个时候你就不需要加sudo就可以运行全部的客户端命令

警告:docker群组必须是和root等价的


Example:

# 如果不存在docker群组,添加一个用户群组sudo groupadd docker# Add the connected user "${USER}" to the docker group.# Change the user name to match your preferred user.# You may have to logout and log back in again for# this to take effect.sudo gpasswd -a ${USER} docker# Restart the docker daemon.sudo service docker restart

让Docker使用其它的host/port或者Unix socket


警告

改变默认的docker进程绑定的TCP端口或者Unix
docker的用户组,将会通过允许非root用户获得root权限来修改主机,会增加你的安全风险!

使用 -H 他可以运行你改变docker进程监听指定的IP和端口。默认情况下,他会监听
unix:///var/run/docker.sock只允许本地的root用户连接,你可以设置他 0.0.0.0:4243
或者指定主机IP给任何用户,但是这不是我们所推荐的,因为那么低权限将会获得root正在运行的主机进程的访问权限!

同样,docker客户端可以使用-H 来指定连接的端口

-H 授权主机和端口的格式是这样的:tcp://[host][:port] or unix://path

举个例子

  • tcp://host:4243 -> 使用tcp连接 host:4243

  • unix://path/to/socket -> 使用socket位于 path/to/socket

-H 当空的时候 将会使用默认值就像没有 -H一样

-H 也可以用简短的方式授权TCP绑定: host[:port] or :port

# Run docker in daemon modesudo <path to>/docker -H 0.0.0.0:5555 -d &# Download an ubuntu imagesudo docker -H :5555 pull ubuntu

你可以是用多个 -H 例如你想监听你所有的TCP和Unix socket

# Run docker in daemon modesudo <path to>/docker -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock -d &# Download an ubuntu image, use default Unix socketsudo docker pull ubuntu# OR use the TCP portsudo docker -H tcp://127.0.0.1:4243 pull ubuntu

开启一个长时间运行的工作进程

# 开启一个非常有用的长时间工作进程JOB=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done")# 到目前为止的收集的输出sudo docker logs $JOB# 杀死这个进程 sudo docker kill $JOB

监听所有运行着的容器

sudo docker ps 

为服务绑定一个TCP端口

# 为容器绑定4444端口,并告诉网络监听4444JOB=$(sudo docker run -d -p 4444 ubuntu:12.10 /bin/nc -l 4444)# 查看我的容器用的公共端口PORT=$(sudo docker port $JOB 4444 | awk -F: ‘{ print $2 }‘)# 连接公共端口echo hello world | nc 127.0.0.1 $PORT# 确认网络连接是否工作echo "Daemon received: $(sudo docker logs $JOB)"

提交(保存)容器的状态

保存你的容器状态作为一个容器镜像,所以容易状态可以重用

当你保存你的容器的时候,仅仅只是保存现在容器和创建容器时候的不同状态(as a diff),用‘docker
images‘命令查看哪些镜像是你正在所使用

#Commit your container to a new named imagesudo docker commit <container_id> <some_name># List your containerssudo docker images

现在你有一个新的镜像状态(其实就是一个新的镜像),从中你可以创建新的实例

本文由widuu贡献翻译,没有允许禁止转载http://www.widuu.com~

来自为知笔记(Wiz)

docker基础教程,布布扣,bubuko.com

时间: 2024-08-27 17:33:01

docker基础教程的相关文章

CentOS安装docker基础教程

升级CentOS 准备工作: 1:安装开发平台工具 yum groupinstall "Development tools" 2:安装内核升级需要的依赖组件 yum install ncurses-devel qt-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel   3:因为selinux和LXC有冲突,所以需要禁用 # vi /etc/selinux/config SELINUX=disabled 4:配置

Docker入门教程(一)介绍

http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了Docker的基础概念以及Docker的安装. Docker是一个新的容器化的技术,它轻巧,且易移植,号称“build once, configure once and run anywhere(译者注:这个就不翻译了,翻译出来味道就没了)”.本文是Flux7的Docker系列教程的第一部分.请和这

Docker入门教程(二)命令

Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker系列教程的第一篇文章中,我们了解了Docker的基础知识,知道了它是如何工作以及如何安装的.在这篇文章中,我们将学习15个Docker命令,并通过实践来学习它是如何工作的. 首先,让我们通过下面的命令来检查Docker的安装是否正确: docker info  如果没有找到这条命令,则表示Docke

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

Docker基础技术:Linux Namespace(上)

导读 时下最热的技术莫过于Docker了,很多人都觉得Docker是个新技术,其实不然,Docker除了其编程语言用go比较新外,其实它还真不是个新东西,也就是个新瓶装旧酒的东西,所谓的The New “Old Stuff”.Docker和Docker衍生的东西用到了很多很酷的技术,我会用几篇 文章来把这些技术给大家做个介绍,希望通过这些文章大家可以自己打造一个山寨版的docker.先从Linux Namespace开始. 简介 Linux Namespace是Linux提供的一种内核级别环境隔

Docker简明教程(以安装wget程序为例)

本文计划: 一.安装Docker(Centos) 二.注册Docker官网帐号 三.下载基础centos镜像,安装需要的软件和环境后,push到自己的repository 一.安装Docker(Centos) 在https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F 中选择自己的epel源. 接着,安装docker-io: $ sudo yum install docker-io 启动Docker dae

Docker 基础技术:Linux Namespace(下)

导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主要想向大家介绍Linux的User和Network的Namespace User Namespace User Namespace主要是用了CLONE_NEWUSER的参数,使用了这个参数后,内部看到的UID和GID已经与外部不同了.默认情况下容器没有的UID,系统自动设置上了最大的UID655

Flux7 Docker 系列教程(一):Docker 简介

本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第一篇 Part 1: An Introduction.  该系列所有文章将参考其他学习资料翻译,也会加入自己的学习作为部分注解.如有错误,欢迎指正. Docker,一种新的容器化技术,因为轻量级和便携化而受到广泛关注.Docker 和 Java 一样,号称"一次构建,一次配置,即可到处运行"(build once, configure once and run anywhere).本篇文

docker简明教程(二)

前言这篇博文承接我的上一篇<docker简明教程一> http://9399369.blog.51cto.com/9389369/1758576 相对于上一篇来说这篇所讲到的知识会高深一点因为学习的过程不就是一步步的由简单到复杂嘛但是我的风格没变用简单的文字让朋友们学习高深的docker技术.如果觉得我写的好的话顶我上推荐希望能让跟多人看到.学习和受益. 二十二.Docker导出容器到本地文件 不管是容器不是处于运行状态都可以导出 首先查看那容器状态 [[email protected] ~]