zoukankan      html  css  js  c++  java
  • docker 的使用

    dock安装

    curl -sSL https://get.daocloud.io/docker | sh

    docker-compose 安装

    curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    chmod +x /usr/local/bin/docker-compose

    systemctl start docker

    1.显示本机的镜像列表

    docker images

    2. 拉取docker 镜像

    从网易拉取镜像。
    docker pull hub.c.163.com/public/nginx:1.2.1
    3.查看获取到镜像
    docker images


    REPOSITORY TAG IMAGE ID CREATED SIZE
    hello-world latest 4ab4c602aa5e 3 weeks ago 1.84kB
    busybox latest e1ddd7948a1c 2 months ago 1.16MB
    hub.c.163.com/library/nginx latest 46102226f2fd 17 months ago 109MB
    hub.c.163.com/public/nginx 1.2.1 2dc68ff797db 2 years ago 171MB

    4. 在后台运行docker

    在后台运行镜像ID,-d 参数意思是在后台运行
    docker run -d 2dc68ff797db

    26dc06315762402a1d05e614061bc66272c59eb230d5030076c3eb067385c64a

    5.查看后台运行的docker 容器。
    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    26dc06315762 2dc68ff797db "/bin/sh -c '/etc/..." 8 seconds ago Up 6 seconds 22/tcp, 80/tcp, 443/tcp yo

    26dc06315762 为容器ID

    6.进到容器内部

    容器本身也是一个linux系统。

    # docker exec -it 容器ID 需要执行的命令
    docker exec -it 26dc06315762 bash

    [root@localhost ~]# docker exec -it 26dc06315762 bash
    root@26dc06315762:/# ls
    bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var

    root@26dc06315762:/# which nginx
    /usr/sbin/nginx

    查看容器内的进程。
    root@26dc06315762:/# ps -ef
    UID PID PPID C STIME TTY TIME CMD
    root 1 0 0 03:05 ? 00:00:00 /bin/sh -c /etc/init.d/nginx start && /usr/sbin/sshd -D
    root 9 1 0 03:05 ? 00:00:00 nginx: master process /usr/sbin/nginx
    root 10 1 0 03:05 ? 00:00:00 /usr/sbin/sshd -D
    www-data 11 9 0 03:05 ? 00:00:00 nginx: worker process
    www-data 12 9 0 03:05 ? 00:00:00 nginx: worker process
    www-data 13 9 0 03:05 ? 00:00:00 nginx: worker process
    www-data 14 9 0 03:05 ? 00:00:00 nginx: worker process
    root 15 0 0 03:10 pts/0 00:00:00 bash
    root 23 15 0 03:13 pts/0 00:00:00 ps -ef

    使用exit 命令退出容器。

    --停止容器
    docker stop 26dc06315762

    7.docker 端口映射

    将容器的80 端口映射到本机的 8080 端口。
    docker run -d -p 8080:80 2dc68ff797db
    8260e229cd9dfe1d821f2033b2d690adf6ae491515c250a11b9e9a1029856d5c

    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    8260e229cd9d 2dc68ff797db "/bin/sh -c '/etc/..." About a minute ago Up About a minute 22/tcp, 443/tcp, 0.0.0.0:8080->80/tcp affectionate_dubinsky

    [root@localhost ~]# netstat -na | grep 8080
    tcp6 0 0 :::8080 :::* LISTEN

    docker stop 8260e229cd9dfe1d821f2033b2d690adf6ae491515c250a11b9e9a1029856d5c

    8.将容器所有的端口映射到本地的随机端口
    [root@localhost ~]# docker run -d -P 2dc68ff797db
    79d98946edcd7a8d6a0e4fdb3a9b3556103b6a2cbdd484bbe253e53130989826
    [root@localhost ~]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    79d98946edcd 2dc68ff797db "/bin/sh -c '/etc/..." 8 seconds ago Up 7 seconds 0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp

    大写P是将容器的所有开放端口映射成本机的随机端口。 

    9.volume 操作 

    volume 这个可以帮组我们将 宿主机器的 目录挂载到容器的目录中去,这样不会应为容器重启出现文件丢失的情况。

    1.docker run -v /usr/share/nginx/www -d -p 80:80 2dc68ff797db

    使用参数-v 将容器的/usr/share/nginx/www 目录映射到宿主机的目录,具体是那个目录我们可以通过如下命令查看。

    使用 docker ps 查看运行的容器ID。

    使用 docker inspect 5d842062e63d 命令查看容器的信息

    "Mounts": [
    {
    "Type": "volume",
    "Name": "bcc82524af695a2984d14cb545fab3df800b3bb45bbd2e93f421b96cc77da34b",
    "Source": "/var/lib/docker/volumes/bcc82524af695a2984d14cb545fab3df800b3bb45bbd2e93f421b96cc77da34b/_data",
    "Destination": "/usr/share/nginx/www",
    "Driver": "local",
    "Mode": "",
    "RW": true,
    "Propagation": ""
    }
    ]

    source 表示宿主容器的目录,我们进入到此目录,修改index.html文件,重新访问容器的服务,发现index.html 被修改。

    使用命令进行卷映射.

    2. docker run -v $PWD:/usr/share/nginx/www -d -p 80:80 2dc68ff797db

    就是将宿主机的当前目录映射到 容器的/usr/share/nginx/www ,通过 docker inspect 容器ID访问。

    "Mounts": [
    {
    "Type": "bind",
    "Source": "/docker/tmp",
    "Destination": "/usr/share/nginx/www",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
    }
    ],

    在这个 docker/tmp 目录增加index.html 文件,重新访问服务发现 访问到了 index.html 文件。

     3.创建一个挂载卷容器,其他的容器使用这个卷容器进行数据共享。

    docker create -v $PWD/data:/var/mydata --name data_container ubuntu

    创建一个数据卷容器。

    docker run -it --volumes-from data_container unbuntu /bin/bash

    运行另外的容器使用 数据卷容器。

    在该容器下 执行 mount 命令,可以看到 有 /var/mydata 目录挂载了,在这个目录下增加文件,可以在宿主目录看到添加的文件。

    10.编写dockerfile 构建自己的web程序

    下载tomcat

    docker pull hub.c.163.com/library/tomcat:latest

    编写dockerfile

    Dockerfile

    from hub.c.163.com/library/tomcat

    MAINTAINER zyg 58133370@qq.com

    --拷贝程序到镜像目录

    copy jsaas.war /usr/local/tomcat/webapps

    --创建目录

    RUN mkdir /usr/local/tomcat/jms

    编译Dockerfile

    docker build -t jsaas:latest .

    查看编译后的文件

    REPOSITORY TAG IMAGE ID CREATED SIZE
    jsaas latest 330e27e1d2ba 13 minutes ago 520MB

    运行镜像

    docker run -d -p 8080:8080 jsaas

  • 相关阅读:
    美国贷款买饭的房屋保险
    ArrayList和数组间的相互转换
    JList动态添加元素
    美国交往礼仪
    刘元普双生贵子(但行好事,莫问前程)
    CountDownLatch与CyclicBarrier
    彻底理解Java的feature模式
    Java中的Future模式原理自定义实现
    浅谈Java Future接口
    Future接口和Callable接口以及FeatureTask详解
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/9739502.html
Copyright © 2011-2022 走看看