Docker日常使用方式
前提
在安装docker之前,建议你设置系统的国内镜像源先哦,很快~嗯,快。
阿里云镜像源:https://developer.aliyun.com/mirror/
安装
安装docker
下面都是官网地址:
ubuntu: https://docs.docker.com/engine/install/ubuntu/
centos:https://docs.docker.com/engine/install/centos/
其他版本就是url后面的几个英文不同。
开机启动
sudo systemctl enable docker.service
设置国内镜像
docker中国区的镜像:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里云:https://cr.console.aliyun.com/ 点击左侧栏有个镜像加速地址,就可以看到你的加速镜像地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速镜像地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装docker-compose(用到才装)
官网地址:https://docs.docker.com/compose/install/
设置.docker文件权限
docker安装好后,会在当前用户的家目录下生成.docker
文件,该文件不出意外的话是属于root用户和root组,毕竟要sudo下载,使用ll
命令查看一下。
drwx------ 2 root root 4096 Jun 5 11:26 .docker/
假设我的用户和组都为vagrant
,那么命令如下:
sudo chown -R vagrant:vagrant 当前用户的家目录/.docker
上面的vagrant:vagrant
对应的是用户名:用户组
,一般情况下现在使用docker指令则不需要在前面加sudo
了(去你丫的sudo)
安装步骤已完成
镜像?容器?
什么是镜像?什么是容器呐?可以这么类比:镜像就是一个模板;容器则是根据模板的实现。在代码中,你也可以想成接口(镜像)与实现类(容器)。
docker镜像中心
地址:https://hub.docker.com/,在这里你可以找到你所需要的镜像,你可以搜mysql、redis、nginx等等,可以查到有什么版本、怎么运行、有什么配置,有什么环境变量可以设置(比如在mysql你需要设置他的root密码)等等信息。
指令集
以mysql为例
下载镜像
使用docker pull
命令
docker pull mysql:8.0.20
查看所有镜像,可以看到你刚下载的mysql镜像
docker images
创建并运行容器
创建并运行你的mysql容器,我使用一条比较长的命令来讲解:
sudo docker run --name mysql_1 -p 3306:3306 -v /var/mapping/mysql/conf.d:/etc/mysql/conf.d -v /var/mapping/mysql_1/lib:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.20 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4
指令格式 docker run [OPTIONS] IMAGE [COMMAND]
docker run:会创建并运行容器
-p:映射端口 3306:3306 就是把容器的3306端口映射到宿主机的3306端口, 格式(宿主机端口:容器端口)
-v:映射数据卷,即映射文件,格式(宿主机数据卷:容器数据卷)
-e:设置环境变量,如设置root的初始密码 MYSQL_ROOT_PASSWORD,可以在docker的镜像中心查看有哪些环境变量
-d:指定镜像
--default-authentication-plugin=mysql_native_password
和--character-set-server=utf8mb4
属于command参数,需要设置在镜像后面。
--default-authentication-plugin=mysql_native_password
指的是修改认证的加密方式,mysql8.0后的加密方式改了,导致navicat那些数据库管理工具连不上。所以这里修改加密方式为mysql_native_password
--character-set-server=utf8mb4
则是设置数据库的编码方式为utf8mb4。
当然还有很多的command指定都可以在docker hub镜像中心查看。
自动运行
当docker启动的时候,容器也自动启动,有两种方式
1.创建容器时指定 --restart=always
docker run --restart=always -d mysql:8.0.20
2.容器已经创建好了,使用docker update
修改容器,CONTAINER
可以是容器id,也可以是容器名,docker ps
可以命令查看
docker update --restart=always [CONTAINER]
常用指令
首先说明一下:CONTAINER
可以是容器ID,也可以是容器名,IMAGE
可以是镜像ID,也可以是 镜像名:tag
查看所有镜像
docker images
查看所有容器,包括没启动的(加 -a 选项)
docker ps -a
启动容器,停止容器
docker start [CONTAINER]
docker start CONTAINER1 CONTAINER2 # 启动多个容器
docker stop [CONTAINER]
docker stop CONTAINER1 CONTAINER2 # 停止多个容器
进入容器
docker exec -it [CONTAINER] bash
在宿主机执行容器内的命令,mysqldump是mysql_1容器内的指令
docker exec -it mysql_1 mysqldump ...
删除容器
docker rm [CONTAINER]
docker rm CONTAINER1 CONTAINER2 # 删除多个容器
删除镜像
docker rmi [IMAGE]
docker rmi IMAGE1 IMAGE2 # 删除多个镜像
docker镜像仓库
当你在公司修改了某个容器之后,想在家也使用这个容器。那么可以把容器打包成镜像,提交到docker仓库当中。
我是在aliyun上创建了docker镜像仓库:https://cr.console.aliyun.com/
首先把你的容器打包成镜像,这个是把我的mysql_1
容器打包成镜像my_mysql_1
,tag
为latet
。
docker commit mysql_1 my_mysql_1:latest
打包完后执行指令docker images
,查看镜像是否存在。
提交到镜像仓库
1.首先需要创建命名空间
2.创建你的镜像仓库
3.登录并提交到仓库
点击所需提交到镜像仓库的管理按钮,可以查看到以下界面
跟着这里面的步骤执行就可以提交到docker镜像仓库了。就介么简单。
总结
以上便是docker比较常用的操作。ok,拜拜你了~。
个人博客网址: https://colablog.cn/
如果我的文章帮助到您,可以关注我的微信公众号,第一时间分享文章给您
Docker日常使用方式的更多相关文章
- docker日常使用指南
docker日常使用指南 目录 docker日常使用指南 前言 1.基础知识 1.1 docker是什么 1.2 与虚拟机(VM)的区别 1.3 镜像与容器 2.安装 2.1 在线安装 2.2 离线安 ...
- CentOS环境Docker安装教程(官方推荐的docker三种方式安装)
CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...
- Docker 的部署方式
在使用 docker run 命令启动 Docker 容器时,如果需要进行端口映射.目录挂载.网络信息等配置,整条命令将变得非常长,并且由于是一条 shell 命令,修改和复用也不方便.我们在大规模部 ...
- Docker Daemon 连接方式详解
前言 在 Docker 常用详解指令 一文中粗粗提了一下, Docker 是分为客户端和服务端两部分的, 本文将介绍客户端是如何连接服务端的. 连接方式 1. UNIX域套接字 默认就是这种方式, 会 ...
- Docker客户端连接Docker Daemon的方式
Docker为C/S架构,服务端为docker daemon,客户端为docker.service,支持本地unix socket域套接字通信与远程socket通信. 默认为本地unix socket ...
- SpringBoot打包到docker(idea+传统方式)
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 1. 方式1.通过idea 远程发布 1.1 修改docker.service文件 1. 进入服务器 2. 修改ExecStart行为下面内容 ...
- 简单docker镜像修改方式
• 创建Dockerfile,文件内容如下: FROM nps:v1.0.1 ENTRYPOINT ["/usr/bin/init.sh"] • 启动基础镜像:docker run ...
- Docker两种方式进入后台运行的容器
1.在启动容器的时候,有时候我们加了参数-d,这时容器自动进入后台运行.如果我们要进入容器,该怎么办?通常使用docker attach命令和nsenter工具. 2.docker attach是Do ...
- 如何让docker以daemon方式运行/bin/bash
本文转自:https://segmentfault.com/q/1010000000424935 问题: 我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着 ...
随机推荐
- 题解 洛谷 P3185 【[HNOI2007]分裂游戏】
首先可以发现,当所有巧克力豆在最后一个瓶子中时,就无法再操作了,此时为必败状态. 注意到,对于每个瓶子里的巧克力豆,是可以在模\(2\)的意义下去考虑的,因为后手可以模仿先手的操作,所以就将巧克力豆个 ...
- Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法
1.获取不带扩展名的文件名方法,利用ChangeFileExt函数修改传入参数的扩展为空,并不会对文件本身产生变更. ChangeFileExt(ExtractFileName('D:\KK\Test ...
- vue-resource(搬运)
一.vue-resource特点vue-resource插件具有以下特点: 1. 体积小vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比 ...
- 点format方式输出星号字典的值是键
dic = {'a':123,'b':456} print("{0}:{1}".format(*dic)) a:b 2020-05-08
- TCP 服务器端
""" 建立tcp服务器 绑定本地服务器信息(ip地址,端口号) 进行监听 获取监听数据(监听到的客户端和地址) 使用监听到的客户端client_socket获取数据 输 ...
- Python os.rename() 方法
概述 os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError.高佣联盟 www.cgewang.com 语法 rename()方法语 ...
- PHP str_rot13() 函数
实例 编码并解码字符串: <?php高佣联盟 www.cgewang.comecho str_rot13("Hello World");echo "<br&g ...
- Metal 线宽如何选择
https://www.cnblogs.com/yeungchie/ Metal 线宽如何选择 假如Metal是为了传输电流,则主要需要从解决和减小它的寄生电阻.寄生电容方面多做考虑.寄生电感一般忽略 ...
- C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!
前几天有个同学加我QQ私聊我说他们老师布置了一个贪吃蛇,他不知道怎么写所以来找我求解,我给他简单讲解了思路和一些难点之后他也能够自己独立将项目完成了!考虑到更多同学可能有贪吃蛇上的问题,今天有时间就来 ...
- 2019 7 8 HL 模拟赛
今天 很不爽 昨天晚上没有睡好觉 大约2点才睡着吧 反正翻来覆去睡不着 不知道为什么可能可行流 或者可行费用流并没有深刻理解 .我不会写 让我心情非常的焦躁. 大凶 顺理成章的被3位强者吊着锤(妈呀我 ...