博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker容器技术2
阅读量:3941 次
发布时间:2019-05-24

本文共 33355 字,大约阅读时间需要 111 分钟。

docker1 192.168.8.1 2cpu 2G以上内存 20G以上硬盘 1网卡(vbr)

docker2 192.168.8.2 2cpu 2G以上内存 20G以上硬盘 1网卡(vbr)

[root@docker1 ~]# vim /etc/hosts192.168.8.1     docker1192.168.8.2     docker2[root@docker2 ~]# vim /etc/hosts192.168.8.1     docker1192.168.8.2     docker2[root@docker1 ~]# yum search docker已加载插件:fastestmirrorLoading mirror speeds from cached hostfile=========================== N/S matched: docker ===========================docker-engine.x86_64 : The open-source application container enginedocker-engine-selinux.noarch : SELinux Policies for the open-source                             : application container engine  名称和简介匹配 only,使用“search all”试试。[root@docker2 ~]# yum search docker已加载插件:fastestmirrorLoading mirror speeds from cached hostfile=========================== N/S matched: docker ===========================docker-engine.x86_64 : The open-source application container enginedocker-engine-selinux.noarch : SELinux Policies for the open-source                             : application container engine  名称和简介匹配 only,使用“search all”试试。

安装Docker

[root@docker1 ~]# yum -y install docker-engine[root@docker1 ~]# ifconfig[root@docker1 ~]# systemctl start docker[root@docker1 ~]# ifconfig docker0: flags=4099
mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:5a:25:2c:46 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@docker2 ~]# yum -y install docker-engine[root@docker2 ~]# ifconfig[root@docker2 ~]# systemctl start docker[root@docker2 ~]# ifconfig docker0: flags=4099
mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:5a:25:2c:46 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

查看版本

[root@docker1 ~]# docker versionClient: Version:      1.12.1 API version:  1.24 Go version:   go1.6.3 Git commit:   23cf638 Built:         OS/Arch:      linux/amd64Server: Version:      1.12.1 API version:  1.24 Go version:   go1.6.3 Git commit:   23cf638 Built:         OS/Arch:      linux/amd64

查看镜像

[root@docker1 ~]# docker images[root@docker1 ~]# docker search mysql		搜索Mysql[root@docker1 ~]# docker search centos		搜索Centos[root@docker1 ~]# docker search busybox		搜索Busybox[root@docker1 ~]# docker pull busybox		下载Busybox[root@docker1 ~]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEbusybox             latest              64f5d945efcc        2 weeks ago         1.199 MB

帮助

[root@docker1 ~]# docker help pushUsage:	docker push [OPTIONS] NAME[:TAG]Push an image or a repository to a registryOptions:      --disable-content-trust   Skip image verification (default true)      --help                    Print usage[root@docker1 ~]# docker help pullUsage:	docker pull [OPTIONS] NAME[:TAG|@DIGEST]Pull an image or a repository from a registryOptions:  -a, --all-tags                Download all tagged images in the repository      --disable-content-trust   Skip image verification (default true)      --help                    Print usage[root@docker1 ~]# docker help search Usage:	docker search [OPTIONS] TERMSearch the Docker Hub for imagesOptions:  -f, --filter value   Filter output based on conditions provided (default [])      --help           Print usage      --limit int      Max number of search results (default 25)      --no-trunc       Don't truncate output[root@docker1 ~]# docker search -f is-official=true busybox				只搜索官方提供的包[root@docker1 ~]# docker save busybox:latest > abc				备份[root@docker1 ~]# mv abc busybox.tar[root@docker1 ~]# tar -tvf busybox.tar -rw-r--r-- 0/0            1496 2019-05-09 17:19 64f5d945efcc0f39ab11b3cd4ba403cc9fefe1fa3613123ca016cf3708e8cafb.jsondrwxr-xr-x 0/0               0 2019-05-09 17:19 a57c26390d4b78fd575fac72ed31f16a7a2fa3ebdccae4598513e8964dace9b2/-rw-r--r-- 0/0               3 2019-05-09 17:19 a57c26390d4b78fd575fac72ed31f16a7a2fa3ebdccae4598513e8964dace9b2/VERSION-rw-r--r-- 0/0            1174 2019-05-09 17:19 a57c26390d4b78fd575fac72ed31f16a7a2fa3ebdccae4598513e8964dace9b2/json-rw-r--r-- 0/0         1415680 2019-05-09 17:19 a57c26390d4b78fd575fac72ed31f16a7a2fa3ebdccae4598513e8964dace9b2/layer.tar-rw-r--r-- 0/0             203 1969-12-31 19:00 manifest.json-rw-r--r-- 0/0              90 1969-12-31 19:00 repositories[root@docker1 ~]# docker save busybox:latest > busybox.tar[root@docker1 ~]# scp   busybox.tar   docker2:./[root@docker2 ~]# lsbusybox.tar[root@docker2 ~]# docker load < busybox.tar	恢复d1156b98822d: Loading layer 1.416 MB/1.416 MBLoaded image: busybox:latest[root@docker2 ~]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEbusybox             latest              64f5d945efcc        2 weeks ago         1.199 MB[root@docker2 ~]# docker save busybox:latest -o busybox.tar[root@docker1 ~]# yum -y install unzip[root@docker1 ~]# unzip docker_images.zip Archive:  docker_images.zip   creating: docker_images/  inflating: docker_images/nginx.tar    inflating: docker_images/redis.tar    inflating: docker_images/centos.tar    inflating: docker_images/registry.tar    inflating: docker_images/ubuntu.tar [root@docker1 ~]# yum -y install unzip[root@docker1 ~]# unzip docker_images.zip Archive:  docker_images.zip   creating: docker_images/  inflating: docker_images/nginx.tar    inflating: docker_images/redis.tar    inflating: docker_images/centos.tar    inflating: docker_images/registry.tar    inflating: docker_images/ubuntu.tar[root@docker2 ~]# yum -y install unzip[root@docker2 ~]# unzip docker_images.zip Archive:  docker_images.zip   creating: docker_images/  inflating: docker_images/nginx.tar    inflating: docker_images/redis.tar    inflating: docker_images/centos.tar    inflating: docker_images/registry.tar    inflating: docker_images/ubuntu.tar[root@docker1 ~]# cd docker_images/[root@docker1 docker_images]# for i in *;do docker load -i ${i};done[root@docker2 ~]# cd docker_images/[root@docker2 docker_images]# for i in *;do docker load -i ${i};done

