Docker-基本操作

Ubuntu安装Docker

  • 卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io
  • 添加Docker官方的gpg密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 更新apt
 sudo apt-get update
  • 安装最新版
sudo apt-get install -y docker-ce

以上稍完整版安装步骤再此
菜鸟教程安装步骤(包括各系统)

容器/镜像/仓库 使用及管理

测试

安装完成后Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
输出Hello world

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"

Hello world
  • docker: Docker 的二进制执行文件。

  • run: 与前面的 docker 组合来运行一个容器。

  • ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

  • /bin/echo “Hello world”: 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

容器

  • 通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力,进入容器:
runoob@runoob:~$ docker run -it ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#
  • CTRL+D 退出容器或exit
root@0123ce188bd8:/#  exit
docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
  • 创建并启动容器
runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

–name [name]:容器命名
-d:不进入容器
-i:在新容器内指定一个伪终端或终端。
-t:允许你对容器内的标准输入 (STDIN) 进行交互。
-P:是容器内部端口随机映射到主机的高端口。
-c:待完成命令
-p: 是容器内部端口绑定到指定的主机端口

  • 绑定端口:5001:5000
  • 绑定ip地址:127.0.0.1:5001:5000
  • UDP 端口:127.0.0.1:5000:5000/udp
  • 查看所有容器
runoob@runoob:~$ docker ps -a
CONTAINER ID        IMAGE                  COMMAND              ...  
5917eac21c36        ubuntu:15.10           "/bin/sh -c 'while t…"    ...

无参:查看运行中容器
-a:查看所有容器
-l:查询最后一次创建的容器

  • 查看容器内的标准输出:
runoob@runoob:~$ docker logs 2b1b7a428627

-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

  • 停止容器
runoob@runoob:~$ docker stop 2b1b7a428627
  • 启动容器
$ docker start b750bbbcfd88
  • 重启容器
$ docker restart <容器 ID>
  • 进入容器
$ docker attach 5026c9ed27b8 
  • 不停止退出容器
docker exec -it 5026c9ed27b8 /bin/bash
  • 导出容器
$ docker export 5026c9ed27b8 > ubuntu.tar
导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
  • 导入容器快照
$ cat ./ubuntu.tar | docker import - ubuntu
将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

通过指定 URL 或者某个目录来导入
$ docker import http://example.com/exampleimage.tgz example/imagerepo
  • 删除容器
$ docker rm -f 5026c9ed27b8 

-f:强制删除,无论什么状态

  • 运行一个 web 应用
runoob@runoob:~# docker run -d -P training/webapp python app.py

python app.py:容器内运行命令

  • 查看指定容器端口映射
runoob@runoob:~$ docker port bf08b7f2cd89
  • 查看容器的进程
runoob@runoob:~$ docker top wizardly_chandrasekhar
  • 检查 WEB 应用程序
runoob@runoob:~$ docker inspect wizardly_chandrasekhar 
  • 新建网络
$ docker network create -d bridge test-net
  • 查看网络

镜像

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

  • 列出镜像列表
docker images
  • 获取一个新的镜像
Crunoob@runoob:~$ docker pull ubuntu:13.10
  • 查找镜像
runoob@runoob:~$  docker search httpd
  • 删除镜像
$ docker rmi hello-world
  • 创建镜像
    1. 从已经创建的容器中更新镜像,并且提交这个镜像

在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit 命令来退出这个容器。
此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。
runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

  • m: 提交的描述信息
  • a: 指定镜像作者
  • e218edb10161:容器 ID
  • runoob/ubuntu:v2: 指定要创建的目标镜像名
  1. 使用 Dockerfile 指令来创建一个新的镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像

runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---&gt; d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---&gt; Using cache
 ---&gt; 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---&gt; Using cache
 ---&gt; 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
  • 设置镜像标签
runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值