一、环境准备
1、ubuntu 版本
Linux ubuntu 4.4.0-31-generic #50~14.04.1
二、安装
1、安装1.9版本
1)执行以下指令
sudo apt-get install apt-transport-https
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker
2)检查安装
使用下面指令检查是否安装成功
docker -v
三、使用
1、查看ubuntu镜像
docker search ubuntu
该命令将显示所有 ubuntu images,你可以自己尝试一下搜索 centos Images。
2、拉去官方原版ubuntu系统
使用下面命令拉去官方的原版ubuntu系统镜像,已经开始下载,如下图。
docker pull ubuntu
完成下载。
使用命令 查看已经下载 的所有的images:
docker images
、
3、创建容器
使用命令
docker create ubuntu:14.04
或者
docker run -i -t ubuntu:14.04 /bin/bash
创建一个名字叫做 ubuntu:14.04
的新容器。其中,create只创建不启动,run创建并启动容器。
运行 create 命令时在本地未发现ubuntu:14.04的版本,因此重新拉去了一个标签为ubuntu:14.04的镜像,如下图:
拉去的ubuntu14.04的镜像
已经下载的所有镜像
已经存在镜像时如下图
4、运行容器
1)后台带参数运行
docker run -it -d --name ubuntu:14.04-p 8088:80 ubuntu
-d参数为后台运行,–name参数为自定义容器名,-p参数为指定端口映射、后者为容器的端口。注意到成功后台运行后会返回一个容易的id,在这里只需要记住前两位即88即可
2)直接运行
docker run -i -t ubuntu:14.04 /bin/bash
或者
docker exec -i -t NAMES/ContainerID
执行后进入该容器的bash命令行,用另一个shell查看当前的images状态发现该容器已经处于运行状态。
用命令 cat /etc/issue
查看容器内的ubuntu版本。
在容器内我们可以做很多的操作,和普通的linux系统操作并无差别。比如安装vim和修改为阿里源。
安装vim:
apt-get update
apt-get install vim
更换阿里源
cp sources.list sources.list.bak
echo ''>sources.list
vi sources.list
复制以下内容到source.lis中
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
5、退出容器
1)退出容器:exit
,查看容器的运行状态。
2)停止容器:docker stop dreamy_pike
或者 docker stop 85785945b3e4
或者 docker stop 85
第一个是容器的名字,后两个是容器的id,其中id只使用前两位也可以停止容器,启动时同理。
6、重启容器
docker restart 容器名/容器id
使用 docker restart 85785945b3e4
重启已经存在的容器。
7、访问已启动容器的
1)在容器启动的情况下,执行docker attach 容器id
即可进入容器,但执行exit
时容器就停止了。
2)执行 docker exec -it containerID /bin/bash
进入容器,执行命令exit
退出时,容器还在运行。
容器未退出
8、删除容器
在操作过程中无意创建了一个新的容器,我们使用命令 docker rm 63030b5aa9ba
将其删除,docker rm NAME/ContainerID
中间遇到几个问题,当经过别的操作的后有时候会发现imageid有重复的:
此时,使用一般的删除方式 docker rm ca27a58388df
是删除不掉的,会报错,说找不到相应的id:
原因是,有关联docker容器,无法删除,需要强制删除才可以,使用命令 docker rmi -f ca27a58388df
可以删除:
9、其他
1)从宿主拷贝文件到容器:docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
如,拷贝宿主/目录下kafka_2.11-2.1.0/目录到容器名为dreamy_pike的容器的/目录下,命令:
docker cp kafka_2.11-2.1.0/ dreamy_pike:/
2)从容器拷贝文件到宿主:docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
3)查看容器信息:docker inspect id
4)查看docker状态:docker stats id
5)容器的开机自启动:docker run -it --restart=always ubuntu
6)查看容器log:docker logs -f -t --tail=5 ubuntu
四、发布容器
1、制作docker镜像
docker commit 85785945b3e4 ubuntu_aliyun:1.0
冒号后面的1.0为版本号,要添加的,就像在前面查看镜像images时的TAG
制作完成后用命令 docker images
查看已经制作的镜像,
2、打包镜像
虽然制作了镜像,但是只能在宿主机使用而不能在其他机器上使用,这时需要打包镜像,将镜像文件打包为tar包,发给别的机器再使用。
docker save -o ubuntu_aliyun.tar ubuntu_aliyun:1.0
3、本地镜像推送到docker Hub
1)账户登录
若没有账户的,在 此处 注册docker hub账户,然后使用命令 docker login
登录docker hub.
2)修改镜像
修改已经生成的镜像文件为规范的命名格式,推送镜像的规范是:
docker push 注册用户名/镜像名
修改的命令:
docker tag 目前的名字 规范的名称
未修改前的images:
修改之后的images:
发现一个问题,文档上说docker tag
是重命名的指令,但是操作之后发现似乎是重新多了一份???
3)推送到docker hub
使用命令 docker push 镜像名:latest
,推送测试的镜像到docker hub.
docker push luciferofwg/ubuntu_aliyun:latest
开始推送
似乎除了问题
经过查看,应该是与docker hub的链接不稳定导致的,重新推送成功了。
推送成功之后,在docker hub上自己的主页上查看推送的结果,已经成功。这个镜像即可pull下来在别的地方使用。
至此,就是在学习使用docker的过程中记录的一些问题和笔记,多数资料来自与互联网。