启动镜像

启动centos镜像生成一个容器

[root@docker1 ~]# docker images[root@docker1 ~]# docker run -it centos:latest /bin/bash

测试:

主机名,网络,文件系统,进程,用户

[root@db0d56cc0e37 /]# cd /etc/yum.repos.d/[root@db0d56cc0e37 yum.repos.d]# lsCentOS-Base.repo       CentOS-Media.repo    CentOS-fasttrack.repoCentOS-CR.repo         CentOS-Sources.repoCentOS-Debuginfo.repo  CentOS-Vault.repo[root@db0d56cc0e37 yum.repos.d]# rm -f *[root@db0d56cc0e37 yum.repos.d]# vi centos.repo[dvd]name=dvdbaseurl="ftp://192.168.8.254/rhel7"enabled=1gpgcheck=0[root@db0d56cc0e37 yum.repos.d]# yum provides ifconfigLoaded plugins: fastestmirror, ovldvd                                                 | 4.1 kB     00:00     (1/2): dvd/group_gz                                   | 137 kB   00:00     (2/2): dvd/primary_db                                 | 4.0 MB   00:00     Determining fastest mirrorsdvd/filelists_db                                    | 3.4 MB     00:00     net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking toolsRepo        : dvdMatched from:Filename    : /sbin/ifconfig[root@db0d56cc0e37 yum.repos.d]# yum -y install net-tools[root@db0d56cc0e37 ~]# ifconfig eth0: flags=4163
mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 319 bytes 8231709 (7.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 254 bytes 18265 (17.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@db0d56cc0e37 ~]# yum -y install psmisc[root@db0d56cc0e37 ~]# pstreebash---pstree[root@docker1 ~]# sleep 1111111111111[root@666 ~]# ps -ef | grep sleeproot 15604 978 0 19:09 ? 00:00:00 sleep 60root 15666 15619 0 19:10 pts/5 00:00:00 grep --color=auto sleep[root@docker1 ~]# ps -ef | grep sleeproot 11087 11068 0 07:12 pts/2 00:00:00 grep --color=auto sleep[root@db0d56cc0e37 ~]# sleep 11111111111[root@docker1 ~]# ps -ef | grep sleeproot 11089 11005 0 07:12 pts/1 00:00:00 sleep 11111111111root 11091 11068 0 07:12 pts/2 00:00:00 grep --color=auto sleep[root@docker1 ~]# kill 11089[root@db0d56cc0e37 ~]# sleep 11111111111Terminated[root@docker1 ~]# sleep 1111111111111^Z[1]+ 已停止 sleep 1111111111111[root@docker1 ~]# bg[1]+ sleep 1111111111111 &[root@docker1 ~]# pstree -p[root@docker1 ~]# docker run -it busybox:latest /bin/bashdocker: Error response from daemon: oci runtime error: exec: "/bin/bash": stat /bin/bash: no such file or directory.报错原因是:没有"/bin/bash"这个可执行文件[root@docker1 ~]# docker run -it busybox:latest 启动的是默认启动命令/ # ps -ef 它启动的是shPID USER TIME COMMAND1 root 0:00 sh10 root 0:00 ps -ef[root@docker1 ~]# docker run -it busybox:latest /bin/sh/ # [root@docker1 ~]# docker run -it centos:latest[root@docker1 ~]# docker run -it ubuntu:latest[root@docker1 ~]# docker run -it nginx:latest /bin/bash[root@docker1 ~]# systemctl stop sshd[root@docker1 ~]# cat /usr/lib/systemd/system/sshd.service [Unit] 说明Description=OpenSSH server daemonDocumentation=man:sshd(8) man:sshd_config(5)After=network.target sshd-keygen.serviceWants=sshd-keygen.service[Service] 执行的命令Type=notifyEnvironmentFile=/etc/sysconfig/sshdExecStart=/usr/sbin/sshd -D $OPTIONSExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install] 运行级别WantedBy=multi-user.target[root@docker1 ~]# systemctl restart sshd

开启一个终端(查看容器信息)

[root@docker1 ~]# docker ps

查看镜像制作历史

[root@docker1 ~]# docker history busybox:latestIMAGE               CREATED             CREATED BY                                      SIZE                COMMENT64f5d945efcc        2 weeks ago         /bin/sh -c #(nop)  CMD ["sh"]                   0 B                 
2 weeks ago /bin/sh -c #(nop) ADD file:e36dd1822f36a81696 1.199 MB [root@docker1 ~]# docker history centos:latest IMAGE CREATED CREATED BY SIZE COMMENTe934aafc2206 13 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
13 months ago /bin/sh -c #(nop) LABEL org.label-schema.sch 0 B
13 months ago /bin/sh -c #(nop) ADD file:f755805244a649ecca 198.6 MB[root@docker1 ~]# docker history nginx:latest IMAGE CREATED CREATED BY SIZE COMMENTa5311a310510 2 years ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon 0 B
2 years ago /bin/sh -c #(nop) EXPOSE 443/tcp 80/tcp 0 B
2 years ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx/ 0 B
2 years ago /bin/sh -c apt-key adv --keyserver hkp://pgp. 58.43 MB
2 years ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.11.5-1 0 B
2 years ago /bin/sh -c #(nop) MAINTAINER NGINX Docker Ma 0 B
2 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
2 years ago /bin/sh -c #(nop) ADD file:c6c23585ab140b0b32 123 MB

查看镜像底层信息

[root@docker1 ~]# docker inspect busybox:latest[root@docker1 ~]# docker inspect nginx:latest

删除本地镜像

[root@docker2 ~]# docker images[root@docker2 ~]# docker rmi busybox:latest[root@docker2 ~]# docker rmi ubuntu:latest[root@docker2 ~]# docker rmi centos:latest[root@docker2 ~]# docker rmi registry:latest[root@docker2 ~]# docker rmi nginx:latest[root@docker2 ~]# docker rmi redis:latest

修改镜像名称和标签

[root@docker1 ~]# docker images[root@docker1 ~]# docker tag busybox:latest abc:oxox[root@docker1 ~]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEabc                 oxox                64f5d945efcc        2 weeks ago         1.199 MBbusybox             latest              64f5d945efcc        2 weeks ago         1.199 MB[root@docker1 ~]# docker tag 64f5d945efcc abc:xxcc[root@docker1 ~]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEabc                 oxox                64f5d945efcc        2 weeks ago         1.199 MBabc                 xxcc                64f5d945efcc        2 weeks ago         1.199 MBbusybox             latest              64f5d945efcc        2 weeks ago         1.199 MB[root@docker1 ~]# docker run -it 64f5d945efcc[root@docker1 ~]# docker rmi abc:xxcc Untagged: abc:xxcc[root@docker1 ~]# docker rmi abc:oxox Untagged: abc:oxox运行容器-i	交互式-t	终端-d	后台运行[root@docker1 ~]# docker run -itd nginx:latest dc941d75b5b81f0efebbe5af0e812e3ae9180133da447f4f88e05aadb6a3a713[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMESdc941d75b5b8        nginx:latest        "nginx -g 'daemon off"   32 seconds ago      Up 29 seconds       80/tcp, 443/tcp     compassionate_meitner

关闭容器

[root@docker1 ~]# docker stop dc941d75b5b8dc941d75b5b8[root@docker1 ~]# docker ps

启动容器

[root@docker1 ~]# docker start dc941d75b5b8dc941d75b5b8[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMESdc941d75b5b8        nginx:latest        "nginx -g 'daemon off"   2 minutes ago       Up 1 seconds        80/tcp, 443/tcp     compassionate_meitner[root@docker1 ~]# docker inspect 3990c578ca6e[root@docker1 ~]# docker run -it centos[root@62e590fb0ec5 /]# sleep 12357689 &[1] 13[root@62e590fb0ec5 /]# ps -efUID        PID  PPID  C STIME TTY          TIME CMDroot         1     0  0 14:05 ?        00:00:00 /bin/bashroot        13     1  0 14:05 ?        00:00:00 sleep 12357689root        14     1  0 14:06 ?        00:00:00 ps -ef[root@docker1 ~]# ps -ef | grep sleeproot     11092     1  0 07:15 ?        00:00:00 sleep 1111111111111root     13530 13504  0 10:05 pts/8    00:00:00 sleep 12357689root     13534   800  0 10:06 pts/0    00:00:00 grep --color=auto sleep[root@docker1 ~]# docker ps[root@docker1 ~]# docker top 62e590fb0ec5UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                13504               13491               0                   10:05               pts/8               00:00:00            /bin/bashroot                13530               13504               0                   10:05               pts/8               00:00:00            sleep 12357689[root@docker1 ~]# kill 13530[root@docker1 ~]# docker top 62e590fb0ec5UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                13504               13491               0                   10:05               pts/8               00:00:00            /bin/bash

删除运行容器

[root@docker1 ~]# docker ps -aq[root@docker1 ~]# docker rm $(docker stop 62e590fb0ec5)[root@docker1 ~]# docker rm $(docker stop 16a2a2504ade)[root@docker1 ~]# docker rm $(docker ps -aq)

交互式容器

[root@docker1 ~]# docker run -itd centos082263d69d41716950e4b3f8ecdd6b383f697bfdeddfbd13eafb114dca145d49[root@docker1 ~]# docker run -itd nginx07bfa5e9cc88ee207e8f7c04fc61a548f7bb953b14fa1e664a6258646ff2891d[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES07bfa5e9cc88        nginx               "nginx -g 'daemon off"   50 seconds ago      Up 46 seconds       80/tcp, 443/tcp     determined_banach082263d69d41        centos              "/bin/bash"              57 seconds ago      Up 54 seconds                           suspicious_lamarr[root@docker1 ~]# docker attach 082263d69d41

临一个终端

[root@docker1 ~]# docker run -it centos[root@da8a93d4d30f /]# ps -efUID        PID  PPID  C STIME TTY          TIME CMDroot         1     0  0 14:29 ?        00:00:00 /bin/bashroot        13     1  0 14:29 ?        00:00:00 ps -ef[root@da8a93d4d30f /]# echo $$1Ctrl+p+q[root@da8a93d4d30f /]# [root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMESda8a93d4d30f        centos              "/bin/bash"         About a minute ago   Up About a minute                       sharp_payne[root@docker1 ~]# docker run -itd nginx2257832a98a25443c1258db2406f8663e719431017ea124d45eee15baf6eea69[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES2257832a98a2        nginx               "nginx -g 'daemon off"   23 seconds ago      Up 20 seconds       80/tcp, 443/tcp     tiny_bellda8a93d4d30f        centos              "/bin/bash"              4 minutes ago       Up 4 minutes                            sharp_payne[root@docker1 ~]# docker exec -it 2257832a98a2 /bin/bashroot@2257832a98a2:/# echo $$6root@2257832a98a2:/# exit[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES2257832a98a2        nginx               "nginx -g 'daemon off"   About a minute ago   Up About a minute   80/tcp, 443/tcp     tiny_bellda8a93d4d30f        centos              "/bin/bash"              6 minutes ago        Up 6 minutes                            sharp_payne[root@docker1 ~]# docker attach 2257832a98a2[root@docker1 ~]# docker inspect 2257832a98a2[root@docker1 ~]# curl 172.17.0.3[root@docker1 ~]# docker attach 2257832a98a2172.17.0.1 - - [28/May/2019:14:40:24 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

#---------------------------------------------------------------------------------------------------------------

1.启动一个 centos 的容器
2.安装一个 apache
3.设置默认首页为 Hello wokd
4.启动一个 nginx 的容器
5.设置默认首页为 Hello wokd
列如:

[root@docker1 ~]# docker rm $(docker stop $(docker ps -aq))[root@docker1 ~]# cat /etc/yum.repos.d/dvd.repo[docker]name=dockerbaseurl=ftp://192.168.8.254/dockerenabled=1gpgcheck=0[dvd]name=dvdbaseurl=ftp://192.168.8.254/rhel7enabled=1gpgcheck=0[root@docker1 ~]# docker run -it centos[root@014251dd73ae /]# rm -rf /etc/yum.repos.d/*[root@014251dd73ae /]# vi /etc/yum.repos.d/centos.repo[dvd]name=dvdbaseurl=ftp://192.168.8.254/rhel7enabled=1gpgcheck=0[root@014251dd73ae /]# yum -y install httpd vim[root@014251dd73ae /]# yum -y install net-tools psmisc tree[root@014251dd73ae /]# pstree -pbash(1)---pstree(56)[root@014251dd73ae /]# vim /var/www/html/index.htmlHello wokd[root@014251dd73ae /]# ifconfig[root@014251dd73ae /]# /usr/sbin/httpd $OPTIONS -DFOREGROUNDAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this messageCtrl+p+q[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES014251dd73ae        centos              "/bin/bash"         10 minutes ago      Up 10 minutes                           big_mcnulty[root@docker1 ~]# docker top 014251dd73ae[root@docker1 ~]# curl 172.17.0.2Hello wokd[root@docker1 ~]# docker run -itd nginx3c17e4cffe6dc7375dbcd49e57e52c3929bff867c441fb32d2bdcec0bee0af1b[root@docker1 ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES3c17e4cffe6d        nginx               "nginx -g 'daemon off"   24 seconds ago      Up 21 seconds       80/tcp, 443/tcp     sick_jepsen014251dd73ae        centos              "/bin/bash"              15 minutes ago      Up 15 minutes                           big_mcnultyroot@3c17e4cffe6d:/# cat /etc/debian_version 8.6#--------------------------------------------RedHat	Debian	|#--------------------------------------------rpm		dpkg		|yum		apt-get	|#--------------------------------------------[root@docker1 ~]# docker exec -it 014251dd73ae /bin/bash[root@014251dd73ae /]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)[root@014251dd73ae /]# rpm -qa | grep httpdroot@3c17e4cffe6d:/# dpkg -l | grep nginx[root@014251dd73ae /]# rpm -ql httpdroot@3c17e4cffe6d:/# dpkg -L nginx[root@014251dd73ae /]# rpm -qf /bin/lsroot@3c17e4cffe6d:/# dpkg -S /bin/ls

#------------------------------------------------------------------------------------------------------------

自定义镜像

[root@docker1 ~]# docker rm $(docker stop $(docker ps -aq))[root@docker1 ~]# docker ps -a[root@docker1 ~]# docker images[root@docker1 ~]# cat /etc/yum.repos.d/dvd.repo[dvd]name=dvdbaseurl=ftp://192.168.8.254/rhel7enabled=1gpgcheck=0[root@docker1 ~]# docker run -it centos[root@e62b34b4ab22 /]# rm -rf /etc/yum.repos.d/*[root@e62b34b4ab22 /]# vi /etc/yum.repos.d/centos.repo[dvd]name=dvdbaseurl=ftp://192.168.8.254/rhel7enabled=1gpgcheck=0[root@e62b34b4ab22 /]# yum repolist[root@e62b34b4ab22 /]# yum -y install vim net-tools psmisc lftp tree[root@e62b34b4ab22 /]# yum -y install iproute[root@e62b34b4ab22 /]# ip a s eth0[root@e62b34b4ab22 /]# vim[root@e62b34b4ab22 /]# ifconfig[root@docker1 ~]# docker ps -a

把容器变成镜像

[root@docker1 ~]# docker commit e62b34b4ab22 myol:latestsha256:0db44311a73859aeb1dcd5120f75525dec93b96ddb9b85910811aee3f2d6d012[root@docker1 ~]# docker ps -a[root@docker1 ~]# docker rm e62b34b4ab22[root@docker1 ~]# docker ps -a[root@docker1 ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEmyol                latest              b38331d66e87        5 minutes ago       307.2 MB[root@docker1 ~]# docker history myolIMAGE               CREATED             CREATED BY                                      SIZE                COMMENTb38331d66e87        7 minutes ago       /bin/bash                                       108.5 MB[root@docker1 ~]# docker run -it b38331d66e87 /bin/bash[root@bb1e5a38444f ~]# cat /etc/yum.repos.d/centos.repo [dvd]name=dvdbaseurl=ftp://192.168.8.254/rhel7enabled=1gpgcheck=0

Dockerfile语法格式:

FROM:基础镜像

MAINTAINER:镜像创建者信息(说明)

EXPOSE:开放的端口

ENV:设置环境变量

ADD:复制文件到镜像

RUN:制作镜像时执行的命令,可以有多个

WORKDIR:定义容器默认工作目录

CMD:容器启动时执行的命令,仅可以有一条CMD

[root@docker1 ~]# rm -rf *[root@docker1 ~]# mkdir Docker [root@docker1 ~]# cd Docker[root@docker1 Docker]# touch Dockerfile[root@docker1 Docker]# vim DockerfileFROM centos:latestRUN rm -rf /etc/yum.repos.d/*.repo容器内ADD dvd.repo  /etc/yum.repos.d/local.repo本地路径		容器里的路径RUN yum -y install vim net-tools psmisc lftp tree iproute[root@docker1 Docker]# cp /etc/yum.repos.d/dvd.repo   ./[root@docker1 Docker]# docker build -t test:latest .[root@docker1 Docker]# docker images[root@docker1 Docker]# docker run -it test[root@992171486e6c /]# yum repolist[root@docker1 Docker]# vim Dockerfile FROM myol:latestCMD ["/usr/bin/python"][root@docker1 Docker]# docker build -t myol:python .[root@docker1 Docker]# docker images[root@docker1 Docker]# docker ps -a[root@docker1 Docker]# docker rm 992171486e6c[root@docker1 Docker]# docker rmi test:latest[root@docker1 Docker]# docker images[root@docker1 Docker]# docker run -it myol:python Python 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> 排错思路:[root@docker1 Docker]# docker run -it myol[root@3e0b42f78664 /]# yum list | grep ssh[root@3e0b42f78664 /]# yum -y install openssh-server[root@3e0b42f78664 /]# cat /usr/lib/systemd/system/sshd.service[root@3e0b42f78664 /]# EnvironmentFile=/etc/sysconfig/sshd				环境变量[root@3e0b42f78664 /]# /usr/sbin/sshd -D $OPTIONS		报错Could not load host key: /etc/ssh/ssh_host_rsa_keyCould not load host key: /etc/ssh/ssh_host_ecdsa_keyCould not load host key: /etc/ssh/ssh_host_ed25519_keysshd: no hostkeys available -- exiting.[root@3e0b42f78664 /]# sshd-keygen		报错/usr/sbin/sshd-keygen: line 10: /etc/rc.d/init.d/functions: No such file or directoryGenerating SSH2 RSA host key: /usr/sbin/sshd-keygen: line 63: success: command not foundGenerating SSH2 ECDSA host key: /usr/sbin/sshd-keygen: line 105: success: command not foundGenerating SSH2 ED25519 host key: /usr/sbin/sshd-keygen: line 126: success: command not found[root@3e0b42f78664 /]# yum provides /etc/rc.d/init.d/functionsLoaded plugins: fastestmirror, ovlLoading mirror speeds from cached hostfileinitscripts-9.49.39-1.el7.x86_64 : The inittab file and the /etc/init.d scriptsRepo        : dvdMatched from:Filename    : /etc/rc.d/init.d/functions[root@3e0b42f78664 /]# yum -y install initscripts-9.49.39-1.el7.x86_64[root@3e0b42f78664 /]# sshd-keygen[root@3e0b42f78664 /]# passwd rootChanging password for user root.New password: BAD PASSWORD: The password is a palindromeRetype new password: passwd: all authentication tokens updated successfully.[root@3e0b42f78664 /]# /usr/sbin/sshd -D $OPTIONSCtrl+p+q[root@docker1 Docker]# ssh 172.17.0.2[root@docker1 ~]# mkdir Docker1[root@docker1 ~]# cd Docker1[root@docker1 Docker1]# touch Dockerfile[root@docker1 Docker1]# vim DockerfileFROM myol:latestRUN yum -y install openssh-server initscriptsRUN sshd-keygenRUN echo "1" | passwd --stdin rootENV EnvironmentFile=/etc/sysconfig/sshdEXPOSE 22CMD ["/usr/sbin/sshd", "-D"][root@docker1 Docker1]# docker build -t myol:sshd .[root@docker1 Docker1]# docker images[root@docker1 Docker1]# docker run -itd myol:sshd[root@docker1 Docker1]# docker ps[root@docker1 Docker1]# docker stop 3e[root@docker1 Docker1]# ssh 172.17.0.2

#---------------------------------

制作一个 httpd 的镜像

默认首页 Hello World

默认工作目录 /var/www/html

[root@docker1 ~]# docker run -it myol:latest[root@cd0051bcdfcb /]# yum -y install httpd[root@cd0051bcdfcb /]# cd /var/www/html/[root@cd0051bcdfcb html]# vim index.htmlHello World[root@cd0051bcdfcb html]# cat /usr/lib/systemd/system/httpd.service[root@cd0051bcdfcb html]# EnvironmentFile=/etc/sysconfig/httpd[root@docker1 ~]# mkdir Docker2[root@docker1 ~]# cd Docker2[root@docker1 Docker2]# vim indexm.htmlHello World[root@docker1 Docker2]# touch Dockerfile[root@docker1 Docker2]# vim DockerfileFROM myol:latestRUN yum -y install httpdWORKDIR /var/www/htmlADD index.html index.htmlENV EnvironmentFile=/etc/sysconfig/httpdEXPOSE 80EXPOSE 443CMD ["/usr/sbin/httpd", "-DFOREGROUND"][root@docker1 Docker2]# docker build -t myol:httpd .[root@docker1 Docker2]# docker images[root@docker1 Docker2]# docker run -itd myol:httpd[root@docker1 Docker2]# docker ps[root@docker1 Docker2]# docker inspect 7c[root@docker1 Docker2]# curl 172.17.0.3Hello World[root@docker1 Docker3]# docker help inspect [root@docker1 Docker3]# docker inspect -f "{
{.NetworkSettings.IPAddress}}" 7cc195d45d86172.17.0.3[root@docker1 Docker3]# docker inspect -f "{
{.NetworkSettings.MacAddress}}" 7cc195d45d86 02:42:ac:11:00:03[root@docker1 Docker3]# docker inspect -f "{
{.State.Pid}}" 7cc195d45d865648

