Docker安装和命令使用介绍

docker
docker容器可在一次构建后多次运行
dcoker和虚拟机的对比:通常我们是硬件上跑linux系统,在系统上做linux虚拟化,在虚拟主机中跑各种应用,而此各个虚拟机是完全隔离,而docker则是在硬件层次上跑linux系统,在系统上做docker engine,在docker engine上直接跑各种应用,在底层是容器。目前docker只能在64位操作系统运行,在windows是无法运行,只能在windowns虚拟机下运行。
docker上c/s结构,分客户端和服务端,,在docker组件中,镜像通常是一个完整的操作系统,并且镜像上只读的,应用通常运行在容器中,在可写的情况下才能运行。docker仓库是集中存放镜像
1,docker安装和简单命令使用

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
2,yum安装

[root@zabbix-3 ~]# yum install docker-engine util-linux
[root@zabbix-3 ~]# systemctl start docker
[root@zabbix-3 ~]# docker search centos 搜索镜像
[root@zabbix-3 ~]# docker pull centos 获取镜像
Using default tag: latest
latest: Pulling from library/centos
a3ed95caeb02: Pull complete
da71393503ec: Pull complete
Digest: sha256:1a62cd7c773dd5c6cf08e2e28596f6fcc99bd97e38c9b324163e0da90ed27562
Status: Downloaded newer image for centos:latest
查看镜像

[root@zabbix-3 ~]# docker images 查看镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              904d6c400333        3 weeks ago         196.7 MB
删除镜像
[root@zabbix-3 ~]# docker rmi 删除镜像
尝试运行:

[root@zabbix-3 ~]# docker run centos /bin/echo 'hello world'
hello world
[root@zabbix-3 ~]# docker run centos /bin/ls /etc/ |wc -l
117
[root@zabbix-3 ~]#
ps -a可查看详细的操作信息

