Docker的基本使用



Docker的基本使用


1、安装


1.1 使用apt-get安装(非最新版本)


sudo apt-get install docker.io


1.2 使用apt-get安装(最新版本)


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


1.3 安装完成后


查看docker是否运行:
sudo service docker status


查看docker版本:
sudo docker version


2、Hello World

因为每次运行docker命令都需要sudo,可以通过如下操作解决这个问题:
首先将当前用户(这里是python)加到docker组:
$ sudo -s
# adduser python docker


需要重启系统,才能生效。


2.1 搜索并下载一个可用镜像(这里是tutorial)


docker search tutorial


上面的命令将返回tutorial镜像的全名是learn/tutorial,然后下载镜像:


docker pull learn/tutorial


2.2 启动镜像并输出hello world

有了镜像,就可以通过镜像启动容器,并且在容器中做相关操作:
docker run learn/tutorial echo "Hello World!"


2.3 查看容器


$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
39a136eaec7b        learn/tutorial      "echo 'Hello World!'   5 minutes ago       Exited (0) 5 minutes ago 


2.4 安装ping

在这个容器中是不能直接使用ping命令的,所以需要安装:
docker run learn/tutorial apt-get install -y ping


然后查看最新的container:
$ docker ps -l
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
3ff336e137a2        learn/tutorial      "apt-get install -y    3 minutes ago       Exited (0) 3 minutes ago                       jovial_tesla 


有了CONTAINER ID,就可以保存这个安装了ping的image了(这里保存为learn/ping):


docker commit 3ff336e137a2 learn/ping
3fed5e9fbe3d646fa39423f7edaa9d279adb6b26bf12491be56d17701e1fb4c5


返回的是新的镜像id。


再次查看镜像:


docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
learn/ping          latest              3fed5e9fbe3d        52 seconds ago      139.5 MB
learn/tutorial      latest              8dbd9e392a96        2 years ago         128 MB


已经有两个镜像了。


使用新镜像启动容器并使用ping命令:


docker run learn/ping ping www.baidu.com
PING www.a.shifen.com (111.13.100.91) 56(84) bytes of data.
64 bytes from 111.13.100.91: icmp_req=1 ttl=49 time=50.2 ms
64 bytes from 111.13.100.91: icmp_req=2 ttl=49 time=53.7 ms
...


2.5 检查container


首先找到container的id:
docker ps -a


查看该container:
docker inspect containerid


2.6 发布自己的镜像


docker push learn/ping


镜像只能发布到自己的空间,因此是需要账户名和密码的。


3、发布程序


交互式地进入新安装的虚拟环境:


docker run -i -t learn/ping /bin/bash


如果先运行了容器,之后想进入命令行,可以使用命令:docker attach container_name



在虚拟环境中安装ssh:


apt-get install openssh-server


启动ssh:
/etc/init.d/ssh status
如果显示未启动,则启动:
/etc/init.d/ssh start


这样就可以在物理机上使用ssh或scp命令了,之后就可以像在虚拟机上安装依赖包,发布程序一样了。


4、持久化(生成打包文件)


以上操作不论镜像还是容器,都没有持久化为一个具体文件(虽然镜像与容器本身都是持久的),通过持久化为一个文件,可以实快速部署或迁移。


4.1 持久化镜像


持久化之前,首先需要提交镜像(参考2.4节提交为learn/deploy)。


持久化镜像到文件:


docker save learn/deploy> /home/python/learn_deploy.tar


4.2 持久化容器


找到最新的容器id:


docker ps -l


执行持久化:


docker export 869a61c1403c> /home/python/learn_deploy_con.tar


4.3 删除所有镜像和容器


首先查看活动的容器:


docker ps


杀掉活动的容器:


docker kill containerid


删除所有的容器:


docker rm $(docker ps -q -a)


删除所有镜像:


docker rmi $(docker images -q)


4.4 从容器文件导入


cat /home/python/learn_deploy_con.tar | docker import - learn/deploy_new:bloomfilterv0.1


docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
learn/deploy_new    bloomfilterv0.1     33c4fc7846db        35 seconds ago      196.2 MB


于是有了新的images。


4.5 从镜像文件导入


docker load < /home/python/learn_deploy.tar
docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
learn/deploy_new    bloomfilterv0.1     33c4fc7846db        2 minutes ago       196.2 MB
learn/deploy        latest              8acaaacef9e1        39 minutes ago      209 MB
















     



















  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值