docker version #显示docker的版本信息 docker info #显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #帮助命令
帮助文档地址:https://docs.docker.com/engine/reference/commandline/cli/
二、镜像命令docker images #查看所有本地的主机的镜像 eg: [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest b0e0b0a92cf9 2 weeks ago 680MB nginx latest 87a94228f133 3 weeks ago 133MB hello-world latest feb5d9fea6a5 6 weeks ago 13.3kB #解释: REPOSITORY #镜像的仓库源 TAG #镜像的标签 IMAGE ID #镜像的ID CREATED #镜像的创建时间 SIZE #镜像的大小 #可选项(常用) -a #列出所有镜像(默认也会列出所有镜像) -q #只显示镜像的ID #了解更多 docker images --help
docker search 镜像名 #搜索镜像(建议去docker hub的web页面上搜) eg: [root@localhost ~]# docker search mysql NAME DEscriptION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11647 [OK] mariadb MariaDB Server is a high performing open sou… 4433 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 864 [OK] ....................... ....................... #可选项(常用) --filter #根据提供的条件筛选输出 eg: [root@localhost ~]# docker search mysql --filter=STARS=3000 #搜索出来的都是STARS大于3000的 NAME DEscriptION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11647 [OK] mariadb MariaDB Server is a high performing open sou… 4433 [OK] #了解更多 docker search --help
docker pull 镜像名:tag #下载镜像 eg: [root@localhost ~]# docker pull mysql Using default tag: latest #如果不写tag,默认就是latest(最新版) latest: Pulling from library/mysql b380bbd43752: Already exists #分层下载,docker image的核心,联合文件系统 f23cbf2ecc5d: Pull complete 30cfc6c29c0a: Pull complete b38609286cbe: Pull complete 8211d9e66cd6: Pull complete 2313f9eeca4a: Pull complete 7eb487d00da0: Pull complete 4d7421c8152e: Pull complete 77f3d8811a28: Pull complete cce755338cba: Pull complete 69b753046b9f: Pull complete b2e64b0ab53c: Pull complete Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87 #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址 #等价 docker pull mysql 等价于 docker pull docker.io/library/mysql:latest #指定版本下载 docker pull mysql:5.7(这个版本我已经在docker hub查过有这个版本,不能随便写) #了解更多 docker pull --help
docker rmi -f 镜像ID #删除镜像 docker rmi -f 镜像ID #删除指定镜像 docker rmi -f 镜像ID 镜像ID 镜像ID #删除多个镜像 docker rmi -f $(docker images -aq) #删除全部的镜像三、容器命令
docker ps #列出当前正在运行的容器 可选参数(常用): -a #列出正在运行的容器+历史运行过的容器 #了解更多 docker ps --help
docker run [可选参数] 镜像ID 启动后进入的目录 #新建容器并启动 #参数说明(常用) --name="Name" #容器名称,如:tomcat01,tomcat02 用来区分容器 -d #后台方式运行 -it #使用交互方式运行,进入容器查看内容 -p #指定容器的端口,默认什么都不写的情况下,(该 P 是大写)随机指定端口 主机端口:容器端口(常用) eg:-p 8080:8080 启动后进入的目录 eg: /bin/bash 或 /root eg: [root@localhost ~]# docker run -it --name="mysql_01" mysql /bin/bash root@39b60d099519:/# ls bin dev entrypoint.sh home lib64 mnt proc run srv tmp var boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr root@39b60d099519:/# #从容器内退回主机 输入 exit #容器停止并退出 按下 Ctrl+P+Q #容器不停止退出 #了解更多 docker run --help
docker rm 容器ID #删除指定的容器,不能删除正在运行的容器,如果要强制删除,则 rm -f docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -aq|xargs docker rm #删除所有的容器
docker start 容器ID #启动容器 docker restart 容器ID #重启容器 docker stop 容器ID #停止当前正在运行的容器 docker kill 容器ID #强制停止当前容器四、其他常用命令
docker logs -tf --tail 数字 容器ID #显示容器的日志 常用参数: -tf #显示日志 --tail #要显示的日志条数 eg: docker logs -tf --tail 10 容器ID #了解更多 docker log --help
docker top 容器ID #查看容器中进程信息 #了解更多 docker top --help
docker inspect 容器ID #查看镜像的元数据 #了解更多 docker inspect --help
我们通常容器都是使用后台方式运行的,后续在进入容器进行一些操作 方式一: docker exec -it 容器ID 要进入的目录 #进入当前正在运行的容器 eg: docker exec -it 容器ID /bin/bash 方式二: docker attach 容器ID #进入当前正在运行的容器 docker exec #进入容器后开启一个新的终端,可以在里面操作(常用) docker attach #进入容器正在执行的终端,不会启动新的进程 #了解更多 docker exec --help docker attach --help
docker cp 容器ID:容器内路径 目的主机路径 #从容器内拷贝文件到主机上(不常用,知道就行) eg: docker cp 容器ID:/home/test.java /home
docker commit -m="提交的描述信息" -a "作者" 容器ID 新镜像名 tag #提交容器成为一个新镜像(不常用,知道就行)五、容器数据卷
什么是容器数据卷技术? 容器之间有一个数据共享技术,就是Docker容器中的数据会同步到本地主机上,在本地主机上的操作的数据同步到Docker容器中,这就是容器数据卷技术
方式一:直接使用命令挂载 -v docker run -it -v 主机目录:容器内目录 eg: docker run -it -v /home/ceshi:/home centos /bin/bash 当容器启动后,我们可以通过 docker inspect 容器Id 查看Mounts挂载信息 上面这是指定路径挂载! 匿名挂载: -v 容器内路径 eg:docker run -it -v /home centos /bin/bash 具名挂载(推荐使用): -v 卷名:容器内路径 eg:docker run -it -v ceshi:/home centos /bin/bash 所有的docker 容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/... 下 方式二:是使用dockerfile在构建镜像时就挂载,说到dockerfile在说这个 拓展: 通过 ro 和 rw 改变读写权限 ro #只读 rw #可读可写 eg: docker run -it -v ceshi:/home:ro centos /bin/bash docker run -it -v ceshi:/home:rw centos /bin/bash 只要看到ro就说明这个路径只能通过主机来操作,容器内部是无法操作
多个容器实现数据共享 eg: docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name myaql_01 mysql docker run -d -p 3310:3306 --volumes-from myaql_01 -e MYSQL_ROOT_PASSWORD=123456 --name myaql_02 mysql 这个时候,两个mysql实现数据共享



