docker-01-docker实战

centos7以及以上+内核3.10

官网:https://www.docker.com/

文档地址:https://docs.docker.com/

帮助文档地址:https://docs.docker.com/reference/

1-docker的安装


# 1.卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 2.需要的安装包
yum install -y yum-utils

# 3.设置镜像仓库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo #国外地址
yum-config-manager \
       --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云

# 更新yum软件包索引
yum makecache fast

# 4.安装docker docker-ce社区版   ee是企业版
yum install docker-ce docker-ce-cli containerd.io

# 5.启动Docker
systemctl start docker

# 6.查看docker版本
docker version

# 7.hello-world
docker run hello-world

# 8.查看下载的hello-world镜像
docker images

#设置为开机启动
[root@docker01 ~]# systemctl start docker
[root@docker01 ~]# systemctl enable docker

2-docker的卸载

#了解卸载docker
# 1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2.删除资源
rm -rf /var/lib/docker  #docker默认工作路径
rm -rf /var/lib/containerd

3-阿里云镜像加速

# 1.第一步
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://po1qcvly.mirror.aliyuncs.com"]
}
EOF
# 2.第二步
sudo systemctl daemon-reload
# 3.第三步
sudo systemctl restart docker

4-docker常用命令

docker version        #显示docker的版本信息
docker info         #显示docker的系统信息 包括镜像和容器的数量
docker 命令 --help   #万能命令  eg: docker images --help


