初识docker并安装

来源:互联网 发布:php管理系统源代码 编辑:程序博客网 时间:2024/05/18 22:43

Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。官网地址:http://www.docker.com/

下面是docker官网提供的kvm与docker的图片

这里写图片描述

centos

1、系统版本

[root@jenkins ~]# cat /etc/redhat-release 

2、安装epel

[root@jenkins ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

3.安装docker

[root@jenkins ~]# yum -y install docker-io[root@jenkins ~]# systemctl start docker 启动docker[root@jenkins ~]# systemctl enable docker 开机自启

4、docker的一些操作

docker pull centos:latest #从docker.io中下载centos镜像到本地 /var/lib/docker/graphdocker images                                  #查看已下载的镜像docker run -i -t centos /bin/bash              #启动一个容器docker imr image_id                            #删除镜像docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)  #删除所有镜像docker ps -a                                  #查看所有容器(包括正在运行和已停止的)docker start container                        #开启一个容器(注意container_id和image_id是完全不一样de)docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1 #查看容器的root用户密码,因为docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到redmine容器的root用户的密码了docker logs -f <容器名orID>                    #查看容器日志docker rm $(docker ps -a -q)                    #删除所有容&删除单个容器docker rm <容器名orID>docker run --name redmine -p 9003:80 -p 9023:22 -d -v /var/redmine/files:/redmine/files -v    /var/redmine/mysql:/var/lib/mysql sameersbn/redmine#运行一个新容器,同时为它命名、端口映射、文件夹映射。以redmine镜像为例docker run -i -t --name sonar -d -link mmysql:db  tpires/sonar-server # 一个容器连接到另一个容器&sonar容器连接到mmysql容器,并将mmysql容器重命名为db。这样,sonar容器就可以使用db的相关的环境变量了。#当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。机器adocker save busybox-1 > /home/save.tar使用scp将save.tar拷到机器b上,然后:docker load < /home/save.tardocker build -t <镜像名> <Dockerfile路径>        #构建自己的镜像

ubuntu

1、查看版本

root@controller:~# uname -aLinux controller 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linuxroot@controller:~# cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=16.04DISTRIB_CODENAME=xenialDISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"

我所使用的是Ubuntu 16.04.2 64位版本和4.4的内核

2、安装docker

root@controller:~# apt install  -y docker.ioroot@controller:~# systemctl start dockerroot@controller:~# systemctl enable docker

3、docker版本

root@controller:~# docker versionClient: Version:      1.12.6 API version:  1.24 Go version:   go1.6.2 Git commit:   78d1802 Built:        Tue Jan 31 23:35:14 2017 OS/Arch:      linux/amd64Server: Version:      1.12.6 API version:  1.24 Go version:   go1.6.2 Git commit:   78d1802 Built:        Tue Jan 31 23:35:14 2017 OS/Arch:      linux/amd64

现在,docker 已经安装在您的系统上。您可以从 Docker 库先下载 Docker Image 制作的容器

Docker 的基本用法

要创建一个新的容器,你应该选择一个基本 image 的操作系统,例如启动 Ubuntu 或者 CentOS 或其他系统。您可以搜索一个基本 image 使用 Docker 搜索命令:

1、docker search ubuntu

该命令将显示所有 ubuntu images,你可以自己尝试一下搜索 centos Images。

root@controller:~# docker search ubuntuNAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDubuntu                     Ubuntu is a Debian-based Linux operating s...   6356      [OK]       rastasheep/ubuntu-sshd     Dockerized SSH service, built on top of of...   95                   [OK]ubuntu-upstart             Upstart is an event-based replacement for ...   76        [OK]       neurodebian                NeuroDebian provides neuroscience research...   37        [OK]       ubuntu-debootstrap         debootstrap --variant=minbase --components...   30        [OK]       32bit/ubuntu               Ubuntu for i386 (32bit)                         30                   armhf/ubuntu               Ubuntu is a Debian-based Linux operating s...   27                   nuagebec/ubuntu            Simple always updated Ubuntu docker images...   22                   [OK]tutum/ubuntu               Simple Ubuntu docker images with SSH access     18                   ppc64le/ubuntu             Ubuntu is a Debian-based Linux operating s...   10                   aarch64/ubuntu             Ubuntu is a Debian-based Linux operating s...   9                    sameersbn/ubuntu                                                           9                    [OK]nimmis/ubuntu              This is a docker images different LTS vers...   7                    [OK]i386/ubuntu                Ubuntu is a Debian-based Linux operating s...   7                    darksheer/ubuntu           Base Ubuntu Image -- Updated hourly             3                    [OK]libmesos/ubuntu                                                            3                    scaleway/ubuntu            Ubuntu image on Scaleway                        2                    s390x/ubuntu               Ubuntu is a Debian-based Linux operating s...   1                    vcatechnology/ubuntu       A Ubuntu image that is updated daily            1                    [OK]webhippie/ubuntu           Docker images for ubuntu                        1                    [OK]konstruktoid/ubuntu        Ubuntu base image                               0                    [OK]ossobv/ubuntu              Custom ubuntu image from scratch (based on...   0                    smartentry/ubuntu          ubuntu with smartentry                          0                    [OK]defensative/socat-ubuntu                                                   0                    [OK]pivotaldata/ubuntu         A quick freshening-up of the base Ubuntu d...   0   

2、现在我们现在 base image到我们的服务中,使用命令:

root@controller:~# docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntue0a742c2abfd: Pull complete 486cb8339a27: Pull complete dc6f0d824617: Pull complete 4f7a5649a30e: Pull complete 672363445ad2: Pull complete Digest: sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005fStatus: Downloaded newer image for ubuntu:latest

3、现在,您可以通过使用命令来查看所有已下载的images:

root@controller:~# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              14f60031763d        13 days ago         119.5 MB

4、Ubuntu 镜像从DockerHub/Docker Registry下载。下一步骤是创建从该镜像的容器。

要创建容器,可以使用docker create 或 docker run

docker create ubuntu

docker create 命令会创建一个新的容器,但不会启动它。所以现在你需要使用运行命令:

docker run -i -t ubuntu /bin/bash

此命令将创建并运行一个基于 Ubuntu 镜像的容器,容器内并运行一个命令/bin/bash,您将在容器内自动运行命令。

root@controller:~# docker create ubuntu0cf6c594de0ccb0567d305d5f6ce5d4f1ad59778534e3d37ccab52e47af03b2froot@controller:~# docker run -i -t ubuntu /bin/bashroot@2d57a682a56a:/# root@2d57a682a56a:/# exitexit

当你输入 Exit 命令退出容器时,容器也是停止运行,如果你想容器在后台运行需要在命令后面添加 -d 参数。

docker run -i -t -d ubuntu /bin/sh -c “while true; do echo hello world; sleep 1; done”/bin/sh -c “while true; do echo hello world; sleep 1; done” this is bash script to echo “hello word” forever.

现在你可以看到容器在后台运行通过命令:

docker ps

如果你想从 bash 命令看日志结果,使用命令:

docker logs NAMES/ContainerID

root@controller:~# docker run -i -t -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"7991f44c7117260c2eb34c64b2a4ce6d5896ea951685b674c2e1fe48fe22fc01root@controller:~# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES7991f44c7117        ubuntu              "/bin/sh -c 'while tr"   10 seconds ago      Up 10 seconds                           serene_liskovroot@controller:~# docker logs serene_liskovhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world

怎样在后台访问容器 shell?这个命令将会连接你的容器 shell:

docker exec -i -t NAMES/ContainerID

root@controller:~# docker exec -i -t serene_liskov /bin/bashroot@7991f44c7117:/# 

你可以看到主机名和容器ID是相等的,这意味着你在容器shell内。当你在shell 上键入’exit`,会离开的shell,但容器仍在运行。

你会经常使用的另一个命令是:

docker stop NAME/ContainerID

这将停止容器而不将其删除,这样你就可以用命令重新启动它:

docker start NAME/ContainerID

如果你想删除的容器,先停止它,然后用命令将其删除:

docker rm NAME/ContainerID

原创粉丝点击