Docker基础
零、Docker软件
1、docker本质上是C/S架构的,其软件版本分docker-ce(社区版)、docker-ee(企业版)
2、docker镜像是分层构建,docker registry中,含有若干个repository(镜像的仓库),每个repository含有若干镜像,每个镜像用tag(标签)区分,意味着每个tag代表一个镜像。不指定tag的话,默认tag是latest
3、docker的主配置文件是/etc/docker/deamon.json。配置docker镜像加速下载,示例文件:
{
"registry-mirrors": ["https://kfwkfulq.mirror.aliyuncs.com","https://2lqq34jg.mirror.aliyuncs.com","https://pee6w651.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com"],
"dns": ["8.8.8.8","8.8.4.4"]
}4、docker version,查看docker版本
docker info,查看docker的更多信息
一、镜像
1、查看镜像
docker images
2、搜索镜像
docker search xxx
3、拉取镜像
docker pull xxx
4、删除镜像
docker rmi xxx
二、容器
1、启动(新建)容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
其中:
[options]常用选项有:
-d——等于“--detach”,让启动的容器在后台持续运行。官方的解释是容器进入”分离模式“,以与前台交互式区别。
-i——等于“--interactive”,交互式运行。
-t——等于“--tty”,附加一个tty终端。
-p——等于“--publish list”,映射容器的端口,一对一映射方式。用法是:“-p 宿主机端口:容器端口”
-v——等于“--volume list”,映射目录。用法同“-p",宿主机目录在前,容器目录在后。
--privileged——提权。使用该参数,容器内的root拥有真正的root权限。否则,容器内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。用法:”--privileged=true“。
-P——等于”--publish-all“。区别于”-p“,它是随机映射端口。
-e——等于”--env list“。指定容器内的环境变量。环境变量的值可以是宿主机的某些参数值。
-h——等于”--hostname string“。指定容器的主机名。
-u——等于”--user string“。指定容器使用的宿主机用户或者UID。用法格式:<name|uid>[:<group|gid>]
[ user | user:group | uid | uid:gid | user:gid | uid:group ]
--name——给启动的容器指定一个名字,用法“--name=xxxx”
2、查看容器
docker ps [OPTIONS]
docker container ls
常用的[options]有:
-q——静默式显示输出
-a——显示所有容器
3、停止和启动(已创建)容器
停止:docker stop [OPTIONS] CONTAINER [CONTAINER...]
启动:docker start [OPTIONS] CONTAINER [CONTAINER...]
其中,CONTAINER都可以是容器指定的名字,或者容器ID。
4、容器的文件拷贝
用法:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
Options:
-a, --archive Archive mode (copy all uid/gid information)压缩模式
-L, --follow-link Always follow symbol link in SRC_PATH
5、查看容器的信息
可以查看容器的IP地址
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
6、删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
常用参数:
-f——强制删除
ubuntu下,将正常停止的容器删除。
sudo docker rm $(sudo docker ps -a |grep 'Exited'|cut -d " " -f1)
7、查看容器应用程序日志
docker logs [OPTIONS]container_name
8、进入容器查看程序运行状况
docker exec [OPTIONS] container_name COMMAND [ARG...]
例如:docker exec -it redis1 /bin/sh
三、镜像的定制和推送
1、注册dockerhub——比如叫lmydocker
2、将运行中的,自己修改定制过的容器,commit提交成镜像
docker commit -a="ivker_lee" -m="this is first push."
二、打包镜像和推送上传
1、注册dockerhub账号。
2、将定制修改过的容器,用docker commit打包成镜像。这里是本地镜像。格式如下:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数有:-a——定义作者
-m——定义comment内容
实例: sudo docker commit 8b131d6cd7c6 ivker_lee/jd_cookie:1.0
3、将镜像tag标记。
docker tag 本地仓库/镜像名:tag标记号 dockerhub仓库/镜像名:tag标记号
实例:docker tag ivker_lee/jd_cookie:1.0 lvkerdocker/jd_cookie:1.0
docker images REPOSITORY TAG IMAGE ID CREATED SIZE ivker_lee/jd_cookie 1.0 cf9bd34d690b 27 minutes ago 41.3MB lvkerdocker/jd_cookie 1.0 cf9bd34d690b 27 minutes ago 41.3MB redis latest 7614ae9453d1 3 weeks ago 113MB nginx latest f6987c8d6ed5 3 weeks ago 141MB scjtqs/jd_cookie latest b4c530736dec 3 weeks ago 41.3MB
4、推送上传
docker push dockerhub仓库/镜像名:tag标记号
实例:docker push lvkerdocker/jd_cookie
四、dockerfile详解
通过dockerfile创建镜像
1、写dockerfile
2、docker build -f 绝对路径/dockerfile文件名 -t 给镜像打标识 存储路径


