Docker笔记
安装
# 删除旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 需要的安装包
yum install -y yum-utils
# 设置镜像仓库 下面为阿里云的
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
yum makecache fast
# 安装docker 引擎
yum install docker-ce docker-ce-cli containerd.io
# 启动docker
systemctl start docker
docker version #查看版本是否安装成功
docker run hello-world #运行该镜像 如果没有将会拉去官方镜像
docker images # 查看已有镜像
# 卸载docker
# 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#删除资源
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
/var/liv/docker docker 在宿主机的默认工作路径
配置阿里云镜像加速
登录阿里云 找到容器镜像服务,按照下图命令复制粘贴即可
Docker 的命令
docker info # 显示docker 系统信息
docker stats # 显示docker 所占用的资源
docker --help # 查看帮助
镜像命令
#查看本地主机上的镜像
docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 3 weeks ago 13.3kB
REPOSITORY 仓库源
TAG 标签 一般为版本号
IMAGE ID id
CREATED 创建时间
SIZE 大小
-a 显示全部
-q 只显示id
docker search 镜像名 # 搜索镜像
docker pull 镜像名:[TAG] # 下载镜像
docker rmi 镜像ID # 删除镜像 -f 强制删除
docker rmi 镜像ID1 镜像ID2 镜像ID3 # 删除多个镜像 通过空格
docker rmi -f $(docker images -aq) # 删除全部镜像
容器命令
得先有了镜像才可创建容器
安装一个 centos 容器 docker pull centos
启动容器
docker run [参数] image
# 参数说明
--name="名字" 指定容器名字
-d 后台方式运行
-it 交互方式运行,可进入容器查看内容
-p 指定容器的端口
-p 主机端口:容器端口
-v 宿主机路径:容器内路径 数据卷
查看容器
docker ps 命令
-a #所有+历史运行过的容器
-n=? #最近创建的容器
-q #只显示容器的编号
退出容器
exit #直接停止并退出
Ctrl + P + Q #不停止退出
删除容器
注意 没有i
docker rm 容器id #删除指定的容器
docker rm -f $(docker ps -aq) # 删除所有的容器
启动和停止容器的操作
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
进入当前正在运行的容器
docker exec -it 容器id /bin/bash #进入后开启新的终端 可在里面操作(常用)
docker attach 容器id # 不会启动新的进程 单单只是进入容器的终端
后台启动容器
docker run -d 容器
docker run -d centos
docker ps
# 没有容器的数据 发现centos 停止了
常见的坑 docker 容器使用后台运行 就必须要有一个前台应用,否则将会自动停止 nginx 容器启动后 发现自己没有提供服务 就会立刻停止 就是没有程序了
查看容器内的进程信息
docker top 容器id
查看容器的元数据
docker inspect 容器id
从容器内拷贝文件到宿主机上
docker cp 容器id:容器内路径 宿主机路径
自定义网络
docker network ls #查看所有的docker 网络
docker network create --driver bridge mynet
创建容器通过 `--net` 默认为 --net bridge
docker network connect # 连通网络
容器数据卷
一句话 容器的持久化和同步操作! 容器间 也是可以数据共享的
使用数据卷
docker run -it -v 主机目录:容器目录
指定路径挂载
注意 路径前有/
为绝对路径
匿名挂载
只指定容器内的名字
docker run -d -P --name nginx -v /ect/nginx nginx
通过 docker volume ls 即可查看
为local .....
具名挂载
docker run -d -P --name nginx -v mynginx:/ect/nginx nginx
# mynginx 为卷名
docker volume inspect mynginx 可查看挂载位置
没指定目录 都是在 /var/lib/docker/volumes/卷名/_data
docker volume ls
local mynginx
区别
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名
-v /宿主机路径:容器内路径 #指定路径
拓展
-v 容器内路径:ro rw
ro 表示只读 readonly 只可外部改变 只可宿主机改变
rw 可读写 readwirte 默认rw
例子
安装Mysql
docker run -d -p 3307:3306 --privileged=true -v /data/mysql/log:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -v /opt/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
安装Redis
docker run -d -p 6379:6379 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 redos-server /etc/redis/redis.conf
DockerFile
所有命令大小写不敏感(但推荐大写)
构建镜像命令
docker build -t 自定镜像名 .
例:创建一个属于自己的 centos 镜像
FROM cetnos
MAINTAINER wenhao<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash
通过 docker history 镜像 ID 可以查看 镜像的变更历史
CMD 和 ENTRYPOINT 区别
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 直接拼接的形
发布镜像
Commit 镜像
# 命令和git原理很像
docker commit -m="描述信息" -a="作者" 容器id 自定镜像名:[TAG]
即可在本地生成一个属于自己的镜像文件
发布
1、登录Docker Hub 注册一个账号
2、docker login -u wenhao
3、输入密码
[root@localhost ~]# docker login -u wenhao
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
[root@localhost ~]# docker login -u wenhao
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
4、docker push 镜像 ID 镜像名:[Tag]
5、有可能提交不上 需要修改下属 docker tag 镜像名
部署到阿里云容器服务
1、登录阿里云,在容器镜像服务 创建个人实例
2、创建命名空间,不然无法创建镜像仓库,且 只可创建 3 个
3、创建镜像仓库,然后选择本地仓库
4、点击管理可查看基本信息,操作指南写的非常详细