初识docker并安装
2017-08-03 16:30
253 查看
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/graph docker 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的相关的环境变量了。 #当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。 机器a docker save busybox-1 > /home/save.tar 使用scp将save.tar拷到机器b上,然后: docker load < /home/save.tar docker build -t <镜像名> <Dockerfile路径> #构建自己的镜像
ubuntu
1、查看版本root@controller:~# uname -a Linux controller 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux root@controller:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
我所使用的是Ubuntu 16.04.2 64位版本和4.4的内核
2、安装docker
root@controller:~# apt install -y docker.io root@controller:~# systemctl start docker root@controller:~# systemctl enable docker
3、docker版本
root@controller:~# docker version Client: 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 Server: 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 ubuntu NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu 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 ubuntu Using default tag: latest latest: Pulling from library/ubuntu e0a742c2abfd: Pull complete 486cb8339a27: Pull complete dc6f0d824617: Pull complete 4f7a5649a30e: Pull complete 672363445ad2: Pull complete Digest: sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f Status: Downloaded newer image for ubuntu:latest
3、现在,您可以通过使用命令来查看所有已下载的images:
root@controller:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 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 ubuntu 0cf6c594de0ccb0567d305d5f6ce5d4f1ad59778534e3d37ccab52e47af03b2f root@controller:~# docker run -i -t ubuntu /bin/bash root@2d57a682a56a:/# root@2d57a682a56a:/# exit exit
当你输入 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" 7991f44c7117260c2eb34c64b2a4ce6d5896ea951685b674c2e1fe48fe22fc01 root@controller:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7991f44c7117 ubuntu "/bin/sh -c 'while tr" 10 seconds ago Up 10 seconds serene_liskov root@controller:~# docker logs serene_liskov hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world
怎样在后台访问容器 shell?这个命令将会连接你的容器 shell:
docker exec -i -t NAMES/ContainerID
root@controller:~# docker exec -i -t serene_liskov /bin/bash root@7991f44c7117:/#
你可以看到主机名和容器ID是相等的,这意味着你在容器shell内。当你在shell 上键入’exit`,会离开的shell,但容器仍在运行。
你会经常使用的另一个命令是:
docker stop NAME/ContainerID
这将停止容器而不将其删除,这样你就可以用命令重新启动它:
docker start NAME/ContainerID
如果你想删除的容器,先停止它,然后用命令将其删除:
docker rm NAME/ContainerID
相关文章推荐
- docker初识(二) docker的安装
- Docker初识之Centos6.2下安装Docker容器
- 初识Docker和安装
- docker安装
- CentOS6.6安装和使用Docker
- 初识RabbitMQ系列之二:下载安装
- NuGet学习笔记(1)——初识NuGet及快速安装使用
- Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离
- centos 安装docker-machine
- docker mysql镜像安装和使用
- Docker CE 安装
- Unbuntu从零开始搭建docker并安装tomcat
- docker中centos7安装ssh服务
- Docker使用之mysql的安装
- 以太坊如何安装安装 Docker 安装 Compose
- docker安装
- 如何用docker安装laravel开发环境
- CentOS安装Docker
- Docker学习笔记 — Docker安装(Ubuntu 64bit)
- Docker系列之CentOS7安装Docker(一)