Docker 入门

臭大佬 2020-07-29 09:29:26 1764
Docker 
简介 Docker 入门

什么是 Docker

启动

sudo systemctl start docker
sudo service docker start

重启

sudo service docker restart

查看状态

sudo systemctl status docker
sudo service docker status

停止

sudo systemctl stop docker
sudo service docker stop

Docker 能解决什么问题

Docker 操作

镜像操作

列出镜像列表

docker images

拉取镜像

docker pull gallopingvijay/mylinux:v1.0.0

提交镜像修改信息

docker commit -m'增加了gbd' -a="vijay" mylinux gallopingvijay/mylinux:v1.0.0

各个参数说明:
-m: 提交的描述信息
-a: 指定镜像作者
mylinux:容器名称,也可以为容器 ID
gallopingvijay/mylinux:v
1.0.0: 指定要创建的目标镜像名

推送镜像

docker push gallopingvijay/mylinux:v1.0.0

镜像详情

docker image inspect gallopingvijay/mylinux:v1.0.0

备份镜像

docker save -o backup.tar myimage

myimage 镜像名称,也可以带上标签如:myimage:test
backup.tar 打包的包名称

加载tar文件中的镜像

加载tar文件中的镜像,将其添加到本地的镜像仓库中。(如果本地存在同名同标签镜像会被覆盖)

docker load -i backup.tar

创建一个镜像标签

docker tag <镜像名称>:<旧标签> <新标签>

其中,<镜像名称>是要标记的镜像的名称,<旧标签>是要为该镜像指定的旧标签,<新标签>是要为该镜像指定的新标签。

通过使用docker tag命令,可以为镜像创建多个不同的标签,以便在不同的场景中使用不同的标签来引用同一个镜像。这样可以方便地管理和使用镜像。

删除镜像

docker rmi gallopingvijay/mylinux:v1.0.0
删除全部镜像
docker rmi $(docker images -q)
强制删除全部镜像
docker rmi -f $(docker images -q)
删除tag为none的镜像
docker images|grep none|awk '{print $3}'|xargs docker rmi

容器操作

查看容器

 // -a表示所有容器,不带-a表示运行中的
 docker ps -a

运行容器

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
—name=”nginx-lb”: 为容器指定一个名称;
—dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
—dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=”ritchie”: 设置环境变量;
—env-file=[]: 从指定文件读入环境变量;
—cpuset=”0-2” or —cpuset=”0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
—net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
—link=[]: 添加链接到另一个容器;
—expose=[]: 开放一个端口或一组端口;
—volume , -v: 绑定一个卷

实例:

// 启动一个容器
docker run -t -i gallopingvijay/mylinux:v1.0.0 /bin/bash
// 使用镜像 gallopingvijay/mylinux:v1.0.0,以后台模式启动一个容器,将容器的 80 端口映射到主机的 12345 端口,主机的目录 D:\docker\www映射到容器的 /www/wwwroot/,并指定名称为 mylinux
docker run -it -d -v D:\docker\www:/www/wwwroot/ -p 12345:80 -p 1111:8888 --name="mylinux" gallopingvijay/mylinux:v1.0.0

// 常用端口映射
docker run -it -d -v D:\wwwroot:/www/wwwroot/ -p 12345:80 -p 8887:8888 -p 887:888 -p 3305:3306 -p 442:443 -p 2222:22 -p 2221:21 -p 8081:8080 -p 9557:9507 --name="mylinux" gallopingvijay/mylinux:v1.0.0

再来一个:

// 可以看出,可以绑定多个 -v 等参数
docker run -d -v E:\wnmp\mysql-log:/var/log/mysql/ -v E:\wnmp\mysql-conf:/etc/mysql/ -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.6

启动容器

// 后面跟名称和ID都可以,下面的也是一样的
docker start mylinux

查看容器绑定和映射的端口及Ip地址

docker port mylinux
docker inspect mylinux|grep IPAddress

进入容器

docker exec -it xxx /bin/sh
docker attach 1e560fca3906

attach 命令如果exit,会导致容器的停止

停止一个容器

docker stop <容器 ID>

重启容器

docker restart 1e560fca3906

删除容器

docker rm -f 1e560fca3906

查看容器的日志

看实时日志 1e560fca3906 也可以是容器名称

docker logs 1e560fca3906 -f

启动所有镜像

docker start $(docker ps -a -q)

stop停止所有容器

docker stop $(docker ps -a -q)

remove删除所有容器

docker rm $(docker ps -a -q)

docker-compose 命令

构建(重新构建)

docker-compose build

启动容器

docker-compose up

后台启动并运行

docker-compose up -d

查看容器列表

docker-compose ps

查看日志(-f 一直监听)

docker-compose logs

关闭容器

docker-compose stop

启动容器

docker-compose start

重启容器

docker-compose restart

删除容器

docker-compose rm

进入容器

docker-compose exec xxx sh

xxx是容器名称

docker-compose 命令说明

Docker与Docker-Compose详解

docker 容器内文件复制到本地

查看容器id

dockers ps -a

复制容器内文件到本地(容器ID也可以是容器名)

dockers cp 容器ID:目标路径 本地文件路径

复制本地文件到容器目录

dockers cp 本地文件路径 容器ID:目标路径