• docker的安装以及常用命令详解


    一、docker简介

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    二、docker安装

    访问官网https://www.docker.com/get-started,选择相应的操作系统进行安装即可

    对于macOS 我们可以使用 Homebrew 来安装 Docker。

    Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

    复制代码
    $ brew install --cask --appdir=/Applications docker
    

    > Creating Caskroom at /usr/local/Caskroom
    > We'll set permissions properly so we won't need sudo in the future
    Password: # 输入 macOS 密码
    > Satisfying dependencies
    > Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
    ######################################################################## 100.0%
    > Verifying checksum for Cask docker
    > Installing Cask docker
    ==> Moving App 'Docker.app' to '/Applications/Docker.app'.
    🍺 docker was successfully installed!

    复制代码

    在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标()。

    三、常用命令

    • Docker环境信息 — docker [info|version]
    • 容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
    • 容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]
    • 容器rootfs命令 — docker [commit|cp|diff]
    • 镜像仓库 — docker [login|pull|push|search]
    • 本地镜像管理 — docker [build|images|rmi|tag|save|import|load]
    • 容器资源管理 — docker [volume|network]
    • 系统日志信息 — docker [events|history|logs]

    1、显示 Docker 版本信息

    docker version  

    2、显示 Docker 系统信息,包括镜像和容器数

    docker info 

    3、帮助

    docker --help

    四、镜像管理

    1、列出镜像   

    docker images

    2、获取一个新的镜像

    docker pull nginx:1.18.0

    3、查找镜像

    我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

    我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

    docker search httpd

    4、删除镜像

    docker image rm 镜像名标签或者ID
    docker rmi 镜像名标签或者ID
    docker rmi -f 镜像名标签或者ID     #强制删除

    5、镜像导入与导出

    方法一:
    docker save image:tag > xxx.tar                   # save导出.tar
    docker load < xxx.tar                             # load导入镜像
    方法二:
    docker export image > xxx.tar                     # export导出成.tar
    cat xxx.tar | sudo docker import - image:tag      # import导入镜像

    注:两种方法不可混用

    五、容器生命周期

    1、运行容器

    docker run -it nginx:latest sh
    # -d: 后台运行容器    -i:以交互模式运行容器    -t:为容器重新分配一个伪输入终端   -it常一起使用
    # -p: 指定端口映射,格式为:主机(宿主)端口:容器端口    --name="nginx-lb":为容器指定一个名称
    # -v: 挂载目录    -e username="ritchie":设置环境变量    -env-file=[]:从指定文件读入环境变量  

    2、启动被停止的容器

    docker start 容器名或ID

    3、停止运行中的容器

    docker stop 容器名或ID

    4、重启容器

    docker restart 容器名或ID

    5、杀掉运行中的容器

    docker kill -s KILL 容器名或者ID

    6、删除容器

    docker rm 容器名或ID

    7、暂停容器中所有进程

    暂停数据库容器db01提供服务:   docker pause db01

    8、启动容器中所有进程

    恢复数据库容器db01提供服务:   docker unpause db01

    9、运行的容器中执行命令

    docker exec -it 容器名或ID sh
    # -d:分离模式,在后台运行     -i:即使没有附加也保持打开     -t:分配一个伪终端

    10、删除所有停止状态的容器

    docker rm `docker ps -a|grep Exited|awk '{print $1}'`

    六、容器操作

    1、列出容器

    docker ps   # 参数 -a:显示所有的容器    -f:根据条件过滤显示    -l:显示最近创建的容器  
                # 参数  -q:静默模式,只显示容器编号     -s:显示总的文件大小。

    2、获取容器/镜像的元数据

    docker inspect 容器名或ID | grep IPAddress   显示容器的IP

    3、获取容器的日志

    docker logs  # 参数: -f:跟踪日志输出  --since:显示某个开始时间的所有日志  -t:显示时间戳  --tail:仅列出最新N条容器日志

    4、查看容器的端口映射情况

    docker port 容器名或ID

    5、容器改名

    docker rename  旧容器名  新容器名

    七、rootfs命令

    1、容器中创建一个新的镜像

    docker commit -a "作者" -m "说明文字" 容器名或ID 镜像名:标签

    2、容器与主机之间数据拷贝

    docker cp /datadir xxx:/datapath     # 主机/datadir目录拷贝到容器xxx中,目录重命名为/datapath

    3、检查容器中文件结构的更改

    docker diff mymysql                  # 查看容器mymysql的文件结构更改

    八、镜像仓库

    1、登陆到Docker镜像仓库

    docker login -u 用户名 -p 密码  # 登陆到Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub

    2、登出Docker镜像仓库

    docker logout  # 登出Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

    3、从镜像仓库拉取镜像

    docker pull java:latest    # 拉去镜像库最新的java镜像

    4、将镜像上传到镜像仓库

    docker push java:latest    # 上传本地镜像java:latest到镜像仓库中

    5、从Docker Hub查找镜像

    docker search 
    参数:     --automated:只列出 automated build类型的镜像  
              --no-trunc :显示完整的镜像描述  
              -s :列出收藏数不小于指定值的镜像。

    例1:使用docker安装并启动nginx 

    docker run -d --name nginx -p 80:80 -v /root/nginx/html:/usr/share/nginx/html nginx:1.18.0

    例2:安装并运行Jenkins 

    chenshifengdeMacBook-Pro:~ chenshifeng$ docker volume create jenkins_shifeng
    jenkins_shifeng
    chenshifengdeMacBook-Pro:~ chenshifeng$ docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_shifeng:/var/jenkins_home jenkins/jenkins:lts

    例3:安装testlink

    创建容器网络:

    docker network create testlink

    运行数据库:

    docker run -d  --name mariadb -e MARIADB_ROOT_PASSWORD=mariadb -e MARIADB_USER=bn_testlink -e MARIADB_PASSWORD=bn_testlink -e MARIADB_DATABASE=bitnami_testlink --net testlink -v ${PWD}/mariadb:/bitnami bitnami/mariadb:10.3.22

    运行testlink

    docker run -d -p 80:80 -p 443:443 --name testlink -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_PASSWORD=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --net testlink -v ${PWD}/testlink:/bitnami bitnami/testlink:1.9.20

    默认用户名:user,默认密码:bitnami

     

  • 相关阅读:
    Regular进阶: 几点性能优化的建议
    总结常见的违背Rest原则的接口设计做法
    如何进行用户访谈更容易获得全面而有效的信息
    关于以太坊智能合约在项目实战过程中的设计及经验总结(2)
    关于以太坊智能合约在项目实战过程中的设计及经验总结(1)
    字节码执行方式--解释执行和JIT
    Redis数据库结构与读写原理
    移动端工程架构与后端工程架构的思想摩擦之旅(2)
    类文件结构与javap的使用
    JVM垃圾收集器(1)
  • 原文地址:https://www.cnblogs.com/R-bear/p/15045801.html
Copyright © 2020-2023  润新知