Open laclys opened 3 years ago
dockerhub
)
backup.tar
)docker image pull xxx 拉取镜像
xxx
docker image pull nginx:1.20.0 指定版本 拉取
nginx:1.20.0
docker image pull quay.io/bitnami/nginx
Quay
上拉取镜像docker image ls 查看镜像
docker image inspect
显示镜像更多信息 docker image rm
删除镜像 (如果有正在使用的容器是无法删除的 必须docker container rm 删除了容器才可以)
docker image save nginx<: version> -o nginx.image 导出
docker image load -i ./nginx.image 导入
Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.
hello.py
print('hello docker!')
Dockerfile
FROM ubuntu:21.04
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
ADD hello.py /
CMD ["python3", "/hello.py"]
docker image build -t hello . 构建名为
hello
的构建(-t是tag的意思)
➜ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hello latest 1a963417de9a 43 seconds ago 206MB
构建成功
➜ docker run -it hello
hello docker!
执行成功!
docker提供了一个方法直接 通过一个container
创建一个新的image
docker container commit
<REPOSITORY:[:tag]>
docker
dockerfile
& index.html
FROM nginx
COPY ./index.html /usr/share/nginx/html/index.html
基于nginx
这个镜像。将文件夹下的index.html
拷贝到镜像container
下的 /usr/share/nginx/html/
下面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Docker</title>
</head>
<body>
Test
</body>
</html>
这里随便写了一个(用来替换默认的nginx欢迎页)
docker image build -t dockerTest .
➜ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-test latest 65a48f14f1c1 20 seconds ago 133MB
docker-test
已经生成
docker container run -d -p 80:80 docker-test 运行容器指定端口80:80
成功!
我这边自己在开发的这个项目wukong尝试简单部署一下
git clone git@github.com:laclys/wukong.git 克隆这个项目
npm run build or yarn run build 构建项目,构建成功生成
docs
文件夹打包完成后进入根目录新建成一个Dockerfile文件在里面写入
FROM nginx MAINTAINER Lac COPY default.conf /etc/nginx/conf.d/default.conf COPY docs/ /usr/share/nginx/html/
简单说明一下 基于
nginx
,署名:自己的名字 。拷贝nginx
配置文件以及docs
下的内容到nignx
镜像
default.conf
文件
server {
listen 80;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html;
}
}
(再简单不过的default.conf
文件)
docker image build -t wukong-docker . docker container run -d -p 80:80 wukong-docker
~ docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48ad12f88951 wukong-docker "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nervous_aryabhata
可以看到容器在80端口成功运行了
Docker Note
container
Linux Container(2008)
标准化
docker != container
Image VS Container
Image
read-only
文件Container
获取
basic
tips
-f
强制)容器两种模式attached和detached模式
(win不是完整的
attached
模式,ctrl+c
不能把容器停掉)detached模式 > docker container run -d -p 80:80 nginx (后台运行)
(* 创建容器尽量使用
detached
模式)容器交互
eg:
*
exit
退出Container vs VM
容器并不是mini的虚拟机:container其实就是进程。容器中的进程被限制了对CPU内存等资源的访问。当进程停止后,容器就退出
docker container run
在本地查找是否有nginx这个image镜像,但是没有发现
去远程的image registry查找nginx镜像(默认的registry是Docker Hub)
下载最新版本的nginx镜像 (nginx:latest 默认)
基于nginx镜像来创建一个新的容器,并且准备运行
docker engine分配给这个容器一个虚拟IP地址
在宿主机上打开80端口并把容器的80端口转发到宿主机上
启动容器,运行指定的命令(这里是一个shell脚本去启动nginx)