Ubuntu下docker安装及简单应用

最近工作了,好久没用更新博客了。。在工作中了解了docker这个工具。真是好用。折腾了一下,准备记录一下。那么docker是什么?引用百度的话来解释一下,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker让开发的环境可以进行打包发布,甚至包括系统,你可以发布自己的镜像给大家使用。而且应用部署快速,跨平台,无论是linux还是Windows,还是mac os x 都支持。除了这些优点,还有很多…你可以慢慢去了解。。

一、 docker的安装

1、切换到root权限或者用sudo

2、升级source列表并保证https和ca证书成功安装

apt-get update
apt-get install apt-transport-https ca-certificates

3、增加新的GPG 密钥

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

4.新增或编辑source列表里的docker.list文件

如果不存在就新增该文件

vim /etc/apt/sources.list.d/docker.list    

5.按照系统版本增加entry

然后再执行一下 apt-get update

6.更新操作后,删除老的repo

如果系统中存在较老版本的Docker(lxc-docker),需要删除,没有就跳过。其实在安装服务时,如果有也会提示,选择“是”即可。

apt-get purge lxc-docker

7.查看是否有正确的可用版本

apt-cache policy docker-engine

如图:
可以版本

8.从14.04版本以上开始docker推荐安装linux-image-extra

apt-get install linux-image-extra-$(uname -r)

9.安装docker

apt-get update
apt-get install docker-engine
service docker start   //启动docker服务

最后可以通过docker info 或者 docker version 查看安装的信息
service docker stop //停止docker服务
service docker restart //重启docker服务

二、 docker常用命令

1、检查镜像或者容器的参数,默认返回 JSON 格式

docker inspect [容器名orID]/[镜像名orID]

2、获取容器运行时的输出日志

docker logs [容器名orID]

-f 跟踪容器日志的最近更新;
-t 显示容器日志的时间戳;
–tail=”10” 仅列出最新10条容器日志。

3、查看容器目录

docker ps   //查看正在运行的容器
docker ps -a  //查看所有的容器,包括已经停止的

4.查看镜像目录

docker images

5、启动、杀死、停止、删除(删除容器必须先停止,再执行删除)容器

docker start [容器名orID]
docker kill  [容器名orID]
docker stop  [容器名orID]
docker rm    [容器名orID]

6、删除镜像(需要先删除容器,再删镜像)

docker rmi  [镜像名orID]

7、查看一个镜像的历史

docker history  [镜像名orID]

8、启动容器

  • 启动容器并启动bash(交互方式):

    docker run -i -t [镜像名orID] /bin/bash
  • 启动容器以后台方式运行(更通用的方式):

    docker run -d -it  [镜像名orID]

9、附着到容器

  • 附着到正在运行的容器:

    docker attach [容器名orID]
  • 进入正在运行的容器内部,同时运行bash(比attach更好用):

    docker exec -t -i [容器名orID]  /bin/bash

10、从dockerhub检索image

docker search [镜像名]

11、拉取、下载镜像(这个速度很慢,后面会讲解代理设置)

docker pull [镜像名]

12、发布镜像

docker push <namespace>/<image name>

13、查看docker基础信息

  • 查看docker版本:

    docker version 
  • 查看docker系统的信息

    docker info 

14、构建docker镜像

  • 通过commit提交改变构建镜像

    docker commit  [改变了的容器的ID]  [REPOSITORY:TAG] 

    如:docker commit 6282cee20e5b anumbrella/ubuntu
    当然还可以更详细一点:
    docker commit -m=”add ssh” –author=”anumbrella” 6282cee20e5b anumbrella/ubuntu:ssh

  • 通过Dockerfile来构建镜像

    docker build -t [REPOSITORY:TAG] -f [Dockerfile文件]  [Dockerfile目录]

    如: docker build -t anumbrella/ubuntu:ssh -f /docker/ubuntu/Dockerfile /docker/ubuntu

