Docker 概述

Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

Docker 基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 安装

在平时学习过程中,接触到docker,开发也介绍,docker比虚拟机好用很多,所以自己就开始捣鼓捣鼓。docker与虚拟机相比,确实轻便许多。刚开始是在windows环境下搭建,但系统是专业版,使用网上的方法搭建,就是没有成功。所以就用了如下这种方法。好了,那我们就开始搭建docker环境吧。

Windows Docker 安装

1. 下载docker toolbox

下载地址:docker toolbox ,选择docker toolbox.exe下载

2. 安装docker toolbox

双击下载的安装包,一路 next 即可。安装后成功后,电脑桌面会出现如下图标:

3. docker初始化

双击如上步骤中的图标,会初始化docke,最后出现如下截图,初始化完毕进入docker命令模式。

Ubuntu Docker 安装

在windows环境学习过程中,环境时不时就出了问题,然后自己也要用到linux系统,赶上阿里云服务器的活动,索性就整了台服务器,学习那就更方便了。linux系统搭建docker很简单,我们来看。

1. apt-get update

使用命令 apt-get update 更新源

2. apt-get install docker

使用命令 apt-get install docker 安装即可,安装后用命令 docker run hello-world 验证是否安装成功,打印出以下信息则安装成功。

root@iZuf6hobanx6hbvtsep8ykZ:/# docker run hello-world

Unable to find image 'hello-world:latest' locally

latest:Pulling from library/hello-world

0e03bdcc26d7:Pull complete

Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5

Status: Downloaded newer image for hello-world:latest

Hello from Docker! This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/

For more examples and ideas, visit: https://docs.docker.com/get-started/

Docker 基本命令

docker使用,肯定离不开命令的操作,接下来就列举下,我近期在学习过程中用到的基本命令。

docker run 命令

创建一个新的容器并运行一个命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • 选项参数

    • -d: 后台运行容器,并返回容器ID;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -P: 随机端口映射,容器内部端口随机映射到主机的端口
    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name="jenkins": 为容器指定一个名称。

Docker start/stop/restart 命令

docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

启动已被停止的容器jenkins

docker start jenkins

停止运行中的容器jenkins

docker stop jenkins

重启容器jenkins

docker restart jenkins

Docker rm 命令

docker rm :删除一个或多个容器。

Docker kill 命令

docker kill :杀掉一个运行中的容器。

  • 选项参数

    • -s :向容器发送一个信号

Docker exec 命令

docker exec :在运行的容器中执行命令。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Docker ps 命令

docker ps : 列出容器

docker ps [OPTIONS]

  • 选项参数

    • -a :显示所有的容器,包括未运行的。
    • -f :根据条件过滤显示的内容。
    • -l :显示最近创建的容器。
    • -n :列出最近创建的n个容器。
    • -q :静默模式,只显示容器编号。
    • -s :显示总的文件大小。

Docker cp 命令

docker cp :用于容器与主机之间的数据拷贝。

docker cp [OPTIONS] CONTAINER:SRCPATH DESTPATH|-
docker cp [OPTIONS] SRCPATH|- CONTAINER:DESTPATH

将主机/www/phpwind目录拷贝到容器975705051af9的/www目录下。

docker cp /www/phpwind 975705051af9:/www/

将容器975705051af9的/www目录拷贝到主机的/tmp目录中。

docker cp 975705051af9:/www /tmp/

Docker pull 命令

docker pull : 从镜像仓库中拉取或者更新指定镜像.

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Docker images 命令

docker images : 列出本地镜像。

docker images [OPTIONS] [REPOSITORY[:TAG]]

Docker rmi 命令

docker rmi : 删除本地一个或多少镜像。

docker rmi [OPTIONS] IMAGE [IMAGE...]

问题总结

1. 安装失败

报错提示:Installation failed:one prerequisite is not fullfilled,如下所示:

问题原因:版本冲突。

解决办法:用文中的windows环境安装步骤搭建即可。

2. 启动docker失败

报错提示:Looks like something went wrong in step ´Finalize´

解决办法:到docker安装目录,找到start.sh启动文件,将clear注释掉,重新启动即可。