镜像仓库 – 服务器

创建配置文件 /etc/docker/daemon.json[root@docker1 ~]# vim /etc/docker/daemon.json{	"insecure-registries" : ["192.168.8.1:5000"]}[root@docker1 ~]# systemctl restart docker启动私有仓库[root@docker1 ~]# docker run -itd -p 5000:5000 registry[root@docker1 ~]# curl http://192.168.8.1:5000/v2/{}上传镜像到私有仓库[root@docker1 ~]# docker tag busybox:latest 192.168.8.1:5000/busybox:latest[root@docker1 ~]# docker push 192.168.8.1:5000/busybox:latest[root@docker2 ~]# curl http://192.168.8.1:5000/v2/_catalog{"repositories":[]}

镜像仓库 – 客户端

配置 daemon.json[root@docker1 ~]# for i in latest python sshd httpd;do> docker tag myol:${i} 192.168.8.1:5000/myol:${i}> docker push 192.168.8.1:5000/myol:${i}> docker rmi 192.168.8.1:5000/myol:${i}> done[root@docker2 ~]# docker images[root@docker2 ~]# scp docker1:/etc/docker/daemon.json /etc/docker/[root@docker2 ~]# systemctl restart docker[root@docker2 ~]# docker run -it 192.168.8.1:5000/myol:latest[root@d5f880753166 /]# ifconfig [root@d5f880753166 /]# vim