[root@zabbix-3 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
aacbb56b34f0        centos              "/bin/ls /etc/"          51 seconds ago       Exited (0) 50 seconds ago                           big_khorana
0aaac85decee        centos              "/bin/ls /etc/"          About a minute ago   Exited (0) 59 seconds ago                           compassionate_fermi
971692c3b076        centos              "/bin/echo 'hello wor"   About a minute ago   Exited (0) About a minute ago                       sharp_wozniak
进入docker,--name 名称 -it 镜像名 /bin/bash
-i:保持终端打开
-t:开启tty绑定到此标准输入
如果不存在此镜像,则会自动pull

[root@zabbix-3 ~]# docker run --name mydocker -it centos /bin/bash
[root@de5276472785 /]#
退出容器则服务器中断,重新连接如下:
找到需要重新连接的id

[root@zabbix-3 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
de5276472785        centos              "/bin/bash"              3 hours ago         Exited (0) 33 minutes ago                       mydocker
aacbb56b34f0        centos              "/bin/ls /etc/"          3 hours ago         Exited (0) 3 hours ago                          big_khorana
0aaac85decee        centos              "/bin/ls /etc/"          3 hours ago         Exited (0) 3 hours ago                          compassionate_fermi
971692c3b076        centos              "/bin/echo 'hello wor"   3 hours ago         Exited (0) 3 hours ago                          sharp_wozniak
start 此id

[root@zabbix-3 ~]# docker start de5276472785
de5276472785
[root@zabbix-3 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
de5276472785        centos              "/bin/bash"              3 hours ago         Up 16 seconds                                mydocker
aacbb56b34f0        centos              "/bin/ls /etc/"          3 hours ago         Exited (0) 3 hours ago                       big_khorana
0aaac85decee        centos              "/bin/ls /etc/"          3 hours ago         Exited (0) 3 hours ago                       compassionate_fermi
971692c3b076        centos              "/bin/echo 'hello wor"   3 hours ago         Exited (0) 3 hours ago                       sharp_wozniak
[root@zabbix-3 ~]#
后台运行-d,当在后台运行时会返回一个id

[root@zabbix-3 ~]# docker run -d --name mark centos bash
3b51dff90eb1e76a21a54def1f6e813505951cad1bb5a644abff7e27561be94d
[root@zabbix-3 ~]#
docker删除容器
先停止

[root@zabbix-3 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
3b51dff90eb1        centos              "bash"              4 hours ago         Exited (0) 4 hours ago                       mark
删除

[root@zabbix-3 ~]# docker rm 3b51dff90eb1
3b51dff90eb1
[root@zabbix-3 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@zabbix-3 ~]#
yum install util-linux
进入后台容器,先将nginx pull下来

[root@zabbix-3 ~]# docker run -d --name mynginx nginx
attach:在某些场景下使用attach可能会导致容器退出
我们安装另外一个工具nsenter,这个工具可以访问容器空间
安装此工具:yum install util-linux
我们先获取此容器的pid

[root@zabbix-3 ~]# docker inspect --format "{{.State.Pid}}" mynginx
8085
而后挂载,接挂载参数进入此容器

[root@zabbix-3 ~]# nsenter --target 8085 --mount --uts --ipc --net --pid
root@5643fa5e6925:/# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  31680  2872 ?        Ss   17:28   0:00 nginx: master process nginx -g daemon off;
nginx         6  0.0  0.0  32072  1700 ?        S    17:28   0:00 nginx: worker process
root          7  0.0  0.0  20256  1912 ?        S    17:50   0:00 -bash
root         11  0.0  0.0  17492  1160 ?        R+   17:50   0:00 ps aux
root@5643fa5e6925:/#
root@5643fa5e6925:/etc/nginx# ls /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
root@5643fa5e6925:/etc/nginx# ls /etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/default.conf
root@5643fa5e6925:/etc/nginx#
但是官方的镜像非常简单,很多常用命令都没有,进入docker的脚本如下

[root@zabbix-3 ~]# cat in.sh
#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target "$CPID" --mount --uts --ipc --net --pid
[root@zabbix-3 ~]#
[root@zabbix-3 ~]# chmod +x in.sh
[root@zabbix-3 ~]# ./in.sh mynginx
root@5643fa5e6925:/# ps aux|grep nginx
root          1  0.0  0.0  31680  2872 ?        Ss   17:28   0:00 nginx: master process nginx -g daemon off;
nginx         6  0.0  0.0  32072  1700 ?        S    17:28   0:00 nginx: worker process
root         29  0.0  0.0  10988   452 ?        R+   18:00   0:00 grep nginx
root@5643fa5e6925:/#
在创建好容器后,iptables会添加一段nat表规则

时间: 2024-12-30 20:00:39

Docker安装和命令使用介绍的相关文章

Docker Machine Beta 发布,Docker 安装简化工具

Docker Machine Beta 发布了,该版本支持以下服务: Amazon EC2 Microsoft Azure Microsoft Hyper-V DigitalOcean Google Compute Engine OpenStack Rackspace SoftLayer VirtualBox VMware Fusion VMware vCloud Air VMware vSphere Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在

docker registry安装简单命令实现_docker

本文计划使用3条命令来运行一个Docker registry私服,其实很简单 环境准备: docker 1.11.2 compose文件docker-compose.yml version: '2' services: registry: image: registry:2.5.1 hostname: registry ports: - "5000:5000" environment: - TZ="Asia/Shanghai" - "REGISTRY_AU

Docker安装及基本使用方法详细介绍_docker

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 Docker安装 CentO

CentOS系统下docker的安装配置及使用介绍_docker

1 docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器.它原本是dotCloud 启动的一个业余项目,并在前些时候开源了.它吸引了大量的关注和讨论,导致 dotCloud 把它重命名到 DockerInc.它最初是用 Go 语言编写的,它就相当于是加在 LXC(LinuX Containers,linux容器)上的管道,允许开发者在更高层次的概念上工作.     Docker 扩展了 Linux 容器(Linux Containers),或着说L

理解Docker(1):Docker安装和基础用法详细介绍_docker

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) 1. 安装 1.1 在 Ubuntu 14.04 上安装 Docker 前提要求: 内核版本必须是3.10或者以上 依次执行下面的步骤: sudo apt-get update sudo apt-get install apt-transport-https ca-certificates sudo apt

docker安装centos后没有ifconfig命令解决办法

使用Docker pull centos命令下载下来的centos镜像是centos7的最小安装包,里面并没有携带ifconfig命令,导致我想查看容器内的ip时不知道该怎么办,google了一下发现了一下命令 [plain] view plain copy yum provides ifconfig   yum whatprovides ifconfig   示例输出如下所示 [plain] view plain copy Loaded plugins: fastestmirror   Loa

CentOS 7安装Docker及常用命令

yum install Docker #安装docker systemctl start docker.service #启动docker systemctl enable docker.service #docker开机启动   docker -v #查看docker版本   docker info #查看docker具体信息 docker pull centos #下载centos image docker images #显示已有image docker rmi  imageid #删除i

Docker安装和基础用法 Docker入门教程第二篇_docker

本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 1. 安装 1.1 在 Ubuntu 14.04 上安装 Docker 前提要求: 内核版本必须是3.10或者以上 依次执行下面的步骤: sudo apt-get update sudo apt

jpgraph安装配置教程详细介绍

在学习了之前两篇php jpgraph安装教程后,只要jpgraph类库通过了PHP安装环境的验证后,就可以正式安装jpgraph类库了,其实jpgraph类库的安装非常方便,只要将下载的jpgraph类库解压缩至已搭建的PHP环境下的相关目录下即可.jpgraph安装过程的关键在于PHP配置文件php.ini与jpgraph配置文件jpg-config.inc.php配置.下面我根据jpgraph类库的英文文档进行说明,希望对使用jpgraph类库的PHP开发者有所帮助. jpgraph类库安