a6266318 发表于 2019-2-21 10:47:19

1、Docker基础入门实战

  1、系统版本
  # cat /etc/redhat-release
  CentOS Linux release 7.2.1511 (Core)
  2、关闭selinux
  # sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
  # getenforce
  Enforcing
  # setenforce 0
  # getenforce
  Permissive
  #reboot
  3、修改yum源
  # mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  # yum makecache
  4、安装网络工具
  # yum -y install net-tools
  5、Docker安装相关操作
  # yum -y install docker
  # docker -v
  Docker version 1.13.1, build 94f4240/1.13.1
  # systemctl status docker
  # systemctl start docker
  # systemctl restart docker
  # systemctl stop docker
  # systemctl enable docker打开开机启动
  # systemctl disable docker关闭开机启动
  6、Docker镜像相关操作
  # docker imags                                                                                        查看镜像
  # docker search centos7                                                                        搜索镜像
  # docker pull docker.io/openshift/base-centos7                                    下载镜像
  # docker save docker.io/openshift/base-centos7 > /tmp/centos7.tar    保存镜像
  # docker rmi docker.io/openshift/base-centos7                                     删除镜像
  # docker load < /tmp/centos7.tar                                                         导入镜像
  # docker tag docker.io/openshift/base-centos7centos7                     重命名镜像
  7、交互式启动容器相关操作
  # docker run --name docker_01 -it centos7 /bin/bash                            创建容器
  # docker ps -a                                                                                          查看容器
  # docker stop docker_01                                                                         停止容器
  # docker start docker_01                                                                         启动容器
  # docker kill docker_01                                                                            杀掉容器
  # docker rm docker_01                                                                            删除容器
  8、后台启动容器相关操作
  # docker run --name docker_01 -d centos7 /bin/bash -c 'while true; do echo docker_01; sleep 10; done'      创建容器
  # docker exec -it docker_01 /bin/bash                                                                                                                进入后台启动的容器
  # docker logs docker_01                                                                                                                                     查看容器日志
  # for id in `docker ps -a | grep -v CONTAINER | awk '{print $1}'`;do docker start $id; done                               批量启动容器
  # for id in `docker ps -a | grep -v CONTAINER | awk '{print $1}'`;do docker stop $id; done                               批量停止容器
  # for id in `docker ps -a | grep -v CONTAINER | awk '{print $1}'`;do docker rm $id; done                                  批量删除容器
  # for id in `docker ps -a | grep -v CONTAINER | awk '{print $1}'`;do docker kill $id; done                                  批量杀掉容器
  9、自定义镜像commit相关操作
  # docker commit docker_01 centos7_base                                                                                                          用容器docker_01生成镜像centos7_bash
  10、自定义镜像dockerfile相关操作
  # mkdir -pv /docker/nginx
  # cd /docker/nginx
  # cat install.sh
  yum install -y wget tar gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
  cd /usr/local/src
  wget 'http://nginx.org/download/nginx-1.12.2.tar.gz'
  tar -zxvf nginx-1.12.2.tar.gz
  cd nginx-1.12.2
  ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream--with-stream_ssl_module
  make
  make install
  rm -rf /usr/local/src
  #使用daemon off配置让nginx在前台运行
  sed -i -e '/worker_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf
  exit 0
  # cat Dockerfile
  FROM centos7_base
  COPY install.sh /tmp/install.sh
  RUN sh /tmp/install.sh
  # docker build -t centos7_nginx .
  # docker run --name docker_nginx -d centos7_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'
  # docker exec -it docker_nginx /bin/bash
  bash-4.2# netstat -tuanlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address         Foreign Address         State       PID/Program name
  tcp      0      0 0.0.0.0:80
  11、Docker容器网络模式相关操作(默认为桥接模式)
  创建桥接模式容器docker_briage(此模式有独立网络)
  # docker run --name docker_bridge --net=bridge -d centos7_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'
  # docker exec -it docker_bridge /bin/bash
  bash-4.2# ifconfig
  eth0: flags=4163mtu 1500
  inet 172.17.0.2netmask 255.255.0.0broadcast 0.0.0.0
  inet6 fe80::42:acff:fe11:2prefixlen 64scopeid 0x20
  ether 02:42:ac:11:00:02txqueuelen 0(Ethernet)
  RX packets 8bytes 648 (648.0 B)
  RX errors 0dropped 0overruns 0frame 0
  TX packets 8bytes 648 (648.0 B)
  TX errors 0dropped 0 overruns 0carrier 0collisions 0
  lo: flags=73mtu 65536
  inet 127.0.0.1netmask 255.0.0.0
  inet6 ::1prefixlen 128scopeid 0x10
  looptxqueuelen 0(Local Loopback)
  RX packets 0bytes 0 (0.0 B)
  RX errors 0dropped 0overruns 0frame 0
  TX packets 0bytes 0 (0.0 B)
  TX errors 0dropped 0 overruns 0carrier 0collisions 0
  bash-4.2#
  创建主机模式容器docker_host(此模式与宿主机共享网络)
  # docker run --name docker_host --net=host -d centos7_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'
  # docker exec -it docker_host /bin/bash
  bash-4.2# ifconfig
  docker0: flags=4099mtu 1500
  inet 172.17.0.1netmask 255.255.0.0broadcast 0.0.0.0
  inet6 fe80::42:d8ff:fe1d:d64eprefixlen 64scopeid 0x20
  ether 02:42:d8:1d:d6:4etxqueuelen 0(Ethernet)
  RX packets 76675bytes 3915531 (3.7 MiB)
  RX errors 0dropped 0overruns 0frame 0
  TX packets 92619bytes 163138586 (155.5 MiB)
  TX errors 0dropped 0 overruns 0carrier 0collisions 0
  ens192: flags=4163mtu 1500
  inet 192.168.130.66netmask 255.255.255.0broadcast 192.168.130.255
  inet6 fe80::250:56ff:fe90:d195prefixlen 64scopeid 0x20
  ether 00:50:56:90:d1:95txqueuelen 1000(Ethernet)
  RX packets 510747bytes 394855762 (376.5 MiB)
  RX errors 0dropped 0overruns 0frame 0
  TX packets 306995bytes 432987349 (412.9 MiB)
  TX errors 0dropped 0 overruns 0carrier 0collisions 0
  lo: flags=73mtu 65536
  inet 127.0.0.1netmask 255.0.0.0
  inet6 ::1prefixlen 128scopeid 0x10
  looptxqueuelen 0(Local Loopback)
  RX packets 4bytes 200 (200.0 B)
  RX errors 0dropped 0overruns 0frame 0
  TX packets 4bytes 200 (200.0 B)
  TX errors 0dropped 0 overruns 0carrier 0collisions 0
  bash-4.2#
  12、Docker容器模式下端口映射
  # docker run -p 8801:80 -p 8802:80 --name docker_map -d centos7_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'
  # docker exec -it docker_map /bin/bash
  bash-4.2# netstat -tuanlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address         Foreign Address         State       PID/Program name
  tcp      0      0 0.0.0.0:80            0.0.0.0:*               LISTEN      1/nginx: master pro
  bash-4.2# exit
  exit
  # netstat -tuanlp
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address         Foreign Address         State       PID/Program name
  tcp      0      0 0.0.0.0:22            0.0.0.0:*               LISTEN      1344/sshd
  tcp      0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2253/master
  tcp      0   52 192.168.130.66:22       192.168.53.137:65516    ESTABLISHED 17791/sshd: root@pt
  tcp      0      0 192.168.130.66:22       192.168.53.137:49616    ESTABLISHED 13743/sshd: root@pt
  tcp6       0      0 :::22                   :::*                  LISTEN      1344/sshd
  tcp6       0      0 ::1:25                  :::*                  LISTEN      2253/master
  tcp6       0      0 :::8801               :::*                  LISTEN      18215/docker-proxy-
  tcp6       0      0 :::8802               :::*                  LISTEN      18204/docker-proxy-
  #
  13、Docker容器与宿主机文件共享相关操作
  # docker run --privileged=true -v /htdocs:/usr/local/nginx/html/htdocs --name docker_share -d centos7_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'



页: [1]
查看完整版本: 1、Docker基础入门实战