设为首页 收藏本站
查看: 836|回复: 0

[经验分享] Docker快速入门基础教程

[复制链接]
累计签到:16 天
连续签到:1 天
发表于 2016-12-2 14:47:23 | 显示全部楼层 |阅读模式
1、Docker简介
Docker通过内核虚拟化技术(namespace及cgroups等)来提供容器的资源隔离与安全保障等,由于docker通过操作系统层的虚拟化实现隔离,所以docker容器在运行时,不需要类似虚拟机额外的操作系统开销,提供资源利用率。
2、docker  vs  kvm


3、docker组件
镜像、容器、仓库
4、docker安装
[iyunv@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
[iyunv@docker ~]# yum install docker-engine -y
5、docker基础操作
[iyunv@docker ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[iyunv@docker ~]# systemctl start docker.service
[iyunv@docker ~]#  
[iyunv@docker ~]# docker pull centos  #拉取镜像
[iyunv@docker ~]# docker pull daocloud.io/library/nginx
  
有时候拉取速度很慢,采用国内源加速
  
root@docker ~]# vim /usr/lib/systemd/system/docker.service  增加下面这行
EnvironmentFile=/etc/sysconfig/docker
  
  
新建配置文件[iyunv@docker ~]# vim /etc/sysconfig/docker
https://dashboard.daocloud.io/  注册,然后点击加速器生成加速链接
  
OPTIONS=--registry-mirror=curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s  
  
  
[iyunv@docker ~]# docker search nginx  #搜索镜像
[iyunv@docker ~]# docker images  
REPOSITORY          TAG                IMAGE ID            CREATED            SIZE
centos              latest              0584b3d2cf6d        2 weeks ago        196.5 MB
  
导出镜像
[iyunv@docker ~]# docker save -o nginx.tar daocloud.io/library/nginx  
  
[iyunv@docker ~]# docker save -o cnetos.tar centos
导入镜像
[iyunv@docker ~]# docker load --input cnetos.tar  或者  [iyunv@docker ~]# docker load < cnetos.tar
删除镜像
[iyunv@docker ~]# docker rmi 0584b3d2cf6d (镜像ID)  
  
  
[iyunv@docker ~]# docker run centos /bin/echo "Hello world"
Hello world
[iyunv@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
  
[iyunv@docker ~]# docker run --name mydocker -t -i centos /bin/bash
[iyunv@1a67f4c92b6e /]#  
  
[iyunv@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
  
[iyunv@1a67f4c92b6e /]# exit
exit
[iyunv@docker ~]# 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
  
[iyunv@docker ~]# docker run --name docker-demo -d centos /bin/bash    -d代表放入后台执行
6c5a777467b9552714f9cd3322e677750e2b8b5b0bd2d81e79094ad560828a5e
[iyunv@docker ~]# 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
  
[iyunv@docker ~]# docker stop mydocker    停止容器
[iyunv@docker ~]# docker start 1a67f4c92b6e  启动容器
  
[iyunv@docker ~]# docker run -d --name mynginx daocloud.io/library/nginx
225a9b0459630c62dcf2199d6244b16a74ad9412471abf0be03755768df3ae63
[iyunv@docker ~]#  
[iyunv@docker ~]# 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
      
  
进入容器脚步
[iyunv@docker ~]# 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网络
[iyunv@docker ~]# docker run -d -P --name nginx-test1 daocloud.io/library/nginx
9b1d36d40127fe2c84bbe7750802e435a817a15b4159b24fc49bfb1107a2cb74
  
[iyunv@docker ~]# 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
  
[iyunv@docker ~]# netstat -lntup|grep 32768
tcp6      0      0 :::32768                :::*                    LISTEN      11213/docker-proxy  
  
[iyunv@docker ~]# 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
  
  
转换前
[iyunv@docker ~]# 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         
  
  
转换后
[iyunv@docker ~]# docker run -d -P --name nginx-test1 daocloud.io/library/nginx
42783cf5053639383004f82b9e72fe0223c7c028d2754b2d0f74429824715f05
[iyunv@docker ~]# 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
[iyunv@docker ~]# 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         
  
[iyunv@docker ~]# 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数据存储
[iyunv@docker ~]# docker run -d --name nginx-volume-test1 -v /data daocloud.io/library/nginx
88b24d79a4f3b021325592ceac20e86291166d675b213d60db017548c4d9d960
  
[iyunv@docker ~]# 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
  
[iyunv@docker ~]# cd /var/lib/docker/
[iyunv@docker 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
[iyunv@docker docker]# cd volumes/
[iyunv@docker volumes]# ls
4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60  metadata.db
[iyunv@docker volumes]# cd 4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60/
[iyunv@docker 4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60]# ls
_data
[iyunv@docker 4c60775f938a840e5484aee9088bc612977c25a01f5bd164690d94c962e66e60]# cd _data/    容器内的文件实际在物理机上面的的保存目录
[iyunv@docker _data]# ls
hehe
  
[iyunv@docker ~]# docker run -d --name nginx-volume-test2 -v /data/mysql:/mysql daocloud.io/library/nginx   
f7278ce9bd88c26a0c5aaefcb2b39f1f9df0066bc94edb7a530213815e166f5e
  
#-v /data/mysql:/mysql  表示把物理机的/data/mysql目录挂载到容器内的/mysql目录下面
  
[iyunv@docker ~]# docker run -d --name nginx-volumes -v /data/mysql:/mysql daocloud.io/library/nginx
28c616e44352fc4eafeb2f87dbbb7b6eb9df447235afe027034efa96df1c5071
  
[iyunv@docker ~]#  
[iyunv@docker ~]# docker run -d --name web-node1 --volumes-from nginx-volumes daocloud.io/library/nginx
0f022ce56e8b800cb1a4ac76bb8a326d42e198093146e8661ad3ac8925ad317d
[iyunv@docker ~]#  
[iyunv@docker ~]# docker run -d --name web-node2 --volumes-from nginx-volumes daocloud.io/library/nginx
03d5e88c15f6604eeee2b8af500b8f356ba69adc34710f3c19b813530f19dc3d
本篇文章来源于 Linux公社网站(www.iyunv.com)  原文链接:http://www.iyunv.com/Linux/2016-12/137807.htm

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308736-1-1.html 上篇帖子: Docker管理工具Web UI:DockerUI & Shipyard 下篇帖子: docker 入门 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表