Docker容器技术2

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

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

[root@docker1 ~]# vim /etc/hosts
192.168.8.1     docker1
192.168.8.2     docker2
[root@docker2 ~]# vim /etc/hosts
192.168.8.1     docker1
192.168.8.2     docker2


[root@docker1 ~]# yum search docker
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
=========================== N/S matched: docker ===========================
docker-engine.x86_64 : The open-source application container engine
docker-engine-selinux.noarch : SELinux Policies for the open-source
                             : application container engine

  名称和简介匹配 only,使用“search all”试试。


[root@docker2 ~]# yum search docker
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
=========================== N/S matched: docker ===========================
docker-engine.x86_64 : The open-source application container engine
docker-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<UP,BROADCAST,MULTICAST>  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<UP,BROADCAST,MULTICAST>  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 version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        
 OS/Arch:      linux/amd64

Server:
 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             SIZE
busybox             latest              64f5d945efcc        2 weeks ago         1.199 MB

帮助

[root@docker1 ~]# docker help push

Usage:	docker push [OPTIONS] NAME[:TAG]

Push an image or a repository to a registry

Options:
      --disable-content-trust   Skip image verification (default true)
      --help                    Print usage
[root@docker1 ~]# docker help pull

Usage:	docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Pull an image or a repository from a registry

Options:
  -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] TERM

Search the Docker Hub for images

Options:
  -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.json
drwxr-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 ~]# ls
busybox.tar
[root@docker2 ~]# docker load < busybox.tar	恢复
d1156b98822d: Loading layer 1.416 MB/1.416 MB
Loaded image: busybox:latest
[root@docker2 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             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]# ls
CentOS-Base.repo       CentOS-Media.repo    CentOS-fasttrack.repo
CentOS-CR.repo         CentOS-Sources.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo
[root@db0d56cc0e37 yum.repos.d]# rm -f *
[root@db0d56cc0e37 yum.repos.d]# vi centos.repo
[dvd]
name=dvd
baseurl="ftp://192.168.8.254/rhel7"
enabled=1
gpgcheck=0
[root@db0d56cc0e37 yum.repos.d]# yum provides ifconfig
Loaded plugins: fastestmirror, ovl
dvd                                                 | 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 mirrors
dvd/filelists_db                                    | 3.4 MB     00:00     
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo        : dvd
Matched from:
Filename    : /sbin/ifconfig

[root@db0d56cc0e37 yum.repos.d]# yum -y install net-tools
[root@db0d56cc0e37 ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  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<link>
        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 ~]# pstree
bash---pstree
[root@docker1 ~]# sleep 1111111111111
[root@666 ~]# ps -ef | grep sleep
root     15604   978  0 19:09 ?        00:00:00 sleep 60
root     15666 15619  0 19:10 pts/5    00:00:00 grep --color=auto sleep

[root@docker1 ~]# ps -ef | grep sleep
root     11087 11068  0 07:12 pts/2    00:00:00 grep --color=auto sleep

[root@db0d56cc0e37 ~]# sleep 11111111111
[root@docker1 ~]# ps -ef | grep sleep
root     11089 11005  0 07:12 pts/1    00:00:00 sleep 11111111111
root     11091 11068  0 07:12 pts/2    00:00:00 grep --color=auto sleep

[root@docker1 ~]# kill 11089
[root@db0d56cc0e37 ~]# sleep 11111111111
Terminated

[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/bash
docker: 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		它启动的是sh
PID	USER	TIME	COMMAND
1	root	0:00	sh
10	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 daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]	执行的命令
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]	运行级别
WantedBy=multi-user.target
[root@docker1 ~]# systemctl restart sshd

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

[root@docker1 ~]# docker ps

查看镜像制作历史

[root@docker1 ~]# docker history busybox:latest
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
64f5d945efcc        2 weeks ago         /bin/sh -c #(nop)  CMD ["sh"]                   0 B                 
<missing>           2 weeks ago         /bin/sh -c #(nop) ADD file:e36dd1822f36a81696   1.199 MB 

[root@docker1 ~]# docker history centos:latest 
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
e934aafc2206        13 months ago       /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
<missing>           13 months ago       /bin/sh -c #(nop)  LABEL org.label-schema.sch   0 B                 
<missing>           13 months ago       /bin/sh -c #(nop) ADD file:f755805244a649ecca   198.6 MB