持久化存储

[root@docker1 ~]# cd /var/[root@docker1 var]# mkdir webroot[root@docker1 var]# docker run -it -v /var/webroot/:/abc myol[root@73609ffbcc28 abc]# watch -n 0.1 'ls -l'[root@docker1 ~]# cd /var/webroot/[root@docker1 webroot]# touch q1 q2 q3 q4 q5[root@docker1 webroot]# rm -rf q3 q4 q5[root@docker1 webroot]# docker run -it -v /var/webroot/:/root/ myolbash-4.2# touch a s cbash-4.2# rm -rf a s c

创建一个 NFS 服务器

docker1 mount nfs 服务器共享出来的目录

在 docker1 上启动 Nginx 容器
把 mount 的共享目录辐射给容器

docker2 mount nfs 服务器共享出来的目录

在 docker2 上启动 Nginx 容器
把 mount 的共享目录辐射给容器

实现 apache 和 nginx 容器共享同一个 web 目录

docker1, nginx (nfs)
NFS
docker2, apache (nfs)

[root@nfs ~]# yum -y install nfs-utils[root@nfs ~]# vim /etc/exports/var/webroot   *(rw)[root@nfs ~]# mkdir /var/webroot[root@nfs ~]# chmod 777 /var/webroot[root@nfs ~]# systemctl restart nfs[root@docker1 ~]# yum -y install nfs-utils[root@docker1 ~]# showmount -e 192.168.8.3Export list for 192.168.8.3:/var/webroot *[root@docker1 ~]# mount -t nfs 192.168.8.3:/var/webroot/  /var/webroot/[root@docker2 ~]# yum -y install nfs-utils[root@docker2 ~]# mount -t nfs 192.168.8.3:/var/webroot/  /var/webroot/[root@docker2 ~]# vim /var/webroot/index.htmlHello World[root@docker1 ~]# ls -l /var/webroot/总用量 4-rw-r--r-- 1 nfsnobody nfsnobody 11 5月  30 04:58 index.html[root@docker1 ~]# docker run -it nginx /bin/bashroot@0f871f75a9e5:/# nginx -T[root@docker1 ~]# docker run -itd -v /var/webroot/:/usr/share/nginx/html nginx[root@docker1 ~]# docker inspect e7[root@docker1 ~]# curl -i 172.17.0.4HTTP/1.1 200 OKServer: nginx/1.11.5Date: Thu, 30 May 2019 09:03:54 GMTContent-Type: text/htmlContent-Length: 11Last-Modified: Thu, 30 May 2019 08:58:45 GMTConnection: keep-aliveETag: "5cef9b45-b"Accept-Ranges: bytesHello Word[root@docker1 ~]# docker tag myol:httpd 192.168.8.1:5000/myol:httpd[root@docker1 ~]# docker push 192.168.8.1:5000/myol:httpd[root@docker1 ~]# curl http://192.168.8.1:5000/v2/_catalog{"repositories":["myol"]}[root@docker2 ~]# docker run -itd -v /var/webroot:/var/www/html 192.168.8.1:5000/myol:httpd[root@docker2 ~]# docker inspect 443[root@docker2 ~]# curl -i 172.17.0.3HTTP/1.1 200 OKDate: Thu, 30 May 2019 09:19:14 GMTServer: Apache/2.4.6 (Red Hat Enterprise Linux)Last-Modified: Thu, 30 May 2019 08:58:45 GMTETag: "b-58a171afb77b3"Accept-Ranges: bytesContent-Length: 11Content-Type: text/html; charset=UTF-8Hello Word[root@docker2 ~]# vim /var/webroot/index.htmlHello WordHello WordHello WordHello WordHello Word[root@docker2 ~]# curl -i 172.17.0.3[root@docker1 ~]# curl -i 172.17.0.4[root@nfs ~]# halt -p		关机Docker网络[root@nfs ~]# ifconfig[root@nfs ~]# ifconfig eth0:1 192.168.8.100/24[root@nfs ~]# ifconfigeth0:1: flags=4163
mtu 1500 inet 192.168.8.100 netmask 255.255.255.0 broadcast 192.168.8.255 ether 52:54:00:d9:d2:a8 txqueuelen 1000 (Ethernet)[root@nfs ~]# ifconfig eth0:1 down[root@nfs ~]# yum -y install bridge-utils 工具包[root@nfs ~]# cd /etc/sysconfig/network-scripts/[root@nfs network-scripts]# cp ifcfg-eth0 ifcfg-docker0[root@nfs network-scripts]# vim ifcfg-docker0# Generated by dracut initrdDEVICE="docker0"ONBOOT="yes"NM_CONTROLLED="no"TYPE="Bridge"BOOTPROTO="static"IPADDR="172.17.0.1"NETMASK="255.255.255.0"[root@nfs network-scripts]# systemctl restart network[root@nfs network-scripts]# ifconfig[root@docker1 ~]# docker network listNETWORK ID NAME DRIVER SCOPE6de195071e34 bridge bridge local d312034a8b2c host host local 1a1be80eecbe none null localDocker 支持3种网络拓补模型[root@docker1 ~]# docker network

