• docker简单实战


    1.为ubuntu镜像添加ssh服务

    1.1查看可用的ubuntu版本

    1)访问ubuntu镜像库地址:https://hub.docker.com/search?q=ubuntu&type=imag1e

    在这里插入图片描述2)点击第一个ubuntu的官方镜像,选择tag标签,可以选择下载对应的ubuntu镜像
    3)找到需要的版本,自行下载

    1.2 拉取Ubuntu镜像并查看

    [root@localhost harbor]# docker pull ubuntu:16.04 
    
    [root@localhost harbor]# docker image ls ubuntu:16.04
    
    • 1
    • 2
    • 3

    1.3 后台运行容器,并配置软件源

    [root@localhost harbor]# docker run -itd --name ubuntu ubuntu:16.04 
    ce3b1dec5d736a513f126729e8d7a35e3f63e2a40597d13d962bdad9e9c2fe55 
    [root@localhost harbor]# docker exec -it ubuntu bash 
    root@ce3b1dec5d73:/# whoami 
    root 
    root@ce3b1dec5d73:/# 
    root@ce3b1dec5d73:/# exit 
    exit 
    官方源下载速度比较慢,可以替换为国内163,aliyun等镜像的源。 
    root@0895ad8adf6a:/etc/apt# mv /etc/apt/sources.list /etc/apt/sources.list.bak 
    使用echo指令添加sources.list文件内容 
    root@175129961b50:/# apt-get update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    1.4安装和配置ssh服务

    1)更新软件包缓存后可以安装ssh服务,选择主流的openssh-server作为服务端

    root@0895ad8adf6a:/etc/apt# apt-get install openssh-server
     注:如果装包出现如下错误dpkg: error: corrupt info database format file '/var/lib/dpkg/info/format' 
    root@7c52e48ca823:~# echo 1 > /var/lib/dpkg/info/format
    
    • 1
    • 2
    • 3

    2)如果需要正常启动ssh服务,则目录/var/run/sshd必须存在

    root@175129961b50:/# mkdir -p /var/run/sshd
    
    • 1

    启动ssh服务,并查看监听状态

    root@7c52e48ca823:~# /usr/sbin/sshd -D & 
    root@7c52e48ca823:~# apt-get install iproute 
    root@7c52e48ca823:~# ss -lntup
    
    • 1
    • 2
    • 3

    3)配置客户端使用秘钥登录
    将客户端的公钥(可使用ssh-keygen -t rsa命令生成)复制到容器的authorized_keys文件中

    root@7c52e48ca823:~# vim /root/.ssh/authorized_keys
    
    • 1

    4)创建自动启动ssh服务的可执行文件run.sh,并添加可执行权限

    root@7c52e48ca823:~# vim /run.sh 
    #!/bin/bash 
    /usr/sbin/sshd -D 
    root@7c52e48ca823:~# chmod +x /run.sh 
    root@7c52e48ca823:~# exit
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5)使用ssh连接容器,容器ip地址为172.17.0.2

    [root@localhost ~]# ssh 172.17.0.2
    
    • 1

    6)将容器保存为一个新的sshd:ubuntu镜像并运行

    [root@localhost ~]# docker commit ubuntu sshd:ubuntu 
    [root@localhost ~]# docker run -it -p 2222:22 -d sshd:ubuntu /run.sh
    
    • 1
    • 2

    7)使用ssh连接容器

    [root@localhost ~]# ssh 192.168.168.128 -p 2222
    
    • 1

    2 使用dockerfile创建支持ssh服务的镜像

    1)创建工作目录

    [root@localhost ~]# mkdir sshd_ubuntu 
    [root@localhost ~]# cd sshd_ubuntu/
    [root@localhost sshd_ubuntu]# touch dockerfile run.sh sources.list 
    [root@localhost sshd_ubuntu]# vim run.sh 
    #!/bin/bash 
    /usr/sbin/sshd -D 
    [root@localhost sshd_ubuntu]# ssh-keygen -t rsa 
    [root@localhost sshd_ubuntu]# cat /root/.ssh/id_rsa.pub > authorized_keys 
    [root@localhost sshd_ubuntu]# vim sources.list
    deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
    
    [root@localhost sshd_ubuntu]# vim dockerfile 
    FROM ubuntu:16.04 
    MAINTAINER docker_user 
    RUN echo 1 > /var/lib/dpkg/info/format 
    ADD sources.list /etc/apt/sources.list 
    RUN apt-get update 
    RUN apt-get install -y openssh-server 
    RUN mkdir -p /var/run/sshd 
    RUN mkdir -p /root/.ssh 
    ADD authorized_keys /root/.ssh/authorized_keys 
    ADD run.sh /run.sh 
    RUN chmod 755 /run.sh 
    EXPOSE 22 
    CMD ["/run.sh"] 
    精简dockerfile: 
    FROM ubuntu:16.04 
    MAINTAINER docker_user 
    ADD sources.list /etc/apt/sources.list 
    ADD run.sh /run.sh 
    RUN echo 1 > /var/lib/dpkg/info/format && apt-get update && apt-get install -y openssh-server && mkdir -p /var/run/sshd /root/.ssh && chmod 755 /run.sh ADD authorized_keys /root/.ssh/authorized_keys EXPOSE 22 
    CMD ["/run.sh"]
    
    [root@localhost sshd_ubuntu]# docker build -t sshd:dockerfile .
    
    [root@localhost sshd_ubuntu]# docker ps
    [root@localhost sshd_ubuntu]# docker run -d -p 2223:22 sshd:dockerfile 
    [root@localhost sshd_ubuntu]# ssh 192.168.168.128 -p 2223
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    3 docker安装nginx

    3.1 查看可用的nginx版本

    访问nginx镜像库地址:https://hub.docker.com/_/nginx?tab=tags
    点击第一个nginx的官方镜像,选择tag标签,可以选择下载对应的镜像:

    在这里插入图片描述
    也可以使用如下指令查看可用版本:

    [root@localhost ~]# docker search nginx
    
    • 1

    3.2 拉取nginx镜像并查看

    [root@localhost harbor]# docker pull nginx
    
    [root@localhost harbor]# docker image ls nginx
    
    • 1
    • 2
    • 3

    3.3 后台运行容器

    [root@localhost html]#docker run -d --name nginx -p 80:80 -v /html:/usr/share/nginx/html:ro nginx
    
    • 1

    通过浏览器访问宿主机的8080端口可看到nginx的欢迎界面信息

    [root@localhost html]# echo hello > /html/index.html 
    [root@localhost html]# curl localhost:80 
    hello
    
    • 1
    • 2
    • 3

    4 docker安装mysql

    4.1 查看可用的版本

    访问mysql镜像库地址:https://hub.docker.com/_/mysql?tab=tags
    点击第一个官方镜像,选择tag标签,可以选择下载对应的镜像:
    在这里插入图片描述

    4.2 拉取镜像并查看

    [root@localhost harbor]# docker pull mysql:latest 
    [root@localhost harbor]# docker image ls mysql
    
    • 1
    • 2

    4.3后台运行容器,并使用exec进入容器

    [root@localhost harbor]# docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql
    
    [root@localhost harbor]# docker ps
    
    [root@localhost harbor]# docker exec -it mysql bash 
    root@908813503e41:/# mysql -uroot -p1234
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5 docker安装tomcat

    5.1 查看可用的版本

    访问tomcat镜像库地址:https://hub.docker.com/search?q=tomcat&type=image

    5.2 拉取镜像并查看

    [root@localhost harbor]# docker pull tomcat 
    [root@localhost harbor]# docker image ls tomcat
    [root@localhost harbor]# mkdir /usr/local/tomcat 
    [root@localhost harbor]# ll /usr/local/tomcat/ 
    total 0 
    [root@localhost harbor]# docker run -itd --name tomcat -v /usr/local/tomcat:/usr/local/tomcat/webapps -p 8000:8080 tomcat
    [root@localhost harbor]# docker exec -it tomcat bash root@2e2e0f7b2b9e:/usr/local/tomcat# ls -l /usr/local/tomcat/webapps total 0 
    root@2e2e0f7b2b9e:/usr/local/tomcat# cp -r webapps.dist/* webapps 
    root@2e2e0f7b2b9e:/usr/local/tomcat# exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    6 docker安装php

    6.1 查看可用的版本

    访问php镜像库地址:https://hub.docker.com/_/php?tab=tags

    6.2 拉取镜像并查看

    [root@localhost harbor]# docker pull php:5.6-fpm 
    [root@localhost harbor]# docker image ls php
    
    • 1
    • 2

    6.3 后台运行容器,并使用exec进入容器

    [root@localhost harbor]# mkdir /nginx/www -p 
    [root@localhost harbor]# docker run --name php-fpm -v /nginx/www/:/www -d php:5.6-fpm
    
    [root@localhost harbor]# mkdir /nginx/conf/conf.d -p 
    [root@localhost harbor]# cat /nginx/conf/conf.d/php.conf
    server {
    	listen 80;
    	server_name localhost; 
    	location / { 
    		root /usr/share/nginx/html; 
    		index index.html index.htm index.php;
    		 }
    		 error_page 500 502 503 504 /50x.html; 
    		 location = /50x.html { 
    		 	root /usr/share/nginx/html;
    		 	 }
    		 	 location ~ \.php$ { 
    		 	 fastcgi_pass php:9000;
    		 	  fastcgi_index index.php; 
    		 	  fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; 
    		 	  } 
    		 	  }
    [root@localhost harbor]# docker run --name nginx -p 8083:80 -d -v /nginx/conf/conf.d/:/etc/nginx/conf.d:ro -v /nginx/www/:/usr/share/nginx/html:ro --link php-fpm:php nginx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    –link myphp-fpm:php: 把 php-fpm 的网络并入 nginx,通过修改nginx容器的 /etc/hosts,让 nginx 通过 php:9000 访问 php-fpm。
    -v /nginx/www/:/usr/share/nginx/html:ro:如果不指定nginx首页的文件,则会访问nginx的默认 html文件,访问php则需要使用http://192.168.168.139:8083/index.php此种方式

    [root@localhost www]# echo hello > /nginx/www/index.html 
    [root@localhost www]# curl 192.168.168.128:8083 hello
    
    • 1
    • 2
  • 相关阅读:
    阿里云linux升级新版本npm、nodejs
    【uniapp】uni-datetime-picker插件支持限制选择当前或者以后时间、禁用日期区域
    杭州高职画室哪家好?如何选择高职画室?高职美术学习选哪家画室?
    3分钟:腾讯云免费SSL证书申请教程_免费HTTPS证书50张
    用Python开发QQ机器人详解
    JSD-2204-关于Spring Security和BCrypt-Day11
    全球低轨卫星物联网的发展现状
    JS中的事件对象及属性
    WIFI6 2.4G模组 WB800DC移植和替换RTL8723过程记录
    TiFlash 函数下推必知必会丨十分钟成为 TiFlash Contributor
  • 原文地址:https://blog.csdn.net/anran_06/article/details/126866373