[root@docker1 ~]# docker history nginx:latest 
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
a5311a310510        2 years ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon    0 B                 
<missing>           2 years ago         /bin/sh -c #(nop)  EXPOSE 443/tcp 80/tcp        0 B                 
<missing>           2 years ago         /bin/sh -c ln -sf /dev/stdout /var/log/nginx/   0 B                 
<missing>           2 years ago         /bin/sh -c apt-key adv --keyserver hkp://pgp.   58.43 MB            
<missing>           2 years ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.11.5-1   0 B                 
<missing>           2 years ago         /bin/sh -c #(nop)  MAINTAINER NGINX Docker Ma   0 B                 
<missing>           2 years ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
<missing>           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             SIZE
abc                 oxox                64f5d945efcc        2 weeks ago         1.199 MB
busybox             latest              64f5d945efcc        2 weeks ago         1.199 MB

[root@docker1 ~]# docker tag 64f5d945efcc abc:xxcc
[root@docker1 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
abc                 oxox                64f5d945efcc        2 weeks ago         1.199 MB
abc                 xxcc                64f5d945efcc        2 weeks ago         1.199 MB
busybox             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 ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
dc941d75b5b8        nginx:latest        "nginx -g 'daemon off"   32 seconds ago      Up 29 seconds       80/tcp, 443/tcp     compassionate_meitner

关闭容器

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

启动容器

[root@docker1 ~]# docker start dc941d75b5b8
dc941d75b5b8
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
dc941d75b5b8        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 -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:05 ?        00:00:00 /bin/bash
root        13     1  0 14:05 ?        00:00:00 sleep 12357689
root        14     1  0 14:06 ?        00:00:00 ps -ef
[root@docker1 ~]# ps -ef | grep sleep
root     11092     1  0 07:15 ?        00:00:00 sleep 1111111111111
root     13530 13504  0 10:05 pts/8    00:00:00 sleep 12357689
root     13534   800  0 10:06 pts/0    00:00:00 grep --color=auto sleep

[root@docker1 ~]# docker ps
[root@docker1 ~]# docker top 62e590fb0ec5
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                13504               13491               0                   10:05               pts/8               00:00:00            /bin/bash
root                13530               13504               0                   10:05               pts/8               00:00:00            sleep 12357689
[root@docker1 ~]# kill 13530
[root@docker1 ~]# docker top 62e590fb0ec5
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                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 centos
082263d69d41716950e4b3f8ecdd6b383f697bfdeddfbd13eafb114dca145d49
[root@docker1 ~]# docker run -itd nginx
07bfa5e9cc88ee207e8f7c04fc61a548f7bb953b14fa1e664a6258646ff2891d
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
07bfa5e9cc88        nginx               "nginx -g 'daemon off"   50 seconds ago      Up 46 seconds       80/tcp, 443/tcp     determined_banach
082263d69d41        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 -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:29 ?        00:00:00 /bin/bash
root        13     1  0 14:29 ?        00:00:00 ps -ef
[root@da8a93d4d30f /]# echo $$
1
Ctrl+p+q
[root@da8a93d4d30f /]# [root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
da8a93d4d30f        centos              "/bin/bash"         About a minute ago   Up About a minute                       sharp_payne

[root@docker1 ~]# docker run -itd nginx
2257832a98a25443c1258db2406f8663e719431017ea124d45eee15baf6eea69
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2257832a98a2        nginx               "nginx -g 'daemon off"   23 seconds ago      Up 20 seconds       80/tcp, 443/tcp     tiny_bell
da8a93d4d30f        centos              "/bin/bash"              4 minutes ago       Up 4 minutes                            sharp_payne
[root@docker1 ~]# docker exec -it 2257832a98a2 /bin/bash
root@2257832a98a2:/# echo $$
6
root@2257832a98a2:/# exit
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
2257832a98a2        nginx               "nginx -g 'daemon off"   About a minute ago   Up About a minute   80/tcp, 443/tcp     tiny_bell
da8a93d4d30f        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 2257832a98a2
172.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=docker
baseurl=ftp://192.168.8.254/docker
enabled=1
gpgcheck=0

[dvd]
name=dvd
baseurl=ftp://192.168.8.254/rhel7
enabled=1
gpgcheck=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=dvd
baseurl=ftp://192.168.8.254/rhel7
enabled=1
gpgcheck=0
[root@014251dd73ae /]# yum -y install httpd vim
[root@014251dd73ae /]# yum -y install net-tools psmisc tree
[root@014251dd73ae /]# pstree -p
bash(1)---pstree(56)
[root@014251dd73ae /]# vim /var/www/html/index.html
Hello wokd
[root@014251dd73ae /]# ifconfig
[root@014251dd73ae /]# /usr/sbin/httpd $OPTIONS -DFOREGROUND
AH00558: 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 message
Ctrl+p+q


[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
014251dd73ae        centos              "/bin/bash"         10 minutes ago      Up 10 minutes                           big_mcnulty
[root@docker1 ~]# docker top 014251dd73ae
[root@docker1 ~]# curl 172.17.0.2
Hello wokd

[root@docker1 ~]# docker run -itd nginx
3c17e4cffe6dc7375dbcd49e57e52c3929bff867c441fb32d2bdcec0bee0af1b
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3c17e4cffe6d        nginx               "nginx -g 'daemon off"   24 seconds ago      Up 21 seconds       80/tcp, 443/tcp     sick_jepsen
014251dd73ae        centos              "/bin/bash"              15 minutes ago      Up 15 minutes                           big_mcnulty

root@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 httpd
root@3c17e4cffe6d:/# dpkg -l | grep nginx

[root@014251dd73ae /]# rpm -ql httpd
root@3c17e4cffe6d:/# dpkg -L nginx

[root@014251dd73ae /]# rpm -qf /bin/ls
root@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=dvd
baseurl=ftp://192.168.8.254/rhel7
enabled=1
gpgcheck=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=dvd
baseurl=ftp://192.168.8.254/rhel7
enabled=1
gpgcheck=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:latest
sha256:0db44311a73859aeb1dcd5120f75525dec93b96ddb9b85910811aee3f2d6d012
[root@docker1 ~]# docker ps -a
[root@docker1 ~]# docker rm e62b34b4ab22
[root@docker1 ~]# docker ps -a
[root@docker1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myol                latest              b38331d66e87        5 minutes ago       307.2 MB
[root@docker1 ~]# docker history myol
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
b38331d66e87        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=dvd
baseurl=ftp://192.168.8.254/rhel7
enabled=1
gpgcheck=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 Dockerfile
FROM centos:latest
RUN 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:latest
CMD ["/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 linux2
Type "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_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.

[root@3e0b42f78664 /]# sshd-keygen		报错
/usr/sbin/sshd-keygen: line 10: /etc/rc.d/init.d/functions: No such file or directory
Generating SSH2 RSA host key: /usr/sbin/sshd-keygen: line 63: success: command not found

Generating SSH2 ECDSA host key: /usr/sbin/sshd-keygen: line 105: success: command not found

Generating SSH2 ED25519 host key: /usr/sbin/sshd-keygen: line 126: success: command not found

[root@3e0b42f78664 /]# yum provides /etc/rc.d/init.d/functions
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
initscripts-9.49.39-1.el7.x86_64 : The inittab file and the /etc/init.d scripts
Repo        : dvd
Matched 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 root
Changing password for user root.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@3e0b42f78664 /]# /usr/sbin/sshd -D $OPTIONS
Ctrl+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 Dockerfile
FROM myol:latest
RUN yum -y install openssh-server initscripts
RUN sshd-keygen
RUN echo "1" | passwd --stdin root
ENV EnvironmentFile=/etc/sysconfig/sshd
EXPOSE 22
CMD ["/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.html
Hello 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.html
Hello World
[root@docker1 Docker2]# touch Dockerfile
[root@docker1 Docker2]# vim Dockerfile
FROM myol:latest
RUN yum -y install httpd
WORKDIR /var/www/html
ADD index.html index.html
ENV EnvironmentFile=/etc/sysconfig/httpd
EXPOSE 80
EXPOSE 443
CMD ["/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.3
Hello 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}}" 7cc195d45d86
5648

镜像仓库 – 服务器

创建配置文件 /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/ myol
bash-4.2# touch a s c
bash-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.3
Export 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.html
Hello 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/bash
root@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.4
HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Thu, 30 May 2019 09:03:54 GMT
Content-Type: text/html
Content-Length: 11
Last-Modified: Thu, 30 May 2019 08:58:45 GMT
Connection: keep-alive
ETag: "5cef9b45-b"
Accept-Ranges: bytes
Hello 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.3
HTTP/1.1 200 OK
Date: Thu, 30 May 2019 09:19:14 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux)
Last-Modified: Thu, 30 May 2019 08:58:45 GMT
ETag: "b-58a171afb77b3"
Accept-Ranges: bytes
Content-Length: 11
Content-Type: text/html; charset=UTF-8
Hello Word
[root@docker2 ~]# vim /var/webroot/index.html
Hello Word
Hello Word
Hello Word
Hello Word
Hello 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 ~]# ifconfig
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  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 initrd
DEVICE="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 list
NETWORK ID          NAME                DRIVER              SCOPE
6de195071e34        bridge              bridge              local               
d312034a8b2c        host                host                local               
1a1be80eecbe        none                null                local
Docker 支持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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值