#-------------------------------------------------------------------

创建 docker1 虚拟交换机,并设置ip网络为 10.10.10.0/24

[root@docker1 ~]# docker network create --subnet=10.10.10.0/24 docker1    [root@docker1 ~]# ifconfig    [root@docker1 ~]# docker network ls    NETWORK ID          NAME                DRIVER              SCOPE    20939c97be40        docker1             bridge              local     连接 docker0 的容器    [root@docker1 ~]# docker run -it busybox    / # ifconfig    172.17.0.2    Ctrl+p+q    [root@docker1 ~]# docker run -it busybox    / # ifconfig    172.17.0.3    / # ping 172.17.0.2    Ctrl+p+q    [root@docker1 ~]# docker run -it --network=docker1 busybox    / # ifconfig    10.10.10.2    Ctrl+p+q    [root@docker1 ~]# docker run -it --network=docker1 busybox    / # ifconfig    10.10.10.3    / # ping 10.10.10.2    Ctrl+p+q    [root@docker1 ~]# docker rm $(docker stop $(docker ps -aq))    -p 宿主机端口:端口    把 docker1 变成 web 服务器    [root@docker1 ~]# docker run -itd -p 80:80 myol:httpd    浏览器中输入192.168.8.1    [root@docker1 ~]# docker ps    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES    bf85830bd647        myol:httpd          "/usr/sbin/httpd -DFO"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp, 443/tcp   boring_galileo    [root@docker1 ~]# docker exec -it b /bin/bash    [root@docker1 ~]# docker exec -it b /bin/bash    [root@bf85830bd647 html]# rm -rf index.html     浏览器中F5    [root@docker1 ~]# docker stop b    [root@docker1 ~]# docker run -itd -p 80:80 nginx    浏览器中F5

转载地址:http://zmnwi.baihongyu.com/

你可能感兴趣的文章
初探debian桌面的管理启动
查看>>
七层协议图
查看>>
华为交换机作为AC的条件
查看>>
禁用Ubuntu 15.04登录界面显示客人会话(简单-实用)
查看>>
linux X下安装的软件
查看>>
Linux监测某一时刻对外的IP连接情况
查看>>
CentOS7 最小环境安装Jumpserver 1.0版脚本
查看>>
X-Security X的安全控制
查看>>
openVAS的安装
查看>>
Centos 6.5 初始安装无网卡驱动解决方法
查看>>
linux中的网桥bridge
查看>>
linux中的teaming与bonding
查看>>
LVM
查看>>
用shell切分文件--split
查看>>
python中判断字符是否为中文
查看>>
Python - 利用zip函数将两个列表(list)组成字典(dict)
查看>>
python-全角转半角
查看>>
Python pass语句作用与用法
查看>>
Java double,float设置小数点位数
查看>>
PyCharm & Jupyter
查看>>