本文使用的Docker是社区版,版本是19.03.2,这个版本是本文写时的最新版。
首先总结下容器和镜像的概念:
容器是用镜像创建的,一个镜像可以创建多个容器。
一般来说,一个容器就是一个应用,把应用在容器中运行称之为应用容器化。
删除镜像的时候,如果由这个镜像创建的容器还存在则会删除失败。
容器和镜像的关系就是:容器是镜像的实例化的可运行实体。
以下是我的练习内容:
1. 拉取镜像
docker pull centos:latest
或者按照版本拉取:docker pull centos:7.6
2. 查看所有已经拉取的镜像
docker images
3. 通过镜像启动容器并且进入其中
docker container run -it 0f3e07c0138f /bin/bash
0f3e07c0138f是你镜像的ID,通过"docker images"命令查看获得
4. 退出容器返回到主机
使用Ctrl-PQ组合键(这只是退出命令界面而已,不会杀死容器进程。)
5. 查询下当前运行中的容器情况
docker container ls
6. 连接到运行中的容器
docker container exec -it dreamy_cartwright bash
dreamy_cartwright是容器的名字,通过"docker container ls"命令查看获得
7. 销毁容器
停止容器运行:docker container stop dreamy_cartwright
删除容器:docker container rm dreamy_cartwright
查看所有状态的容器(包括停止状态的容器):docker container ls -a
没有查到说明已经被删除了
7.1 删除镜像
删除刚刚拉取的镜像:docker image rm 0f3e07c0138f
0f3e07c0138f是你镜像的ID,通过"docker images"命令查看获得
注意:
只有没有被容器使用的镜像才能被删除
也可直接删除所有没被容器使用的镜像:docker image prune -a
8. 上传并运行一个nodejs工程
上传文件首先需要安装:yum install lrzsz
如果出现是否需要安装请键盘输入Y然后回车
创建目录:mkdir -p /home/demo/nodejs-docker
下载安装SecureCRT,在SecureCRT中连接后输入:cd /home/demo/nodejs-docker
上传文件输入命令:rz
然后双击这个文件夹再点击确定,上传成功后可以使用命令查看:ls -a
安装zip解压缩软件:yum install unzip zip
执行解压命令:unzip psweb-master.zip
删除掉之前的zip文件:rm -f psweb-master.zip
备注:
nodejs工程文件及SecureCRT下载地址:https://pan.baidu.com/s/1NprxpW5LIHySWTijMByx6g 提取码:ju8e
双击SecureCRTPortable.exe可运行SecureCRT。
这个部分其实只有rz这个命令需要用到SecureCRT,其他部分我都用腾讯云自带的WebShell了。
9. 在Docker的容器中运行nodejs-demo
切换到Dockerfile所在的目录:cd /home/demo/nodejs-docker/psweb-master
打包成Docker镜像:docker image build -t test:latest .
然后使用docker image ls命令查看到有test代表就是成功了
运行镜像:docker container run -d --name web1 --publish 8080:8080 test:latest
命令行回到根目录:cd ~
10. 运行一个容器,后台运行,不进入其中
docker container run -d --name webserver -p 80:8080 \
然后再输入:nigelpoulton/pluralsight-docker-ci
-d代表后台运行
11. 删除所有容器和镜像
容器:docker container rm $(docker contaiiner ls -aq) -f
镜像:docker image rm $(docker image ls -q) -f
12. 查看容器的配置信息
docker container inspect 容器ID
13. 关于Dockerfile
这个文件包含了对这个应用的描述,并且指导Docker完成构建。
直接看Dockerfile文件里面的英文注释,那个里面写的比较清楚了。
总结下这些关键字代表的含义
FROM:应用运行在什么镜像上
LABEL:这个容器的负责人
RUN:在镜像中执行的命令
COPY:将代码复制到镜像的某个位置中
EXPOSE:记录应用使用的端口号
ENTRYPOINT:容器启动后默认运行的程序
原文地址:https://www.cnblogs.com/cluyun/p/11623016.html