Docker- 常用命令教程&安装mysql

目录

Linux安装Docker

Docker常用命令

项目开发常用命令汇总:

容器

镜像

Docker run 命令

Docker 安装mysql

配置Docker国内镜像


Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 (<仓库名>:<标签>)就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

Linux安装Docker

查看系统版本信息

扫描二维码关注公众号,回复: 13117978 查看本文章
lsb_release -a

安装Docker

yum -y install docker

-y表示不询问安装,直到安装成功,安装完后查看安装列表

yum list installed | grep docker

启动docker

systemctl start docker

查看docker服务状态

systemctl status docker
设置开机启动
systemctl enable docker.service

Docker常用命令

项目开发常用命令汇总:

制作镜像
docker build -t test/test-registry .

创建并启动容器

docker run --name test-registry -d -p 1001:1001 test/test-registry

查看容器日志

docker logs 参数 容器id

  • -f follow 表示实时显示日志
  • -t timestamp 表示显示时间戳
  • --tail=n 或 --tail n 表示显示末尾n行

例如:
docker logs -f --tail 200 ContainerId,表示实时加载日志信息,并且仅显示最后200行。

查看容器IP地址

docker inspect 容器ID

进入容器

docker exec -it 775c7c9ee1e1 /bin/bash

Docker日期同步

在Dockerfile添加:

# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai    
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone

Docker导出和导入
# 导出镜像
docker save -o nginx.tar nginx:1.14
 
# 导入镜像,nginx.tar就是刚才导出的包
docker load -i nginx.tar

  • nginx.tar是导出tar包的文件名,
  • nginx:1.14是仓库中的镜像名称,这里也可以直接使用镜像ID

容器

获取镜像
docker pull ubuntu

启动容器
docker run -it ubuntu /bin/bash

参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入
exit

查看所有的容器
docker ps -a

停止重启一个容器
docker stop <容器 ID>
docker restart <容器 ID>
强制删除容器(-f)
docker rm -f <容器 ID>

镜像

列出镜像列表
docker images

列出镜像:使用关键字过滤(部署十分有用)

docker images|grep misc

查找镜像、拖取镜像、删除镜像
docker search httpd
docker pull httpd
docker rmi hello-world

构建镜像
使用命令docker build,从零开始来创建一个新的镜像。为此,我们需要创建一个Dockerfile文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

指令说明:

  • 每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
  • FROM:指定使用哪个镜像源
  • RUN:指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

设置镜像标签
docker tag <镜像ID> 镜像源名:标签名
docker tag 860c279d2fec runoob/centos:dev

Docker run 命令

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镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/# 

Docker 安装mysql

1. docker pull mysql:latest

2. docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

参数说明:

  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
  • --name 指定容器名称
  • mysql ImageId

3. 进入容器,修改root用户允许远程访问
docker exec -it mysql-test bash

4. 登录到Docker mysql
mysql -uroot -p

5. 修改远程权限

> use mysql;
> select host,user from user;
> alter user 'root'@'%' identified with mysql_native_password by '123456xx';
> flush privileges;

6. 查看docker日志
docker logs -f --tail 10 a4dac74d48f7

  • 10 表示查看10行
  • a4dac74d48f7 容器ID

配置Docker国内镜像

1. vi /etc/docker/daemon.json

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

2. 重启Docker

systemctl daemon-reload

systemctl restart docker

3. 查看Docker配置是否生效

docker info

猜你喜欢

转载自blog.csdn.net/qq_26878363/article/details/110496274