注:本文大部分来自菜鸟教程,发表此篇只是把我常用的一些命令放在一篇文章中,方便查阅。另外Docker推出了Docker Desktop软件,支持图形化操作。
Docker启动
启动容器 run
docker run ubuntu:15.10 /bin/echo "Hello world"
- docker Docker的二进制执行文件
- run 与前面的docker组合来运行一个容器
- ubuntu:15.10 指定要运行的镜像,如果不存在则docker hub上下载
- /bin/echo “Hello world” 在启动的容器里执行的命令
整个解释为:Docker以ubuntu15.10镜像创建一个新容器,然后在容器里执行bin/echo “Hello world”,然后输出结果。
C:\Users\74672>docker run ubuntu:15.10 /bin/echo "Hello world!"
Unable to find image 'ubuntu:15.10' locally
15.10: Pulling from library/ubuntu
7dcf5a444392: Pull complete 759aa75f3cee: Pull complete 3fa871dc8a2b: Pull complete 224c42ae46e7: Pull complete
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for ubuntu:15.10
Hello world!
运行交互式容器 -i -t
docker run -i -t ubuntu:15.10 /bin/bash
C:\Users\74672>docker run -i -t ubuntu:15.10 /bin/bash
root@917c924778d4:/#
- -t 在新容器内指定一个伪终端或终端
- -i 允许你对容器内的标准输入(STDIN)进行交互
利用cat/proc/version和ls查看版本和当前目录文件列表
root@917c924778d4:/# cat /proc/version
Linux version 5.4.72-microsoft-standard-WSL2 (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Wed Oct 28 23:40:43 UTC 2020
root@917c924778d4:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@917c924778d4:/#
exit退出
启动容器(后台模式) -d
#创建一个以进程方式运行的容器
C:\Users\74672>docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1;done"
6151b58a50bf82e17194c321ec7d30eae73a02d326e1beee1f3c16a9a842e2e0
这一串长字符叫做容器ID,对每个容器来说是唯一的,可以通过容器ID来查看对应的容器发生了什么。
查看容器 ps
通过docker ps查看容器
C:\Users\74672>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6151b58a50bf ubuntu:15.10 "/bin/sh -c 'while t…" 3 minutes ago Up 3 minutes exciting_rosalind
输出详情介绍:
CONTAINER ID | 容器ID |
IMAGE | 使用的镜像 |
COMMAND | 启动容器时运行的命令 |
CREATE | 容器的创建时间 |
STATUS | 容器状态 |
**状态(STATUS)**有7种:
created | 已创建 |
restarting | 重启中 |
running或up | 运行中 |
removing | 迁移中 |
paused | 暂停 |
exited | 停止 |
dead | 死亡 |
PORTS 容器的端口信息和使用的连接类型(tcp/udp)
NAMES 自动分类的容器名称
查看容器内的输出 logs
使用docker logs
,查看容器内的标准输出:
id和name都可以
docker logs 6151b58a50bf
或者docker logs exciting_rosalind
停止容器 stop
id和name都可以
docker stop 6151b58a50bf或exciting_rosalind
C:\Users\74672>docker stop 6151b58a50bf
6151b58a50bf
Docker容器使用
查看docker所有命令 docker
docker
了解指定命令 xx --help
更深入的了解指定的Docker命令使用方法。
docker command --help
C:\Users\74672>docker stats --help
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
下载某个镜像 pull xx
docker pull ubuntu
启动<交互>容器 run -it
docker run -it ubuntu /bin/bash
C:\Users\74672>docker run -it ubuntu /bin/bash
root@b525a45c7d02:/#
- -i 交互式操作
- -t 终端
- ubuntu ubuntu镜像
- /bin/bash 放在镜像名后的是命令,这里我们希望有个交互Shell,因此用的是/bin/bash
查看所有容器(包括停止) ps -a
C:\Users\74672>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b525a45c7d02 ubuntu "/bin/bash" 3 hours ago Exited (0) 15 seconds ago sweet_jepsen
6151b58a50bf ubuntu:15.10 "/bin/sh -c 'while t…" 3 hours ago Exited (137) 3 hours ago exciting_rosalind
917c924778d4 ubuntu:15.10 "/bin/bash" 3 hours ago Exited (0) 3 hours ago festive_perlman
8e91b2df1b6c ubuntu:15.10 "/bin/echo 'Hello wo…" 3 hours ago Exited (0) 3 hours ago sweet_mclaren
启动停止的容器 start id/name
C:\Users\74672>docker start b525a45c7d02
b525a45c7d02
后台运行 -d
C:\Users\74672>docker run -itd --name ubuntu-test ubuntu /bin/bash
584d32a8b4824d57d5be301d586ace6f81b1b0a6944e82c2919b7f89efd0aaa8
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec
命名容器 --name xx
docker run -itd --name ubuntu-test ubuntu /bin/bash
停止容器 stop id
重启容器 restart id
进入容器 attach/exec
使用-d参数时,容器启动后会进入后台。有两种方式进入容器:
attach
退出会导致容器停止
docker attach 1e560fca3906
exec
推荐,因为此退出容器终端,不会导致容器的停止
docker exec -it 243c32535da7 /bin/bash
导出和导入容器
导出:
docker export 1e560fca3906 > ubuntu.tar
导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
导入:
以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
或docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器 rm
docker rm -f 1e560fca3906
C:\Users\74672>docker rm -f 8e91b2df1b6c
8e91b2df1b6c
清理所有终止容器
docker container prune
运行一个 web 应用
目前暂时用不到,详情请看https://www.runoob.com/docker/docker-container-usage.html
Docker镜像使用
列出本机镜像列表 images
C:\Users\74672>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4dd97cefde62 9 days ago 72.9MB
ubuntu 15.10 9b9cb95443b5 4 years ago 137MB
- REPOSITORY 表示镜像的仓库源
- TAG 镜像的标签
- IMAGE ID 镜像ID
- CREATED 镜像创建时间
- SIZE 镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用EPOSITORY:TAG来定义不同的镜像。
默认使用最新版本(latest)镜像。
使用特定版本镜像 ubuntu:15.10
docker run -t -i ubuntu:15.10 /bin/bash
查找镜像 search
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
也可以用search:docker search httpd
C:\Users\74672>docker search httpd
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
httpd The Apache HTTP Server Project 3403 [OK]
centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 37
centos/httpd 33 [OK]
polinux/httpd-php Apache with PHP in Docker (Supervisor, CentO… 4 [OK]
salim1983hoop/httpd24 Dockerfile running apache config 2 [OK]
publici/httpd httpd:latest 1 [OK]
manageiq/httpd Container with httpd, built on CentOS for Ma… 1 [OK]
solsson/httpd-openidc mod_auth_openidc on official httpd image, ve… 1 [OK]
inanimate/httpd-ssl A play container with httpd, ssl enabled, an… 1 [OK]
hypoport/httpd-cgi httpd-cgi 1 [OK]
dockerpinata/httpd 1
dariko/httpd-rproxy-ldap Apache httpd reverse proxy with LDAP authent… 1 [OK]
clearlinux/httpd httpd HyperText Transfer Protocol (HTTP) ser… 1
lead4good/httpd-fpm httpd server which connects via fcgi proxy h… 1 [OK]
jonathanheilmann/httpd-alpine-rewrite httpd:alpine with enabled mod_rewrite 1 [OK]
appertly/httpd Customized Apache HTTPD that uses a PHP-FPM … 0 [OK]
amd64/httpd The Apache HTTP Server Project 0
manasip/httpd 0
interlutions/httpd httpd docker image with debian-based config … 0 [OK]
centos/httpd-24-centos8 0
trollin/httpd 0
manageiq/httpd_configmap_generator Httpd Configmap Generator 0 [OK]
itsziget/httpd24 Extended HTTPD Docker image based on the off… 0 [OK]
ysli/httpd Httpd for DeepWeb 0 [OK]
e2eteam/httpd 0
- NAME 镜像仓库源的名称
- DESCRIPTION 镜像的描述
- OFFICIAL 是否 docker 官方发布
- stars 类似 Github 里面的 star,表示点赞、喜欢的意思
- AUTOMATED 自动构建
获取一个新的镜像 pull
docker pull ubuntu:13.10
docker run httpd
删除镜像 rmi
docker rmi hello-world
创建镜像
目前暂时用不到,详情请看https://www.runoob.com/docker/docker-image-usage.html