#将主机的80端口映射至容器的80端口 [root@node1 ~]# docker run -it --rm -p 80:80 --net bridge --name web busybox:latest /bin/sh [root@node1 ~]# docker port web 80/tcp -> 0.0.0.0:80
#发布所有端口,指明要公开的端口为80,8080,443 [root@node1 ~]# docker run -it --rm -P --expose 80 --expose 8080 --expose 443 --net bridge --name web busybox:latest /bin/sh [root@node1 ~]# docker port web 80/tcp -> 0.0.0.0:32771 8080/tcp -> 0.0.0.0:32769 443/tcp -> 0.0.0.0:32770 [root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7cf269b12b50 busybox:latest "/bin/sh" About a minute ago Up About a minute 0.0.0.0:32771->80/tcp, 0.0.0.0:32770->443/tcp, 0.0.0.0:32769->8080/tcp web
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
#跟已存在的web容器监听的端口一样 / # httpd / # netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 :::80 :::* LISTEN [root@node1 ~]# docker run --rm --name joided_web --net container:web busybox:latest netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 :::80 :::* LISTEN
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:6951 errors:0 dropped:0 overruns:0 frame:0 TX packets:6951 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:21397144 (20.4 MiB) TX bytes:21397144 (20.4 MiB) [root@node1 ~]# docker run -it --rm --net host --name web centos:latest /bin/bash [root@node1 /]# yum -y install iproute [root@node1 /]# ip addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff inet 192.168.1.131/24 brd 192.168.1.255 scope global eno16777736 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe50:27c4/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 02:42:f5:88:c0:2f brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:f5ff:fe88:c02f/64 scope link valid_lft forever preferred_lft forever [root@node1 /]# yum -y install httpd
[root@node1 ~]# docker run --name web --net bridge busybox:latest httpd [root@node1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9f9591b73bb2 busybox:latest "httpd" About a minute ago Exited (0) About a minute ago web [root@node1 ~]# docker rm web web [root@node1 ~]# docker run --name web --net bridge busybox:latest httpd -f [root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca8b05d52a28 busybox:latest "httpd -f" 47 seconds ago Up 45 seconds web [root@node1 ~]# docker kill web web [root@node1 ~]# docker rm web web
#让docker容器在后台运行 [root@node1 ~]# docker run -d --name web --net bridge -p 80:80 busybox:latest httpd -f c9455d2691b7b72689893119d257937c74242c325b4c3d4f2bdb099cbee6700f [root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9455d2691b7 busybox:latest "httpd -f" 50 seconds ago Up 48 seconds 0.0.0.0:80->80/tcp web
inspect命令: #查看IP地址 [root@node1 ~]# docker inspect -f ``.`NetworkSettings`.`IPAddress` web 172.17.0.2 #查看进程号 [root@node1 ~]# docker inspect -f ``.`State`.`Pid` web 62887
[root@node1 ~]# docker top web UID PID PPID C STIME TTY TIME CMD root 62887 18715 0 21:27 ? 00:00:00 httpd -f
02dockerfile详解
[root@node1 ~]# vim test.dockerfile # Mage Edu FROM busybox:latest MAINTAINER MageEdu <mage@magedu.com> COPY index.html /web/html/index.html
EXPOSE 80/tcp
CMD ["httpd", "-f", "-h", "/web/html"]
[root@node1 ~]# vim index.html <h1>From Docker Container(Dockerfile)</h1> [root@node1 ~]# mkdir docker [root@node1 ~]# mv index.html docker/ [root@node1 ~]# mv test.dockerfile docker/ [root@node1 ~]# docker build -f docker/test.dockerfile docker/ Sending build context to Docker daemon 3.072 kB Step 1 : FROM busybox:latest ---> 7968321274dc Step 2 : MAINTAINER MageEdu <mage@magedu.com> ---> Running in f3d1afc8cab3 ---> ad76be7eb604 Removing intermediate container f3d1afc8cab3 Step 3 : COPY index.html /web/html/index.html ---> 8b38e8071ddd Removing intermediate container b788fa3a1c94 Step 4 : CMD httpd -f -h /web/html ---> Running in a2b6a483f15b ---> 2cde4a22e191 Removing intermediate container a2b6a483f15b Successfully built 2cde4a22e191 [root@node1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 2cde4a22e191 4 minutes ago 1.11 MB centos newuser 4b761c9a987a 6 days ago 192.1 MB 192.168.1.132:5000/busybox 1.2.1 7968321274dc 2 weeks ago 1.11 MB docker.io/busybox latest 7968321274dc 2 weeks ago 1.11 MB docker.io/centos latest 67591570dd29 6 weeks ago 191.8 MB
[root@node1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox webserver 2cde4a22e191 7 minutes ago 1.11 MB centos newuser 4b761c9a987a 6 days ago 192.1 MB 192.168.1.132:5000/busybox 1.2.1 7968321274dc 2 weeks ago 1.11 MB docker.io/busybox latest 7968321274dc 2 weeks ago 1.11 MB docker.io/centos latest 67591570dd29 6 weeks ago 191.8 MB
[root@node1 ~]# docker build -f docker/test.dockerfile -t busybox:web2 docker/ Sending build context to Docker daemon 3.072 kB Step 1 : FROM busybox:latest ---> 7968321274dc Step 2 : MAINTAINER MageEdu <mage@magedu.com> ---> Using cache ---> ad76be7eb604 Step 3 : COPY index.html /web/html/index.html ---> Using cache ---> 8b38e8071ddd Step 4 : EXPOSE 80/tcp ---> Running in caad20a45dd8 ---> 95351c4c60d3 Removing intermediate container caad20a45dd8 Step 5 : CMD httpd -f -h /web/html ---> Running in 3b6066935b57 ---> ec5bd0d26b61 Removing intermediate container 3b6066935b57 Successfully built ec5bd0d26b61 [root@node1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox web2 ec5bd0d26b61 7 seconds ago 1.11 MB busybox webserver 2cde4a22e191 10 minutes ago 1.11 MB centos newuser 4b761c9a987a 6 days ago 192.1 MB 192.168.1.132:5000/busybox 1.2.1 7968321274dc 2 weeks ago 1.11 MB docker.io/busybox latest 7968321274dc 2 weeks ago 1.11 MB docker.io/centos latest 67591570dd29 6 weeks ago 191.8 MB
[root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9455d2691b7 busybox:latest "httpd -f" 2 days ago Up 2 days 0.0.0.0:80->80/tcp web [root@node1 ~]# docker kill web web [root@node1 ~]# docker rm web web
[root@node1 ~]# docker run -d busybox:web2 d57228046a3d1261a80de72f528a5b01a322961bfd8be867da13f276c95f3a3a
[root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d57228046a3d busybox:web2 "httpd -f -h /web/htm" About a minute ago Up About a minute 80/tcp focused_goodall
[root@node1 docker-httpd]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd 2.4 8fe09a670fb9 3 minutes ago 266.7 MB busybox web2 ec5bd0d26b61 About an hour ago 1.11 MB busybox webserver 2cde4a22e191 About an hour ago 1.11 MB centos newuser 4b761c9a987a 6 days ago 192.1 MB 192.168.1.132:5000/busybox 1.2.1 7968321274dc 2 weeks ago 1.11 MB docker.io/busybox latest 7968321274dc 2 weeks ago 1.11 MB
[root@node1 docker-httpd]# docker run --rm --name httpd -P httpd:2.4 [root@node1 ~]# docker port httpd 80/tcp -> 0.0.0.0:32774 [root@node1 ~]# docker kill httpd [root@node1 docker-httpd]# docker run -d --name httpd -p 80:80 httpd:2.4 [root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2e0a3ba92f18 httpd:2.4 "/usr/sbin/httpd -f /" 40 seconds ago Up 38 seconds 0.0.0.0:80->80/tcp httpd 2e0a3ba92f18674b848924eaa40ab66cbd1a66669847526e366f2af4dda0872d
[root@node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2e0a3ba92f18 httpd:2.4 "/usr/sbin/httpd -f /" 7 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp httpd [root@node1 ~]# docker stop httpd httpd
[root@node1 ~]# docker rm httpd httpd
[root@node1 docker-httpd]# vim httpd.df FROM centos:latest MAINTAINER MageEdu "<mage@magedu.com>"
RUN yum -y install httpd php php-mysql php-mbstring && \ yum clean all && \ echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php
VOLUME /var/www/html EXPOSE 80/tcp
CMD ["/usr/sbin/httpd","-f","/etc/httpd/conf/httpd.conf","-DFOREGROUND"] [root@node1 docker-httpd]# docker build -f httpd.df -t httpd:0.1 ./ Sending build context to Docker daemon 2.048 kB Step 1 : FROM centos:latest ---> 67591570dd29 Step 2 : MAINTAINER MageEdu "<mage@magedu.com>" ---> Using cache ---> f6eacba2a721 Step 3 : RUN yum -y install httpd php php-mysql php-mbstring && yum clean all && echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php ---> Using cache ---> f1a8a2a4ee60 Step 4 : VOLUME /var/www/html ---> Running in 58ab7b732b00 ---> a1dfec50fa16 Removing intermediate container 58ab7b732b00 Step 5 : EXPOSE 80/tcp ---> Running in 58d20c2ee361 ---> 0142accd29d8 Removing intermediate container 58d20c2ee361 Step 6 : CMD /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DFOREGROUND ---> Running in 6772c7d6154f ---> 97b1901c5b98 Removing intermediate container 6772c7d6154f Successfully built 97b1901c5b98 [root@node1 ~]# docker run -it --rm --name httpd -p 80:80 httpd:0.1 /bin/bash [root@883df61186bc /]# ls /var/www/html/ info.php [root@node1 docker-httpd]# ls /var/lib/docker/volumes/ 1adb8a2119488a4b9517e6890a4f89759bc0ad6fc9933227c445ea899d5327e1 bf2b562a3277475a3695468352f2f944c75ca7ee2433be6d27294f3e1e332757 [root@node1 docker-httpd]# ls /var/lib/docker/volumes/1adb8a2119488a4b9517e6890a4f89759bc0ad6fc9933227c445ea899d5327e1/_data/ info.php [root@node1 docker-httpd]# cat /var/lib/docker/volumes/1adb8a2119488a4b9517e6890a4f89759bc0ad6fc9933227c445ea899d5327e1/_data/info.php <?php phpinfo(); ?> [root@node1 docker-httpd]# docker stop httpd httpd [root@node1 ~]# mkdir -p /web/html [root@node1 ~]# unzip phpMyAdmin-4.0.5-all-languages.zip [root@node1 ~]# mv phpMyAdmin-4.0.5-all-languages /web/html/pma [root@node1 ~]# docker run -it --rm --name httpd -p 80:80 -v /web/html/:/var/www/html httpd:0.1 /bin/bash [root@e5ed9ebdb22e /]# ls /var/www/html/ pma [root@node1 ~]# yum -y install mariadb-server [root@node1 ~]# vim /etc/my.cnf 添加 skip_name_resolve = on innodb_file_per_table = on [root@node1 ~]# systemctl start mariadb.service [root@node1 ~]# docker run -it --rm --name httpd -p 80:80 -v /web/html/:/var/www/html httpd:0.1 /bin/bash [root@6ff679ab00a9 /]# yum install iproute -y [root@6ff679ab00a9 /]# ip addr list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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 80: eth0@if81: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 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 [root@6ff679ab00a9 /]# exit MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'172.%.%.%' IDENTIFIED BY 'mageedu'; MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'172.168.1.%' IDENTIFIED BY 'mageedu'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> \q [root@node1 ~]# docker run -it --rm --name httpd -p 80:80 -v /web/html/:/var/www/html httpd:0.1 http://192.168.1.131/pma/index.php [root@node1 docker-httpd]# openssl rand -base64 20 8kl6zMcqb40pPlBmE0VrjezrVlM=