docker的常见命令
启动docker服务:systemctl start docker
重启docker服务:systemctl restart docker
停止docker服务:systemctl stop docker
镜像命令
拉取镜像:docker pull 镜像名
查看镜像:docker images
查找镜像:docker search httpd (查找一个适合本机环境的httpd镜像来服务本机的web服务)
删除镜像:docker rmi 镜像ID
容器命令:
必须有至少一个工作在前台的守护进程(否则拉取的容器会自动停止)
library官方镜像较为精简
public公用含有super sersver守护进程
创建运行容器:docker run [options] image [command] [arg…]
例如:docker run -it ubuntu /bin/bash
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
-v 挂载
-p 指定端口映射
-e 设置环境变量
-d 后台运行容器,返回容器ID
查看容器:docker ps [options] 例如:查看所有容器 docker ps -a
删除全部容器:嵌套语法 rm -f $(docker ps -a -q)
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach : 退出容器后会导致容器停止
docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
打开进入容器:docker exec [options] container command [arg…]例如:docker exec -it 容器id /bin/bash
导出容器:docker export 容器id > ubuntu.tar
导入容器快照:以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
通过指定 URL 或者某个目录来导入,例如:docker import http://example.com/exampleimage.tgz example/imagerepo
实例
1、创建带有应用的容器
创建了一个 python 应用的容器。
docker run -d -P training/webapp python app.py
-P :是容器内部端口随机映射到主机的端口。
-p : 是容器内部端口绑定到指定的主机端口。
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。
docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py
–name 标识来命名容器
docker port 命令可以让我们快捷地查看端口的绑定情况。
docker logs [ID或者名字] 可以查看容器内部的标准输出。
docker top 来查看容器内部运行的进程。
docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
容器保存为镜像:docker commit 容器ID 镜像名称:TAG信息
镜像文件保存:docker save -o 文件名.tar 镜像名称:TAG信息
镜像文件导入:docker load -o 文件名.tar
docker ps -l 查询最后一次创建的容器
删除容器:docker rm 容器ID
清理掉所有处于终止状态的容器。
$ docker container prune
2、Docker容器互联
一、新建网络
下面先创建一个新的 Docker 网络。
$ docker network create -d bridge test-net
查看新建立的Docker网络test-net
docker network ls
二、创建两个新的容器命名为test1,test2,并连接到新创建的Docker网络net-test上
docker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash
三、通过ping命令证明两个容器之间存在连接
进入容器docker exec -it test1 /bin/bash
更新源apt-get update 下载ping命令 apt install iputils-ping
利用test2容器ping test1容器看是否可以连接
实验成功,两个容器可以进行连接