Docker基础扫盲
扫盲
安装
操作系统:ubuntu20
-
卸载旧版本:sudo apt-get remove docker docker-engine docker.io containerd runc -
更新apt和软件:sudo apt-get update&&sudo apt-get upgrade -
安装依赖:sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -
添加GPG密钥,官方的:curl -fsSL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add - 或者阿里云的:curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - -
添加软件源(amd64架构) sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
-
安装docker: sudo apt install docker-ce -
尝试建立第一个容器:sudo docker run hello-world -
免root :sudo usermod -aG docker [你的用户名] -
镜像加速:用阿里云的https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 按操作文档执行即可
运行第一个docker镜像:
docker run hello-world
- docker : 当前用户未加入docker组时需要在前面加sudo,使用命令
sudo usermod -aG docker [你的用户名] 即可将免sudo运行。 - run 运行docker镜像,若在本地不存在则会从云端仓库里pull下来运行
- hello-world 镜像名
正常运行则会输出
运行交互式容器
docker run -i -t ubuntu:15.10 /bin/bash
- -t :在新容器内指定一个伪终端或终端
- -i : 允许你对容器内的标准输入 (STDIN) 进行交互
- /bin/bash :在启动的容器里执行的命令
运行成功后进入容器内的终端,尝试执行命令
利用exit即可退出容器终端
后台启动容器
尝试输入
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
或
docker run -itd --name ubuntu-test ubuntu /bin/bash
这一长串字符串是容器ID ,对于每个容器是唯一的
查看容器列表
docker ps
类似于shell的ps命令,显示当前运行的容器
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
- created(已创建)
- restarting(重启中)
- running 或 Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
查看容器的标准输出
之前后台运行了一个容器,id是f20f2b74cd3e
执行docker logs [容器ID]/[容器名称]
可以看到该容器在标准输出中输出了什么
可以看到该容器输出了一堆hello
停止容器
docker stop [容器ID]/[容器名]
容器使用
docker -h
查看所有docker命令帮助,过多
也可单独查看例如docker run --help 的命令
启动已经停止的容器
docker start [容器ID]
重启容器
docker restart [容器ID]
进入容器
在使用-d参数开启容器时默认不进入容器,可通过
docker attach [容器ID]
使用该命令如果从这个容器中退出会导致容器停止
例子:docker attach 3bdcab79f93d
或
docker exec [操作参数] [容器ID][要执行的命令]
例子:docker exec -it 3bdcab79f93d /bin/bash
导入导出容器
docker export [ID] > xxx.tar
导出容器快照到本地文件xxx.tar
从文件中导入容器快照
cat ubuntu.tar | docker import - inspiring_williamson
删除容器
docker rm -f [容器ID]
清理所有终止状态的容器
docker container prune
尝试运行一个web应用
docker pull training/webapp
docker run -d -P training/webapp python app.py
- **-d:**让容器在后台运行。
- **-P:**将容器内部使用的网络端口随机映射到我们使用的主机上。
主机的49153端口映射到了容器的5000端口
尝试访问 主机ip:49153
可以通过修改-p的参数设置端口映射
docker run -d -p 5000:5000 training/webapp python app.py
查看端口映射
docker port [容器ID]
查看容器的进程
docker top [容器名]/[容器ID]
检查容器信息
docker inspect [容器ID]
镜像使用
待续
|