[root@localhost /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB
#解释
REPOSITORY        镜像的仓库源
TAG                镜像的标签
IMAGE ID         镜像的id
CREATED            镜像的创建时间
SIZE            镜像的大小
  -a, --all     列出所有的镜像
  -q, --quiet   只显示镜像的Id

4.1-镜像命令

#搜索mysql镜像

docker search mysql

#可选项,通过搜藏来过滤

--filter =stars=3000 #搜索出来的镜像就是stars大于3000

docker search mysql --filter =stars=3000

#下载镜像

docker pull 镜像名[:tag]版本默认最新版

[root@localhost /]# docker pull mysql

Using default tag: latest #如果不写tag 默认就是latest

latest: Pulling from library/mysql

b4d181a07f80: Pull complete #分层下载,docker iamge的核心 联合文件系统

a462b60610f5: Pull complete

578fafb77ab8: Pull complete

2f40c47d0626: Pull complete

Digest: sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b#签名

Status: Downloaded newer image for mysql:latest

docker.io/library/mysql:latest #真实地址

#等价于

docker pull mysql === docker pull docker.io/library/mysql:latest

#指定版本下载

[root@localhost /]# docker pull mysql:5.7

#删除指定ID镜像

docker rmi -f 镜像ID

#删除指定ID镜像 (多个)

docker rmi -f 镜像ID 镜像ID 镜像ID 镜像ID

#递归删除所有镜像(意思是全部镜像的id)

docker rmi -f $(docker images -aq)

4.2-容器命令

#列出当前在运行的容器

[root@localhost /]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

#查看曾经运行过的容器

[root@localhost /]# docker ps -a

#################删除容器

docker rm 容器id #删除指定容器,不能删除正在运行的容器

docker rm -f $(docker ps -aq) #删除所有容器【方式1】

docker ps -a -q|xargs docker rm #删除所有容器【方式2】

#################启动和停止容器

docker start 容器id #启动容器

docker restart 容器id #重启动容器

docker stop 容器id #停止当前正在运行动容器

docker kill 容器id #强制停止当前容器

docker inspect 容器id #查看容器的信息

#显示日志-tf #显示日志 f带上时间--tail number #要显示的日志条数

docker logs -tf --tail 10 容器id

5-容器数据卷

为了实现数据持久化,使容器之间可以共享数据。可以将容器内的目录,挂载到宿主机上或其他容器内,实现同步和共享的操作。即使将容器删除,挂载到本地的数据卷也不会丢失。

6-docker实战

6.1-docker安装mysql5.7

[root@localhost ~]# docker pull mysql:5.7

5.7: Pulling from library/mysql

b380bbd43752: Pull complete

# --name指定容器名字

#-v目录挂载 (冒号左边是宿主机目录,右边是容器目录)

#-p指定端口映射 (冒号左边是宿主机端口,右边是容器内部端口)

#-e设置mysql参数 (e:环境变量)

#-d后台运行

#mysql:5.7镜像名称

[root@localhost ~]# docker run -p 3306:3306 --name mysql \

> -v /ycmydata/mysql57:/var/log/mysql \

> -v /ycmylogs/mysql57:/var/lib/mysql \

> -v /ycmyconfig/mysql57:/etc/mysql \

> -e MYSQL_ROOT_PASSWORD=root \

> -d mysql:5.7

af8e283c81fc9fa13c822bfa1c68997e2b7d5ce286949564469f701896569a87

[root@localhost ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

af8e283c81fc mysql:5.7 "docker-entrypoint.s…" 55 seconds ago Up 54 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql

###在ycmyconfig/mysql57创建文件my.cnf

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

skip-name-resolve

# 重新启动mysql

[root@localhost ~]# docker restart mysql

mysql

# 配置mysql开机启动

[root@localhost ~]# docker update mysql --restart=always

6.2-docker安装redis6.2

##创建目录/ycmydata/redis62 /ycmylogs/redis62 /ycmyconfig/redis62

##如果直接挂载的话docker会以为挂载的是一个目录,所以我们先创建一个文件然后再挂载,在虚拟机中

[root@localhost ~]# touch /ycmyconfig/redis62/redis.conf

[root@localhost ~]# docker pull redis:6.2

6.2: Pulling from library/redis

7d63c13d9b9b: Pull complete

[root@localhost ~]# docker run -p 6379:6379 --name redis \

> -v /ycmydata/redis62:/data \

> -v /ycmyconfig/redis62/redis.conf:/etc/redis/redis.conf \

> -d redis:6.2 redis-server /etc/redis/redis.conf

63ca4766a5912699736175c937bee9103f178bf790e4efe6301e8903aa6d59c6

[root@localhost ~]#

##编辑外部挂在的配置文件/ycmyconfig/redis62/redis.conf 设置持久化

[root@localhost redis62]# vi redis.conf

# 插入下面内容

appendonly yes

保存

##修改配置文件后,重新启动redis

[root@localhost ~]# docker restart redis

redis

##设置docker容器启动后启动redis

[root@localhost ~]# docker update redis --restart=always

redis

6.3-docker安装nginx1.10

[root@localhost ~]# docker pull nginx:1.10

1.10: Pulling from library/nginx

6d827a3ef358: Pull complete

1e3e18a64ea9: Pull complete

556c62bb43ac: Pull complete

Digest: sha256:6202beb06ea61f44179e02ca965e8e13b961d12640101fca213efbfd145d7575

Status: Downloaded newer image for nginx:1.10

docker.io/library/nginx:1.10

##启动容器目的是拷贝配置文件到外部文件夹

[root@localhost ~]# docker run -p 80:80 --name nginx -d nginx:1.10

ce2458201cc6ab43880c2fe1cb9956b5fcdf7bfcc7803ff609ee05bfd78f7c15

##创建目录/ycmyconfig/nginx110

[root@localhost ycmyconfig]# cd nginx110/

##拷贝nginx配置文件到/ycmyconfig/nginx110的nginx目录下

###docker container cp nginx[容器的名称]:/etc/nginx .

[root@localhost nginx110]# docker container cp nginx:/etc/nginx .

###将/ycmyconfig/nginx110/nginx 重命名为 /ycmyconfig/nginx110/conf

[root@localhost nginx110]# mv nginx/ conf/

##停止容器

[root@localhost ~]# docker stop nginx

nginx

##删除容器

[root@localhost ~]# docker rm nginx

nginx

##创建两个目录 /ycmydata/nginx110/html;/ycmylogs/nginx110/logs

[root@localhost ~]# docker run -p 80:80 --name nginx \

> -v /ycmydata/nginx110/html:/usr/share/nginx/html \

> -v /ycmylogs/nginx110/logs:/var/log/nginx \

> -v /ycmyconfig/nginx110/conf:/etc/nginx \

> -d nginx:1.10

cfc9e4ce4a990a1935515c3b69c041dbe2af02963139493dd8927b78da676d80

# 注意一下这个路径映射到了/usr/share/nginx/html,我们在nginx配置文件中是写/usr/share/nginx/html,不是写/ycmydata/nginx110/html

[root@localhost conf]# cd /ycmydata/nginx110/html/

[root@localhost html]# vi index.html

填写如下内容

this is nginx110 html

保存退出

###浏览器访问:http://192.168.10.129:80/ 就会显示index.html内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值