文档章节

快速启动 containers

Ryan-瑞恩
 Ryan-瑞恩
发布于 2015/12/21 11:57
字数 1036
阅读 28
收藏 1

快速启动containers

This quickstart assumes you have a working installation of Docker. To verify Docker is installed, use the following command:

# 检查Docker 是否安装
$ docker info 

If you get docker: command not found or something like/var/lib/docker/repositories: permission denied you may have an incomplete Docker installation or insufficient privileges to access Docker on your machine. With the default installation of Docker docker commands need to be run by a user that is in the docker group or by the root user.

Depending on your Docker system configuration, you may be required to preface each docker command with sudo. One way to avoid having to use sudo with thedocker commands is to create a Unix group called docker and add users that will be entering docker commands to the ‘docker’ group.

For more information about installing Docker or sudo configuration, refer to theinstallation instructions for your operating system.

下载已建立 image

# 下载 ubuntu 镜像
$ docker pull ubuntu

This will find the ubuntu image by name on Docker Hub and download it fromDocker Hub to a local image cache.

Note: When the image is successfully downloaded, you see a 12 character hash539c0211cd76: Download complete which is the short form of the image ID. These short image IDs are the first 12 characters of the full image ID - which can be found using docker inspect or docker images --no-trunc=true.

运行交互式 shell

使用ubuntu镜像运行交互式Shell:

$ docker run -i -t ubuntu /bin/bash

The -i flag starts an interactive container. The -t flag creates a pseudo-TTY that attaches stdin and stdout.

To detach the tty without exiting the shell, use the escape sequence Ctrl-p +Ctrl-q. The container will continue to exist in a stopped state once exited. To list all containers, stopped and running, use the docker ps -a command.

Bind Docker to another host/port or a Unix socket

Warning: Changing the default docker daemon binding to a TCP port or Unixdocker user group will increase your security risks by allowing non-root users to gain root access on the host. Make sure you control access to docker. If you are binding to a TCP port, anyone with access to that port has full Docker access; so it is not advisable on an open network.

With -H it is possible to make the Docker daemon to listen on a specific IP and port. By default, it will listen on unix:///var/run/docker.sock to allow only local connections by the root user. You could set it to 0.0.0.0:2375 or a specific host IP to give access to everybody, but that is not recommended because then it is trivial for someone to gain root access to the host where the daemon is running.

Similarly, the Docker client can use -H to connect to a custom port. The Docker client will default to connecting to unix:///var/run/docker.sock on Linux, andtcp://127.0.0.1:2376 on Windows.

-H accepts host and port assignment in the following format:

tcp://[host]:[port][path] or unix://path

For example:

  • tcp:// -> TCP connection to 127.0.0.1 on either port 2376 when TLS encryption is on, or port 2375 when communication is in plain text.
  • tcp://host:2375 -> TCP connection on host:2375
  • tcp://host:2375/path -> TCP connection on host:2375 and prepend path to all requests
  • unix://path/to/socket -> Unix socket located at path/to/socket

-H, when empty, will default to the same value as when no -H was passed in.

-H also accepts short form for TCP bindings:

`host:` or `host:port` or `:port` 

Run Docker in daemon mode:

$ sudo <path to>/docker daemon -H 0.0.0.0:5555 &

Download an ubuntu image:

$ docker -H :5555 pull ubuntu

You can use multiple -H, for example, if you want to listen on both TCP and a Unix socket

# Run docker in daemon mode $ sudo <path to>/docker daemon -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock & # Download an ubuntu image, use default Unix socket $ docker pull ubuntu # OR use the TCP port $ docker -H tcp://127.0.0.1:2375 pull ubuntu

Starting a long-running worker process

# Start a very useful long-running process $ JOB=$(docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done") # Collect the output of the job so far $ docker logs $JOB # Kill the job $ docker kill $JOB

列表 containers查看

$ docker ps # 列出所有运行中镜像
$ docker ps -a # 列表所有镜像

Controlling containers

# Start a new container $ JOB=$(docker run -d ubuntu /bin/sh -c "while true; do echo Hello world; sleep 1; done") # Stop the container $ docker stop $JOB # Start the container $ docker start $JOB # Restart the container $ docker restart $JOB # SIGKILL a container $ docker kill $JOB # Remove a container $ docker stop $JOB # Container must be stopped to remove it $ docker rm $JOB