15、保存、加载docker镜像

保存镜像

docker save [OPTIONS] IMAGE [IMAGE...]

将docker的镜像打包保存下载下来。
如:
docker save -o myUbuntu.zip anumbrella/ubuntu:ssh
也可以使用
docker save anumbrella/ubuntu:ssh>myUbuntu.zip

加载镜像

docker load [OPTIONS] IMAGE [IMAGE...]

如:
docker load -i myUbuntu.zip
也可以使用
docker load < myUbuntu.zip

三、 docker下安装ubuntu以及ssh服务进行链接

经过上面的讲解,我们对docker的基本知识有了认识。接下来,我们便开始进行一个docker实例。现在假如有一个这样的需求,公司来了10个实习生,我们需要给他们10个linux服务器给他们摆弄。现在只有一台服务器可以用,当然可以linux分配账号,来实现。如果需要更彻底完善root,单个人的系统,其实可以用docker来部署。

1、安装ubuntu系统

在docker的hub仓库中,有专门的ubuntu系统。我们直接用使用就可以了。

docker search ubuntu

如图:

2、选择要拉下了的镜像

docker pull ubuntu

这里可以很很慢,因为镜像是在国外。使用镜像加速就可以了。

在/etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。如果没有文件,则新建一个。键值如下:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

重启服务: service docker restart 。
还有其他的方法,可以看官方的加速链接,链接地址

3、下载完毕后,查看镜像:

docker images
如图:

4、运行容器

docker run --name iubuntu -t -i -d -p 3316:22 ubuntu

参数: –name 指定生成的容器的名称
-i: 以交互模式运行容器,保证容器中STDIN是开启的。通常与 -t 同时使用;
-t: 为容器重新分配一个伪tty终端,通常与 -i 同时使用;
-d: 后台运行容器,并返回容器ID;
-p:可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。
ubuntu 则是镜像名称,镜像ID也可以的。

运行后查看结果如下:

5、进入容器终端安装ssh服务

docker exec -t -i [容器名orID]  /bin/bash

安装ssh服务(默认为root权限用户):

  • 先执行更新

     apt-get update
  • 安装ssh-client命令

     apt-get install openssh-client
  • 安装ssh-server命令

     apt-get install openssh-server
  • 安装完成以后,先启动服务

     /etc/init.d/ssh start

启动后,可以通过“ps -e|grep ssh”查看是否正确启动。
如下图:

  • 最后编辑sshd_config文件

    vim  /etc/ssh/sshd_config

    将PermitRootLogin xxxx-password 改为 PermitRootLogin yes。
    如果没有vim,先apt-get install vim。

  • 重启ssh服务

    service ssh restart
  • 设置ssh密码

    passwd root
  • 查看容器ip:

    apt-get install net-tools

    然后输入ifconfig,查看容器ip。
    如图:
    ip

6、ssh链接容器中的系统

退出容器终端exit。
在宿主机中,docker ps -a 命令中可以查看到容器的端口。在宿主机中,可以使用localhost进行登录,也可以使用刚才ifconfig查看的ip进行登录。

ssh root@localhost -p 3316

如下图:

如果要从外部进行登录,就要使用宿主机的ip,端口不变。这样我们的任务就完成了。接下来,就可以自由玩耍服务器了。
如下图:

ssh root@x.x.x.x -p 3316

x.x.x.x就是宿主机的ip地址。

7、提交更改的镜像

刚刚我们对容器进行了安装,可以如果删掉话。每次都要重新执行上面的操作,所以可以对镜像进行提交保存。

docker commit  [改变了的容器的ID]  [REPOSITORY:TAG] 

如图:

最后打包了一个Ubuntu的web服务器镜像到阿里云的hub管理平台上,包含ssh、apache、mysql等服务,大家可以去pull来学习一下。
地址:镜像

猜你喜欢

转载自blog.csdn.net/anumbrella/article/details/78047525