docker 安装及使用用介绍

安装docker所依赖的基础环境

1 64 bits CPU

2 Linux Kernel 3.10+ //如果低于则需要手动给内核打补丁。因为分层构建联合挂载系统得在3.10内核以版本才有的

3 Linux Kernel Cgroups and Namespace

因为我这里是用yum安装,所以需要有extras repository 仓库。


安装:
~]# yum repolist
...
extras/primary_db //安装依赖于extras仓库,只要有此仓库即可 ~]# yum info docker //查看docker安装信息 ~]# yum install docker -y //安装docker
~]# rpm -ql docker | less //查看docker安装了哪些文件 - 如果需要对下面某个子命令查看帮助,可以: ~]# docker help attach 或 ~] docker attach --help
- [中文手册 http://www.widuu.com](http://www.widuu.com) docker命令使用简述:
[root@localhost ~]# docker --help
Usage: docker [OPTIONS] COMMAND [arg...]
docker [ --help | -v | --version ] A self-sufficient runtime for containers. Options: --config=~/.docker Location of client config files
-D, --debug Enable debug mode
-H, --host=[] Daemon socket(s) to connect to
-h, --help Print usage
-l, --log-level=info Set the logging level
--tls Use TLS; implied by --tlsverify
--tls3acert=~/.docker/ca.pem Trust certs signed only by this CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file
--tlskey=~/.docker/key.pem Path to TLS key file
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit Commands: attach Attach to a running container //附加至某运行状态的容器的终端设备
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container //让运行中的容器运行一个额外的程序
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images //列出本地已有镜像
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on a container, image or task
kill Kill one or more running containers //杀死一个容器。还有一种当内存用完成,自动停止容器
load Load an image from a tar archive or STDIN
login Log in to a Docker registry. //登陆到register,然后pull或push镜像
logout Log out from a Docker registry.
logs Fetch the logs of a container //容器内部程序运行时输出到终端的信息,如果有终端的话,包括用户所键入的信息"也就是命令"
network Manage Docker networks //让容器加入网络,默认为docker0
node Manage Docker Swarm nodes
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers //列出正在运行的容器, 加-a,列出所有
pull Pull an image or a repository from a registry //下载镜像
push Push an image or a repository to a registry //上传镜像
rename Rename a container
restart Restart a container
rm Remove one or more containers //容器运行终止即自行删除
rmi Remove one or more Images //删除镜像
run Run a command in a new container //包含create和start
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images //搜索镜像文件
service Manage Docker services
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers //停止一个容器
swarm Manage Docker Swarm
tag Tag an image into a repository
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
volume Manage Docker volumes
wait Block until a container stops, then print its exit code ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
仓库 标签 镜像自己的ID 创建时间 镜像的大小 ~]# docker search busybox
~]# docker pull docker.io/busybox:latest //冒号后标签可不写,默认库最新的。此时本机会联上docker.io register去拉取最新的镜像。 ~]# docker help run
--name string //名称
--rm //容器一停,立即删除
-i, --interactive //交互式接口,一启动便可交互
-t, --tty //附加一个终端
--network string //让容器附加在某个网络上
~]# ip a
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:e7:f3:cc:df brd ff:ff:ff:ff:ff:ff
inet **172.17.0.1/16** scope global docker0
valid_lft forever preferred_lft forever
//在启动docker服务时,docker会自动创建一个桥叫docker0,NAT桥 ~]# iptables -t nat -vnL
Chain POSTROUTING (policy ACCEPT 15 packets, 1800 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 //这一条规则就说明了,此docker0的网络是NAT模式的。自带dhcp功能 可以启动busybox服务:
~]# docker run --name test1 -it docker.io/busybox:latest
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet **172.17.0.2/16** scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
/ #
//可以看到启动的busybox已经分配到了ip地址 //重新打开一个会话窗口
[root@localhost ~]# docker ps -a //列出当前容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2fd90aedeb8 docker.io/busybox:latest "sh" 12 seconds ago Up 11 seconds test1

注意:

创建容器:基于镜像,镜像文件得有默认运行的程序

运行的容器内部必须有一个工作于前台的程序,切不可转换至后台;

docker的容器通常也是仅为运行一个程序;

要想在容器内运行多个程序,一般需要提供一个管控程序,例如:supervised

~]# docker -it //这个选项是因为bash这个程序一直运行于前台,并且交互中启动的程序都是bash进程下的子进程,这样是启动多个进程的一种方式。


常用命令

启动相关命令:

