zoukankan      html  css  js  c++  java
  • 【docker 一】入门实践、环境部署、基本操作指令、镜像库、数据卷

    简述

    `docker是如火如荼的容器技术,今后会陆续上传关于微服务技术的学习笔记,希望能和大家一起学习一起分享!`

    docker环境搭建

    1.获取最新版的Docker安装包

    $ wget -qO- https://get.docker.com/ | sh

    2.直接使用docker无须加 sudo

    # Add the docker group if it doesn't already exist.
    $ sudo groupadd docker
    # Add the connected user "${USER}" to the docker group.
    # Change the user name to match your preferred user.
    # You may have to logout and log back in again for
    # this to take effect.
    $ sudo gpasswd -a ${USER} docker
    # Restart the docker daemon.
    $ sudo service docker restart
    #############单条指令##############
    sudo usermod -aG docker $USER # 把当前用户加入docker组

    3 . 从 17.04 以后,可以用下面的命令安装。

    $ export CHANNEL=stable
    $ curl -fsSL https://get.docker.com/ | sh -s -- --mirror Aliyun

    镜像基本操作指令

    1.搜索镜像

    $ sudo docker search ubuntu

    2.获取镜像

    $ sudo docker pull ubuntu

    3.查看镜像信息

    $ sudo docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu latest ccc7a11d65b1 3 weeks ago 120MB
    swarm latest 7ecf8baf8eae 8 weeks ago 15.8MB

    4.查看镜像的详细信息

    $ sudo docker inspect 7ecf8baf8eae
    #或
    $ sudo docker inspect ubuntu

    5.删除镜像

    $ sudo docker rmi swarm
    Error response from daemon: conflict: unable to remove repository reference "swarm" (must force) - container c445ef19d3e7 is using its referenced image 7ecf8baf8eae

    因此,删除镜像之前得确保容器已删除

    6.删除容器

    $ sudo docker rm 7ecf8baf8eae #删除指定容器
    $ sudo docker rm $(docker ps -a -q) #删除所有已生成容器

    7.复制镜像

    $ sudo docker tag ubuntu:latest hzy/test:latest
    hzy@hadoop:~$ sudo docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    hzy/test latest ccc7a11d65b1 3 weeks ago 120MB
    ubuntu latest ccc7a11d65b1 3 weeks ago 120MB
    swarm latest 7ecf8baf8eae 8 weeks ago 15.8MB

    创建镜像

    1.创建一个新镜像,进行操作

    $ docker run -it ubuntu /bin/bash --name bieming
    root@3138d574074e:/#

    2.使用 docker commit 来提交一个新的镜像

    $ sudo docker commit -m "added a new file" -a "huangzy" 3138d574074e hzy/test
    3138d574074esha256:f8b1d41ff97589f7c207577b391b1d5074b197a1ec3196a8907269ec6e00dcae
    # -a, --author="" 作者信息
    # -m, --message="" 提交消息
    # -p, --pause=ture 提交时暂停容器运行

    存出和载入镜像

    1.存出镜像

    $ sudo docker save -o ubuntu.tar ubuntu:latest

    2.载入镜像

    $ sudo docker load --input ubuntu.tar
    Loaded image: ubuntu:latest
    #或
    $ sudo docker load < ubuntu.tar

    容器

    1.创建容器

    $ sudo docker run -it ubuntu:latest /bin/bash
    root@939831baa91d:/#
    # -t 分配一个伪终端绑定到容器的标准输入上
    # -i 让容器的标准输入保持打开
    # -d 让Docker容器在后台以守护态(Daemonized)形式运行

    2.终止容器

    $ sudo docker stop 939831b

    3.查看容器状态

    $ sudo docker ps
    #或
    $ sudo docker ps -a -q # 可查看到终止状态的容器

    4.使用 docker start 命令来重新启动处于终止状态的容器

    $ sudo docker start 939831b
    #或
    $ sudo docker restart 939831b

    5.删除容器

    $ sudo docker rm 3138d574074e
    Error response from daemon: You cannot remove a running container 3138d574074e5a45a543760c2ecb3935b0173d89940c05fa3cd969d1112338ff. Stop the container before attempting removal or force remove
    #应该先停止容器服务,再进行删除。
    $ sudo docker stop 3138d574074e

    导入和导出容器

    1.导出容器(无论该容器是否处于运行状态)

    $ sudo docker export 3138d > test_for_run.tar

    2.导入容器(导出的文件可以导入,成为镜像)

    $ cat test_for_run.tar | sudo docker import - test/ubuntu:v1
    sha256:b974a00be6dd0ac5f794c3ec5ef6b1812cdc535390b67950cf220aa1e557c759

    仓库(Repository)

    仓库:是集中存放镜像的地方。

    注册服务器(Registry):是存放仓库的具体服务器。

    1.终端登录Docker Hub

    $ sudo docker login
    [sudo] password for hzy:
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: s152118130110
    Password:
    Login Succeeded

    2.将本地镜像推送到Docker Hub

    $ sudo docker push swarm:latest

    创建和使用私有仓库

    1.默认情况下,会将仓库存放于容器的 /tmp/registry 目录下,如果容器被删除,则数据也会丢失,所以我们可以通过 -v 参数来将镜像文件存放在本地的指定路径

    $ sudo docker run –d –p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
    # -i: 保持sdtin开放状态
    # -d: 使容器以守护进程方式后台运行,并打印容器id
    # -t: 分配一个tty(虚拟终端设备)
    # -v: 绑定挂载一个容器内的路径到宿主机路径
    # -p: 映射一个容器的端口到宿主机端口
    # -restart: 当容器退出时的重启策略
    # -name: 给容器命名一个名称

    打开chrome输入 http://127.0.0.1:80/v2

    2.标记

    $ sudo docker tag swarm 192.168.18.19:5000/swarm

    3.上传

    $ sudo docker push 192.168.18.19:5000/swarm
    The push refers to a repository [192.168.18.19:5000/swarm]
    Get https://192.168.18.19:5000/v2/: http: server gave HTTP response to HTTPS client
    #由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.1.100:5000”请求改为http
    #在 "etc/docker" 目录下,创建daemon.json文件,并在文件写入:
    {"insecure-registries":["ip地址:5000"]}
    #重新启动docker
    $ sudo service docker restart
    #重新上传镜像即可
    $ sudo docker push 192.168.18.19:5000/swarm
    # 查看上传是否成功
    $ curl http://192.168.18.19:5000/v2/_catalog
    {"repositories":["swarm"]}

    4.下载镜像

    $ sudo docker pull 192.168.18.19:5000/swarm

    客户机访问Registry

    1.对于需要访问Registry仓库的客户机,需要修改文件。

    # ubuntu 在以下文件添加 {"insecure-registries":["192.168.18.19:5000]}
    $ vi /etc/docker/daemon.json
    # centos 在以下文件添加 OPTIONS=‘--SELINUXENABLED--INSECUREREGISTRY192.168.18.19:5000’
    $ vi /etc/sysconfig/docker

    数据卷

    1 . 使用 -v标记可以指定挂载一个本地的目录到容器中

    $ docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
    # 地目录的路径必须是绝对路径,如果目录不存在 Docker 会自动为你创建它。

    2 . 使用 -v 标记也可以从主机挂载单个文件到容器中

    $ docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
    # 这样可以记录在容器输入过的命令

    进一步?

    待续。。。

  • 相关阅读:
    jvm gc 日志详细信息的输出(一)
    带宽与数据传输速率
    功率半导体器件
    超链接标签a样式生效,取消下划线,文字垂直(上下)居中
    防范诈骗
    去掉table中的空隙
    html中使用js实现内容过长时部分
    背景色透明度设置
    jQuery给标签写入内容
    多个div居中显示
  • 原文地址:https://www.cnblogs.com/huangzhenyou/p/8041867.html
Copyright © 2011-2022 走看看