STEP="Finalize"
clear
cat << EOF

Docker系列——Docker安装&基础命令的更多相关文章

  1. Docker系列一之基础快速入门企业实战

    1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...

  2. Docker系列(一)安装

    操作系统版本:Centos7 Docker版本:1.8 设置安装源 1  cat > /etc/yum.repos.d/docker.repo << -EOF 2  [dockerr ...

  3. docker 系列 - Docker 安装和Hub Mirror地址设置

    ======================为什么要使用Docker?======================= 容器真是个好东西, (1)容器能提供隔离性; (2)容器能打包环境, 简化部署难度 ...

  4. docker下centos安装ping命令

    https://blog.csdn.net/king_gun/article/details/78423115 [问题] 从docker hub上拉取到则镜像centos:6.7在执行ping命令是报 ...

  5. 【docker】 docker容器内部安装vi命令

    有时会需要在docker容器内使用vi命令,但是新启动的docker容器内并没有vi命令,那就需要自己安装一个 1.使用命令 apt-get update 2.进行安装 apt-get install ...

  6. docker的基本安装和命令详解

    docker的安装 yum install docker-io docker的启动 /bin/systemctl start docker.service docker查找镜像 docker sear ...

  7. Docker 使用笔记-常用基础命令

    常用基础命令 环境:Linux Ubuntu 1.查看docker信息 docker version | docker info 2.启动docker服务 sudo systemctl start d ...

  8. Docker 镜像管理及基础命令(二)

    Docker 常用命令: ## Docker 登录下载镜像: docker login # 登录官方hub.docker.com docker pull nginx:alpine # 下载nginx的 ...

  9. Docker Compose的安装及命令补全

    安装Compose Compose的安装有多种方式,例如通过shell安装.通过pip安装.以及将compose作为容器安装等等.本文讲解通过shell安装的方式.其他安装方式如有兴趣,可以查看Doc ...

随机推荐

  1. Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码

    功能介绍 客户端给所有在线用户发送消息 客户端给指定在线用户发送消息 服务器给客户端发送消息(轮询方式) 项目搭建 项目结构图 pom.xml <?xml version="1.0&q ...

  2. GitOps初阶指南:将DevOps扩展至K8S

    本文转自Rancher Labs 在过去十年的编程中,出现了一些革命性的转变.其中之一是源于围绕DevOps的实践,它将开发和运维团队整合到一个共享的工作流程中,此外还有持续集成和持续交付(CI/CD ...

  3. PHP strftime() 函数

    ------------恢复内容开始------------ 实例 根据区域设置格式化本地日期和时间: <?php echo(strftime("%B %d %Y, %X %Z&quo ...

  4. PHP var_export() 函数

    var_export() 函数用于输出或返回一个变量,以字符串形式表示.高佣联盟 www.cgewang.com高佣联盟 www.cgewang.com var_export() 函数返回关于传递给该 ...

  5. 2019 HL SC day4

    自闭场本来 以为 顶多一些不太会 结果发现 一堆不太会 . 树状数组  感觉 好久没看 了有点遗忘 不过还好 现在我来了.莅临之神将会消灭一切知识点哦. 今天说点不一样东西 树状数组 hh 很有用的东 ...

  6. LeetCode 87,远看是字符串其实是搜索,你能做出来吗?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第54篇文章,我们一起来看LeetCode 87题,Scramble String(爬行字符串). 这题的官方难度 ...

  7. Sharding-JDBC实现水平拆分-单库分表

    参考资料:猿天地   https://mp.weixin.qq.com/s/901rNhc4WhLCQ023zujRVQ 作者:尹吉欢 当单表的数量急剧上升,超过了1千万以上,这个时候就要对表进行水平 ...

  8. 学学Viewbinding

    Viewbinding 1.环境需求 环境上,需要Android Studio 3.6 Canary 11+ 同样的Gradle也需要升级(这年头都4.0了,应该没有还在用低版本的了吧...) 2.配 ...

  9. VSCode C++环境配置(个人使用)

    tasks.json { "version": "2.0.0", "command": "g++", "arg ...

  10. “随手记”开发记录day09

    今天完成了关于我们页面和更新查找页面 效果