--name string
--rm : 容器运行终止即自行删除
--network BRIDGE : 让容器加入相应的网络,默认为docker0 交互式启动容器:
-i,--interactive : 交互式
-t,--tty : 启动一个终端
从终端拆除: ctrl+p,ctrl+q 连续按ctrl+p+q 也可以。如果想在次连接进入容器,可直接 ~]# docker attach "NAMES" attach : 附加至某运行状态的容器的终端设备

查看容器相关信息:

logs : 容器内部程序运行时输出到终端的信息,如果有终端的话,包括用户所键入的信息"也就是命令"

ps : list containers
-a,--all :列出所有容器
-filter,-f : 过滤条件显示
name=
status{stopped|running|paused}
stats : 动态方式显示容器的资源占用状态 top :显示一个容器内部正在运行的命令

容器的状态

  • created
  • running
  • paused
  • stop
  • deleted

下图非常详细的解释每种状态的变化:

docker 安装及使用介绍的更多相关文章

  1. Docker安装Redis并介绍漂亮的可视化客户端进行操作

    1 简介 Redis是使用ANSI C语言开发的基于Key-Value的高性能NoSQL数据库,在解决高并发.高可用等一系列问题中,它扮演着重要的角色.它的优势主要有: 速度快. 持久化. 原子性. ...

  2. Docker的安装与使用介绍

    docker是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  3. 调度系统Airflow1.10.4调研与介绍和docker安装

    Airflow1.10.4介绍与安装 现在是9102年,8月中旬.airflow当前版本是1.10.4. 随着公司调度任务增大,原有的,基于crontab和mysql的任务调度方案已经不太合适了,需要 ...

  4. 微服务分布式电商项目学习笔记(三)---- docker介绍安装以及使用docker安装软件(2020/7/10)

    其实在介绍docker的使用和安装之前应该还要介绍虚拟机的安装与配置,以及虚拟网络的配置,但是我使用的是vmware,而视频课使用的是vagrant,这一块我简看的,因此没有过多的介绍,至于vmwar ...

  5. 理解Docker(1):Docker 安装和基础用法

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  6. 2. Docker - 安装

    一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...

  7. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  8. Centos7通过Docker安装Sentry(哨兵)

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  9. 使用docker安装mysql和redis

    本文介绍在linux下使用docker安装mysql和redis. 原文地址:代码汇个人博客 http://www.codehui.net/info/59.html 测试环境:centos7.6,do ...

随机推荐

  1. 一码学程 10284 排队找bug 题解 单调队列 或者 线段树RMQ

    注:只是看到题目,未评测,所以不确定代码正确性,但是算法思路没有问题 描述 同学们的bug还真是多啊,orz... 春节期间大家存下的bug都来找肖老师解决了. 每个人都有bug,但是肖老师却只有一个 ...

  2. LeetCode:第K个排列【60】

    LeetCode:第K个排列[60] 题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: &quo ...

  3. django:下拉框二级联动实现

    注意:只列举核心部分代码 前台模板: 第一级下拉菜单: <div class="col-sm-4"> <select data-placeholder=" ...

  4. 【视频开发】EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端

    近期工作中需要开发一套视频监控系统,实现WEB端.手机APP端预览局域网内的道路监控摄像机,我负责一些后台服务的开发工作. 由于之前项目中的程序都是采用私有协议.各摄像机厂商的SDK进行视频监控系统开 ...

  5. CentOS 初始化脚本

    #!/bin/bash # curl https://yiyingcanfeng.github.io/centos-init.sh | bash # 可选参数base kernel python ph ...

  6. PLSQL Developer 11 使用技巧(持续更新)

    PLSQL Developer 11 使用技巧 (持续更新) 目录(?)[-] 首先是我的颜色配置 常用快捷键 提升PLSQL编程效率 按空格自动替换 关闭Window窗口 PLSQL 实用技巧 TI ...

  7. 「模拟赛20191019」B 容斥原理+DP计数

    题目描述 将\(n\times n\)的网格黑白染色,使得不存在任意一行.任意一列.任意一条大对角线的所有格子同色,求方案数对\(998244353\)取模的结果. 输入 一行一个整数\(n\). 输 ...

  8. [转帖]DCEP:中国自己的数字货币

    DCEP:中国自己的数字货币 https://cloud.tencent.com/developer/news/435883 前面我们讨论了Libra的革命性和局限性,接下来我想跟你聊一件重要的事,那 ...

  9. c++修改打印机名称

    public static bool SetPrinterName(string OldName, string newName) { IntPtr hPrinter; PrintAPI.struct ...

  10. web渗透思维导图

    更新中!!