Bind a service on a TCP port

# Bind port 4444 of this container, and tell netcat to listen on it $ JOB=$(docker run -d -p 4444 ubuntu:12.10 /bin/nc -l 4444) # Which public port is NATed to my container? $ PORT=$(docker port $JOB 4444 | awk -F: '{ print $2 }') # Connect to the public port $ echo hello world | nc 127.0.0.1 $PORT # Verify that the network connection worked $ echo "Daemon received: $(docker logs $JOB)"

Committing (saving) a container state

Save your containers state to an image, so the state can be re-used.

When you commit your container, Docker only stores the diff (difference) between the source image and the current state of the container’s image. To list images you already have, use the docker images command.

# Commit your container to a new named image
$ docker commit <container> <some_name>

# List your images
$ docker images 

You now have an image state from which you can create new instances.

下一步去这里

© 著作权归作者所有

共有 人打赏支持
Ryan-瑞恩

Ryan-瑞恩

粉丝 150
博文 234
码字总数 181988
作品 0
西安
后端工程师
私信 提问
【卡片记忆】快速启动iOS模拟器

假定场景 查看模拟器的日志目录 模拟器目录 解决方案 引用链接:点击 获取帮助 创新源于一种感觉! http://go-swift.net

创意总监
2016/03/09
89
0
Docker —— Git 部署

我一直听说Docker是个很棒的新事物,但是我一直提不起兴趣,直到我遇到一个切实的问题: 如果通过Docker来部署 Scout ,这么做会轻松一些吗? 下面我将分三部分来阐述。 哇哦, 有效的模拟生产...

oschina
2013/12/15
15.6K
28
kubernetes 1.6.2部署

部署环境服务器:腾讯云 操作系统版本:centos 7.2 1、修改系统配置: [root@node1~]# cat /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables= 1net.bridge.bridge-nf-call-ipta......

小罗ge11
2017/06/19
0
0
Docer 和虚拟机的一些对比 [翻译]

本文翻译自:《Docker: Git for deployment -- Scout》,个人感觉它的内容和标题不对,所以就没有直译过来,要是我理解错了请帮忙纠正。 我听说了 多么令人惊叹,但是它并没有征服我的心,直...

BearCatYN
2015/03/30
0
0
一步步打造专属于自己的Kubernetes-1.8.4集群环境

一 kubernetes kubernetes 以下介绍摘自Wiki Kubernetes (通常称为K8s) 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。Google设计并捐赠给Cloud Native Computing ...

胖宝宝王
2017/12/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Neo 虚拟机

上一篇《Neo 编译器》中说明了Neo编译器是怎么把CIL转成neo虚拟机的opcode,那么vm虚拟机又是怎么处理这些代码的,这篇文章我们看一下虚拟机的代码。 框架 虚拟机所处的位置 在框架图中,我们...

NEO-FANS
25分钟前
1
0
TiDB-Lightning Toolset & TiDB-DM 正式开源,前排开“坑”、PR 走起!

在刚刚结束的 TiDB DevCon 2019 上,我们宣布将大家期待已久的 TiDB-Ligthning Toolset 和 TiDB-DM 开源(惊不惊喜、意不意外?!),感兴趣的小伙伴们赶紧前排关注一波,开“坑(issues)”...

TiDB
39分钟前
2
0
人人都可以做深度学习应用:入门篇

本文由云+社区发表 作者:徐汉彬 一、人工智能和新科技革命 2017年围棋界发生了一件比较重要事,Master(Alphago)以60连胜横扫天下,击败各路世界冠军,人工智能以气势如虹的姿态出现在我们...

腾讯云加社区
43分钟前
1
0
C++ RAII

C++ RAII RAII是resource acquisition is initialization的缩写,意为“资源获取即初始化”。它是C++之父Bjarne Stroustrup提出的设计理念,其核心是把资源和对象的生命周期绑定,对象创建获...

mskk
47分钟前
1
0
web.xml is missing and is set to true一步解决

次报错说的是在WebContent/WEB-INF下面没有web.xml,而默认web.xml不在此路径,需要重新指定路径,操作如下: 先取消Dynamic Web Module勾选,点击apply,然后再勾上Dynamic Web Module,此时...

宇昕
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部