【Docker】常用命令汇总

Docker 是1个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

目录

[一. 架构](#一. 架构)

[1. 镜像](#1. 镜像)

[2. 容器](#2. 容器)

[3. 仓库](#3. 仓库)

二.使用

[1. 镜像使用](#1. 镜像使用)

[1.1 查看镜像](#1.1 查看镜像)

[1.2 创建镜像](#1.2 创建镜像)

[1.3 查找镜像](#1.3 查找镜像)

[1.4 删除镜像](#1.4 删除镜像)

[1.5 创建镜像](#1.5 创建镜像)

[1.6 设置镜像标签](#1.6 设置镜像标签)

[2. 容器使用](#2. 容器使用)

[2.1 启动容器](#2.1 启动容器)

[2.2 进入容器](#2.2 进入容器)

[2.3 导出/入容器](#2.3 导出/入容器)


一. 架构

Docker 包括3个基本概念:镜像,容器,仓库。

1. 镜像

Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

2. 容器

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

3. 仓库

仓库(Repository)可看成一个代码控制中心,用来保存镜像。

二.使用

1. 镜像使用

1.1 查看镜像

•docker images:来列出本地主机上的镜像。

复制代码
root@lly:~$ docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB

各个选项说明:

|------------|-------------------------|
| REPOSITORY | **REPOSITORY:**表示镜像的仓库源 |
| | **TAG:**镜像的标签 |
| | **IMAGE ID:**镜像ID |
| | **CREATED:**镜像创建时间 |
| | **SIZE:**镜像大小 |

1.2 创建镜像

在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果想预先下载这个镜像,可以使用 docker pull 命令来下载它。

复制代码
root@lly:~$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10

1.3 查找镜像

复制代码
#使用 docker search 命令来搜索指定镜像(httpd)
root@lly:~$  docker search httpd

1.4 删除镜像

复制代码
#使用 docker rmi 命令,比如删除 hello-world 镜像
$ docker rmi hello-world

1.5 创建镜像

当从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下2种方式对镜像进行更改。

•从已经创建的容器中更新镜像,并且提交这个镜像

复制代码
#更新镜像之前,需要使用镜像来创建1个容器
docker run -t -i ubuntu:15.10 /bin/bash
#进入容器后,更新系统
apt-get update
apt-get upgrade -y
#在完成操作之后,输入 exit 命令退出这个容器
exit
#此时 ID 为 e228edb10165 的容器,是按需求更改的容器。可以通过命令 docker commit 来提交容器副本
docker commit -m="has update" -a="lly" e228edb1016 lly/ubuntu:v2
#可以使用 docker images 命令来查看我们的新镜像 lly/ubuntu:v2
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lly/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB

•使用 Dockerfile 指令来创建1个新的镜像

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

复制代码
root@lly:~$ 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

docker build -t runoob/centos:6.7 .

参数说明:

|--------|----------------------------------------|
| -t | 指定要创建的目标镜像名 |
| . | Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径 |

1.6 设置镜像标签

复制代码
docker tag 860c279d2fec lly/centos:dev

镜像ID:860c279d2fec ;

镜像源名:lly/centos;

标签名:dev。

2. 容器使用

2.1 启动容器

复制代码
docker run -it ubuntu /bin/bash

参数说明:

|-----------|--------------------------------------------|
| -i | 交互式操作 |
| -t | 终端 |
| ubuntu | ubuntu 镜像 |
| /bin/bash | 放在镜像名后的是命令,这里希望有个交互式 Shell,因此用的是 /bin/bash |

•后台运行

在大部分的场景下,希望 docker 的服务是在后台运行的,可以过 -d 指定容器的运行模式。

复制代码
docker run -itd --name ubuntu-test ubuntu /bin/bash

•启动已停止运行的容器

复制代码
#查看所有的容器
$ docker ps -a
复制代码
#docker start 启动1个已停止的容器
$ docker start b750bbbcfd88 

•停止容器

复制代码
#停止容器
docker stop <容器 ID>
#重启容器
docker restart <容器 ID>

•删除容器

复制代码
docker rm -f 1e560fca3906

2.2 进入容器

•exec

复制代码
docker exec -it 243c32535da7 /bin/bash

从这个容器退出,容器不会停止。

•attach

复制代码
docker attach 1e560fca3906 

如果从这个容器退出,会导致容器的停止。

2.3 导出/入容器

(1)导出本地某个容器,可以使用 docker export 命令。

复制代码
#导出容器 1e560fca3906 快照到本地文件 ubuntu.tar
docker export 1e560fca3906 > ubuntu.tar

(2)使用 docker import 从容器快照文件中再导入为镜像。

复制代码
#将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
cat docker/ubuntu.tar | docker import - test/ubuntu:v1

2.4 端口映射

通过 -p 参数设置端口。

复制代码
#将容器内部的 80 端口映射到本地主机的 8888 端口上
docker run -d -p 8888:80  nginx:latest
相关推荐
fasewer14 小时前
玄机--windows日志分析
运维·服务器·windows·网络安全
Linux运维技术栈14 小时前
域名网页加载慢怎么解决:从测速到优化的全链路性能优化实战
运维·网络·nginx·性能优化·cloudflare
会开花的二叉树14 小时前
彻底搞懂 Linux 基础 IO:从文件操作到缓冲区,打通底层逻辑
linux·服务器·c++·后端
计算机小手14 小时前
高效 P2P 文件传输工具:FileSync 利用 WebRTC 技术实现极速安全传输
经验分享·docker·webrtc·开源软件
呼啦啦56114 小时前
【Linux】权限
linux·权限
晨曦54321015 小时前
零基础12周精通Linux学习计划
linux
syty202015 小时前
K8s是什么
容器·kubernetes·dubbo
linux修理工15 小时前
n1 Armbian OS 24.11.0 noble 安装suricata
linux·运维·服务器
傅里叶15 小时前
sudo启动Flutter程序AMD初始化失败
linux·flutter
笨鸟贤妃15 小时前
Ubuntu 22.04 安装 Docker & Compose 最新最简单完整指南
ubuntu·docker·compose