Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker快速入门以及安装使用

Docker快速入门以及安装使用

作者头像
刘远飞
修改于 2017-06-19 11:09:29
修改于 2017-06-19 11:09:29
8.8K00
代码可运行
举报
文章被收录于专栏:刘远飞的专栏刘远飞的专栏
运行总次数:0
代码可运行

1、Docker简介

docker通过内核虚拟化技术(namespace及cgroups等)来提供容器的资源隔离与安全保障等,由于docker通过操作系统层的虚拟化实现隔离,所以docker容器在运行时,不需要类似虚拟机额外的操作系统开销,提供资源利用率。

2、Docker vs kvm

3、Docker组件

镜像、容器、仓库

4、Docker安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]#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
[root@tiejiang ~]# yum install docker-engine -y

5、Docker基础操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@tiejiang ~]# systemctl start docker.service
[root@tiejiang ~]# 
[root@tiejiang ~]# docker pull centos  #拉取镜像
[root@tiejiang ~]# docker pull daocloud.io/library/nginx

有时候拉取速度很慢,采用国内源加速

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# vim /usr/lib/systemd/system/docker.service

增加下面这行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EnvironmentFile=/etc/sysconfig/docker

新建配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# vim /etc/sysconfig/docker

https://dashboard.daocloud.io/ 注册,然后点击加速器生成加速链接

OPTIONS=--registry-mirror=curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# docker search nginx  #搜索镜像

[root@tiejiang ~]# docker images 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              latest              0584b3d2cf6d        2 weeks ago         196.5 MB

导出镜像

[root@tiejiang ~]# docker save -o nginx.tar daocloud.io/library/nginx

[root@tiejiang ~]# docker save -o cnetos.tar centos

导入镜像

[root@tiejiang ~]# docker load --input cnetos.tar 或者 [root@docker ~]# docker load < cnetos.tar

删除镜像

[root@tiejiang ~]# docker rmi 0584b3d2cf6d (镜像ID)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# docker run centos /bin/echo "Hello world"
Hello world
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
5e381e68a385        centos              "/bin/echo 'Hello wor"   6 seconds ago       Exited (0) 5 seconds ago                       clever_lamarr

[root@docker ~]# docker run --name mydocker -t -i centos /bin/bash
[root@1a67f4c92b6e /]# 

