一、环境准备
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
2、启动
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker
三、使用
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的过程中记录的一些问题和笔记,多数资料来自与互联网。