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

<br/>

四、dockerfile详解

通过dockerfile创建镜像

1、写dockerfile

2、docker build -f 绝对路径/dockerfile文件名   -t  给镜像打标识   存储路径

2021 12月 28