[root@1a67f4c92b6e /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 18:56 ?        00:00:00 /bin/bash
root         14      1  0 18:56 ?        00:00:00 ps -ef

[root@1a67f4c92b6e /]# exit
exit
[root@tiejiang ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
1a67f4c92b6e        centos              "/bin/bash"              12 minutes ago      Exited (0) 6 seconds ago                        mydocker
5e381e68a385        centos              "/bin/echo 'Hello wor"   16 minutes ago      Exited (0) 16 minutes ago                       clever_lamarr

[root@tiejiang ~]# docker run --name docker-demo -d centos /bin/bash    -d代表放入后台执行
6c5a777467b9552714f9cd3322e677750e2b8b5b0bd2d81e79094ad560828a5e
[root@tiejiang ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
6c5a777467b9        centos              "/bin/bash"              11 seconds ago      Exited (0) 11 seconds ago                       docker-demo
1a67f4c92b6e        centos              "/bin/bash"              17 minutes ago      Exited (0) 4 minutes ago                        mydocker
5e381e68a385        centos              "/bin/echo 'Hello wor"   21 minutes ago      Exited (0) 21 minutes ago                       clever_lamarr

[root@tiejiang ~]# docker stop mydocker    停止容器
[root@tiejiang ~]# docker start 1a67f4c92b6e   启动容器

[root@tiejiang ~]# docker run -d --name mynginx daocloud.io/library/nginx
225a9b0459630c62dcf2199d6244b16a74ad9412471abf0be03755768df3ae63
[root@tiejiang ~]# 
[root@tiejiang ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS               NAMES
225a9b045963        daocloud.io/library/nginx   "nginx -g 'daemon off"   6 seconds ago   
    Up 5 seconds        80/tcp, 443/tcp     mynginx


进入容器
[root@tiejiang ~]# cat docker_in.sh 
#!/bin/bash

docker_in(){

  NAME_ID=$1
  PID=$(docker inspect --format "{{ .State.Pid }}" $NAME_ID)
  nsenter -t $PID -m -u -i -n -p

}


docker_in $1

6、docker网络

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# docker run -d -P --name nginx-test1 daocloud.io/library/nginx
9b1d36d40127fe2c84bbe7750802e435a817a15b4159b24fc49bfb1107a2cb74

[root@tiejiang ~]# docker ps -l
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                           NAMES
9b1d36d40127        daocloud.io/library/nginx   "nginx -g 'daemon off"   2 minutes ago       Up 2 minutes        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   nginx-test1

[root@tiejiang ~]# netstat -lntup|grep 32768
tcp6       0      0 :::32768                :::*                    LISTEN      11213/docker-proxy  

[root@tiejiang ~]# curl -I http://172.16.80.132:32769
HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Thu, 24 Nov 2016 05:58:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 11 Oct 2016 15:03:01 GMT
Connection: keep-alive
ETag: "57fcff25-264"
Accept-Ranges: bytes

转换前

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER-ISOLATION  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

转换后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# docker run -d -P --name nginx-test1 daocloud.io/library/nginx
42783cf5053639383004f82b9e72fe0223c7c028d2754b2d0f74429824715f05
[root@tiejiang ~]# docker ps -l
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                                           NAMES
42783cf50536        daocloud.io/library/nginx   "nginx -g 'daemon off"   9 seconds ago       Up 7 seconds        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   nginx-test1
[root@tiejiang ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER-ISOLATION  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:443
ACCEPT     tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:80

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

[root@tiejiang ~]# sh docker_in.sh nginx-test1
root@42783cf50536:/# 
root@42783cf50536:/# 
root@42783cf50536:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    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
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    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

7、Docker数据存储

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@tiejiang ~]# docker run -d --name nginx-volume-test1 -v /data daocloud.io/library/nginx
88b24d79a4f3b021325592ceac20e86291166d675b213d60db017548c4d9d960

[root@tiejiang ~]# sh docker_in.sh nginx-volume-test1
root@88b24d79a4f3:/# cd /data/
root@88b24d79a4f3:/data# ls
root@88b24d79a4f3:/data# touch hehe
root@88b24d79a4f3:/data# ls -l      
total 0
-rw-r--r-- 1 root root 0 Nov 24 06:30 hehe

[root@tiejiang ~]# cd /var/lib/docker/
[root@tiejiang docker]# ll
total 32
drwx------ 6 root root 4096 Nov 24 14:28 containers
drwx------ 5 root root 4096 Nov 24 02:05 devicemapper
drwx------ 3 root root 4096 Nov 24 01:20 image
drwxr-x--- 3 root root 4096 Nov 24 01:20 network
drwx------ 2 root root 4096 Nov 24 01:20 swarm
drwx------ 2 root root 4096 Nov 24 10:09 tmp
drwx------ 2 root root 4096 Nov 24 01:20 trust
drwx------ 3 root root 4096 Nov 24 14:28 volumes
[root@tiejiang docker]# cd volumes/
[root@tiejiang volumes]# ls
4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60  metadata.db
[root@tiejiang volumes]# cd 4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60/
[root@tiejiang 4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60]# ls
_data
[root@tiejiang 4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60]# cd _data/    容器内的文件实际在物理机上面的的保存目录
[root@tiejiang _data]# ls
hehe

[root@tiejiang ~]# docker run -d --name nginx-volume-test2 -v /data/mysql:/mysql daocloud.io/library/nginx   
f7278ce9bd88c26a0c5aaefcb2b39f1f9df0066bc94edb7a530213815e166f5e

#-v /data/mysql:/mysql  表示把物理机的/data/mysql目录挂载到容器内的/mysql目录下面


[root@tiejiang ~]# docker run -d --name nginx-volumes -v /data/mysql:/mysql daocloud.io/library/nginx
28c616e44352fc4eafeb2f87dbbb7b6eb9df447235afe027034efa96df1c5071

[root@tiejiang ~]# 
[root@tiejiang ~]# docker run -d --name web-node1 --volumes-from nginx-volumes daocloud.io/library/nginx
0f022ce56e8b800cb1a4ac76bb8a326d42e198093146e8661ad3ac8925ad317d
[root@tiejiang ~]# 
[root@tiejiang ~]# docker run -d --name web-node2 --volumes-from nginx-volumes daocloud.io/library/nginx
03d5e88c15f6604eeee2b8af500b8f356ba69adc34710f3c19b813530f19dc3d

本文系转载,如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker 网络
Docker 服务启动时会首先在主机上自动创建一个 docker0 的虚拟网桥,网桥可以理解为一个软件交换机,负责挂载其上的接口之间进行包转发。
张哥编程
2024/12/07
800
Docker 网络
docker网络主要是解决容器联网问题,也是我们使用容器中最重要的一个环节,如果容器没有网络则无法向网络中提供服务。
星哥玩云
2022/09/15
4210
Docker桥接网络分析
使用ip link查看本机网卡列表,可以发现宿主机存在一个名为docker0的虚拟网桥,且虚拟网桥下有四对虚拟网卡分别对应 debian、halo、redis、mysql四个docker容器。
敲得码黛
2024/06/12
1550
Docker桥接网络分析
详解Docker——你需要知道的Docker进阶知识四
在我们安装 Docker 后,会自动创建三个网络。我们可以使用下面的命令来查看这些网络:
云原生
2021/05/31
7500
5 年工作经验,Docker 的几种网络模式都说不清,你敢信?
Docker 在安装后自动提供 3 种网络,可以使用 docker network ls 命令查看
民工哥
2022/10/27
1.1K0
5 年工作经验,Docker 的几种网络模式都说不清,你敢信?
Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求。容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信。下面将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker。前面已经在Docker容器学习梳理--基础知识(2)这一篇中详细介绍了Docker的网络配置以及pipework工具。 docker单主机容器通信 基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,
洗尽了浮华
2018/01/23
3.6K0
Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
docker复制文件到宿主机_下面哪几个属于docker网络模式
此种方式是将容器的某个端口映射到宿主机的某个端口,其它主机访问容器提供的服务需要通过宿主机的IP进行访问:
全栈程序员站长
2022/09/25
8230
docker复制文件到宿主机_下面哪几个属于docker网络模式
关于Docker中 容器镜像管理,数据卷网络,本地仓库,容器监控的一些笔记
学习 K8s,顺便整理下之前学的docker的相关笔记.有错误的地方小伙伴积极留言。
山河已无恙
2023/03/02
2.6K0
关于Docker中 容器镜像管理,数据卷网络,本地仓库,容器监控的一些笔记
Docker 网络
当你安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
Java_慈祥
2024/08/06
1650
Docker 网络
Install Kibana
具有强大的数据展示能力,可以形成漂亮直观的表格与图形,操作简单,给数据分析与报告带来很大便利
franket
2021/08/11
9760
Docker容器内部端口映射到外部宿主机端口的方法小结
Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务。 容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射。
洗尽了浮华
2018/08/22
6.6K0
安装docker以及通过容器创建镜像
Docker是一个开放源代码软件项目,自2013年开始,近些年发展迅猛,它让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、内存、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的 LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,依据行业分析公司“451研究”:“Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公有云、私有云、单机等。” 。
端碗吹水
2020/09/23
1K0
安装docker以及通过容器创建镜像
关于docker环境运行zabbix时,你可能不知道的事
关于docker环境运行zabbix时,可以快速的部署一套zabbix环境,不管是学习docker还是学习zabbix,都是可以作为一个实际项目来进行测试和练习,但是如果对docker的网络模式不熟悉,可能会遇到一些坑,本文就一些你可能不知道的事进行了测试,与试水,希望能给与大家帮助
用户6641876
2020/02/19
3.8K0
docker知识总结
​ Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。
twelvecoder
2021/12/24
5540
docker知识总结
Keepalived LVS NAT
LVS 只实现到了四层,Keepalived 可以实现七层的简单检查,Keepalived 可以通过预设的检查逻辑来管理 LVS 配置,从而实现对 LVS 自动且动态的调配,让整个 LB 系统更加灵活且健壮
franket
2021/08/10
1.6K0
Docker快速入门总结笔记
(1)基本介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
全栈程序员站长
2022/09/07
6120
CentOS8 Docker 端口映射
端口映射:端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。
全栈程序员站长
2022/11/02
9030
Docker 容器入门
1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,
惨绿少年
2018/03/30
2K0
系列1 Docker基础命令
* 编辑nginx配置文件/usr/local/nginx/conf/nginx.conf
公众号: 云原生生态圈
2021/11/15
3360
系列1 Docker基础命令
Docker重学系列之高级网络篇
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
大忽悠爱学习
2022/05/10
1.2K0
Docker重学系列之高级网络篇
相关推荐
Docker 网络
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验