docker-3 基础命令

创建镜像

创建镜像的方法有三种:

  • 基于已有的容器创建
  • 基于本地模板导入
  • 基于dockerfile

基于已有的容器创建

主要使用docker commit 命令,命令格式:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:tag]],主要包括:

-a ,--author=""  作者信息

-m,--message=""提交消息

-p,--pause=true 提交时暂停容器

例如:

# docker run -it centos /bin/bash
[[email protected] /]# touch test

[[email protected] /]# ls
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var

# docker commit -m "add a file" -a "kafeikele" de6 centos_copy
5d318afa9e6f7fdb755db97e29e3860b752f24b0b50e6bfa0b7e457450802c0e
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos_copy latest 5d318afa9e6f 13 seconds ago 196.7 MB

基于本地模板导入

推荐使用openVZ提供的模板来创建

https://openvz.org/Download/templates/precreated

#cat centos-7-x86_64-minimal.tar.gz.crdownload | docker import - centos:latest

存出和导入镜像

# docker images

centos   7.1.1503      47a77536ad4c        8 weeks ago         212.1 MB

# docker save -o centos_7.1.tar centos:7.1.1503

# docker load --input centos_7.1.tar

# docker load < centos_7.1.tar

基于dockerfile

之后的内容详细介绍

运行第一个docker容器

# docker run centos echo "hello world"
Unable to find image ‘centos:latest‘ locally
latest: Pulling from centos
47d44cb6f252: Pull complete
168a69b62202: Pull complete
812e9d9d677f: Pull complete
4234bfdd88f8: Pull complete
ce20c473cd8a: Pull complete
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide
security.
Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5
Status: Downloaded newer image for centos:latest
hello world

命令说明:

docker run :标准容器启动命令

centos: 镜像名称,默认是latest

echo和后面的内容:容器启动后执行的命令

启动一个交互式容器

docker run -it centos /bin/bash

*注:-t标示在心容器内指定一个伪终端或终端,-i标示允许我们对容器内的STDIN进行交互

以服务方式启动一个docker容器

如果你实际测试,估计也发现了,第一个“hello world”容器启动后执行完echo命令就退出了,而第二个交互式的容器,只要用户退出当前容器的bash,容器也退出了。这明显不能满足一个服务长时间运行的要求,好找docker run提供了‘-d’参数,可以实现将容器以守护进程方式启动。

docker  run -d  centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; 179fc7f17c358834364d23112aa26d6a9e1875b2281563720425f62a8f1b5c33

这个长的字符串叫做容器ID。它是容器的唯一标识,所以我们可以使用它来操作容器,比如查看日志、停止或删除容器等。

dock logs 179fc7f17c358834364d

而为什么使用一个死循环来输出呢?

因为如果不是死循环,一次输出后,容器中的进程就结束了。容器的唯一进程都结束了,容器就停止了。因此如果要在容器中运行具体的服务,这项服务本身在容器中也必须是已守护进程方式运行的。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
主要选项:
-d : 以后台进行方式运行容器
-t : 提供一个伪终端
-i : 提供交互输入,一般与“-t”一起使用,如果只提供“-i”选项,则容器启动后是无法退出的
-v : 映射一个volume给容器,如: -p /data/www:/var/www/html
-p : 将容器的端口映射给宿主机,如: -p 8080:80

  

更多命令操作

# docker images 列出本地所有镜像

# docker search centos  从默认镜像仓库搜索镜像

NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 2767 [OK]
ansible/centos7-ansible Ansible on Centos7 90 [OK]
jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8... 42 [OK]
jdeathe/centos-ssh-apache-php CentOS-6 6.8 x86_64 - Apache / PHP / PHP M... 21 [OK]
nimmis/java-centos This is docker images of CentOS 7 with dif... 17 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC sessi... 14 [OK]

#docker pull centos  下载镜像到本地

#docker create -it  ubuntu:latest   创建一个容器

Unable to find image ‘ubuntu:latest‘ locally
latest: Pulling from ubuntu
58488e45273c: Pull complete
25810b66099e: Pull complete
6571ba684f54: Pull complete
6ed49a73d8f0: Pull complete
c53777cbfc31: Pull complete
56465e1e45d2: Pull complete
Digest: sha256:312986132029d622ae65423ca25d3a3cf4510de25c47b05b6819d61e2e2b5420
Status: Downloaded newer image for ubuntu:latest
1330233e50aba7fca99e5914bd28dd89321bc86ec35fb36b4775d3424337c190

docker create 命令创建的容器处于停止状态,需要用docker start 把它启动

# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1330233e50ab ubuntu:latest "/bin/bash" About a minute ago happy_engelbart

docker run 命令等价于先执行docker create命令, 然后再执行docker start 命令

# docker run ubuntu /bin/echo "hello world"
hello world

 进入容器

方法一:

# docker attach a54615a88787    后面跟的是容器名或者id,退出后docker容器也退出,不常用

方法二:

# docker exec -it a54615a88787 /bin/bash    跟的是容器名或者id

方法三:

yum -y install util-linux

# docker inspect --format "{{.State.Pid}}" stupefied_cray  最后面跟的是容器的名称
4899
# nsenter --target 4899 --mount --uts --ipc --net --pid

脚本

#!/bin/bash

CNAME=$1

CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)

nsenter --target $CPID --mount --uts --ipc --net –pid

 2016-10-28 01:00:26 

  

时间: 2024-08-11 14:19:20

docker-3 基础命令的相关文章

Docker的基础命令汇总

一.Docker的基础命令 [[email protected] ~]# docker search dhcp #以DHCP作为关键字进行搜索镜像 [[email protected] ~]# docker pull docker.io/networkboot/dhcpd #下载查询出来的某个镜像 [[email protected] ~]# docker images #查询下载的镜像 [[email protected] ~]# docker tag docker.io/networkboo

Docker的基础命令

前言 最近在学习docker,以下是我整理的一些docker的基础命令,欢迎小伙伴们在评论补充! curl -fsSL https://get.docker.com/ | sh  安装  yum -y install docker 安装(版本较老) systemctl start docker 启动docker systemctl enable docker 开机自启动命令 systemctl disable docker 取消开机自启命令 docker version  验证安装,安装成功会出

docker容器基础命令

1.创建容器 Docker容器非常轻量级,用户可以随时创建或者删除    docker create -ti ubuntu 使用docker create命令创建的容器处于停止状态,需使用docker start启动. 新增加了一个name等于cccc,status为Created 新建并启动容器:docker run docker run ubuntu /bin/echo "hello" docker run 背后的故事 1)检查本地是否存在制定的镜像,不存在就从公有仓库下载 2)利

Docker 学习 | 基础命令

基本概念定义 基本组成 客户端/守护进程 C/S架构 本地/服务器 镜像 容器基石 只读文件系统 联合加载(union mount) 容器 通过镜像启动 执行 写时复制 仓库 公有 docker hub 私有 相关技术简介 依赖的Linux内核特性 Namespace 命名空间 LXC Kernel Namespace 封装 -> 代码隔离->资源隔离 PID 进程隔离 独立进程表 NET 管理网络接口 network info IPC 进程通信 额外信息标记 MNT 挂载点 UTS 隔离内核

docker之基础命令

安装docker:    #yum install docker.io 服务:    #systemctl status docker #docker [OPTION] COMMAND [CMDOPTION] [ARGS,...] [OPTION] COMMAND container            start CONTNAME,... 启用container            stop CONTNAME,... 停止containier            restart CONT

Docker操作基础命令

systemctl start docker 启动dockersystemctl restart docker 重启dockersystemctl stop docker 停止dockerdocker version 查看docker信息,一般用于检查docker是否成功安装docker images 查看docker镜像docker ps -a 查看当前运行的镜像进程docker stop c608062bf46f 停止id为c608062bf46f的docker进程docker rm c60

Centos安装docker及docker基础命令

安装 rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo yum -y install docker-io service docker start 基础命令 docker search 在仓库中寻找镜像 docker  pull 拉取镜像

1. Docker基础命令

本文简要介绍Docker的基础命令,目的在于快速入门Dokcer,Docker的完整命令可以参考Docker官方手册. Docker的子命令非常多,可以使用 docker [help|--help|-H|-h] 查看Docker完整子命令 $ docker Usage: docker COMMAND ... Commands: attach Attach local standard input, output, and error streams to a running container

docker初学,一些基础命令

# docker 一些基础命令 # 查看本地所有的镜像 """ docker images """ # 删除所有镜像 """ docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}') """ # 运行一个容器 """ sudo docker run -d --name photo

docker 应用-1(安装以及基础命令)

Docker 安装 还是看官方文档吧TAT https://docs.docker.com/engine/getstarted/step_one/ 理解docker镜像和容器 镜像就是docker容器在运行的时候所使用的文件系统以及系统内核,以及其他参数.当然,docker镜像一般都会比实际的操作系统+软件要轻便的多. 容器就是一个镜像的运行实体. Docker基础命令 # 查看docker的版本信息 $ docker version # 查看安装docker的信息 $ docker info