Docker使用从入门到“放弃”

1. 基本介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app), 更重要的是容器性能开销极低。

2. 安装

安装前先关闭selinix, 重启系统

vi /etc/selinux/config 修改 SELINUX=disabled 
安装
yum install docker
启动
systemctl start docker
停止
systemctl stop docker
自启动
systemctl enable docker

3. 基本使用

(1)拉取镜像

docker pull name:tag

举例:

如:安装mysql

docker pull docker.io/mysql:5.7.27

docker run -itd -p 3306:3306 \
--restart=always \
--privileged=true \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql mysql:5.7.27 

(2)创建容器运行实例

docker run [镜像名]

-i 以交互模式运行容器
-t 为容器重新分配一个伪输入终端
-d 后台运行容器,并返回容器ID;
-p 端口映射   (外部端口:容器内部端口)
-e 环境变量
--restart 重启docker时是否自启动该容器
--privileged 给容器添加特权,可以访问宿主机的文件
--name 给容器取名
-v	挂载宿主机的文件夹或文件到容器的特定文件夹或文件

(3)查看docker正在运行的进程

​ docker ps

(4)查看所有已创建的docker容器

​ docker ps -a

(5)进入docker容器

​ docker exec -it [容器id] /bin/bash

添加配置文件
vim /root/mysql/conf/my.cnf
###
[mysqld]
default-time-zone = '+08:00'
###

(6)重启容器

​ docker restart [容器id]

(7)Docker WEB UI

tips: 可以使用web ui 进行 docker 容器可视化管理

docker pull docker.io/portainer/portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --privileged=true --name prtainer-test portainer/portainer

4. 其它命令

(1)批量启动所有容器

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

(2)批量停止所有

docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

(3)批量删除所有

docker rm $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

(4)停止正在运行的容器

docker kill $(docker ps -a -q)

(5)删除所有已经停止的容器

docker rm $(docker ps -a -q)

(6)删除所有镜像

docker rmi $(docker images -q)

(7)更新参数

如使重启docker时容器自动启动:

docker container update --restart=always [容器ID]

5.样例

(1)安装mysql

docker pull docker.io/mysql:5.7.27

docker run -itd -p 3306:3306 \
--restart=always \
--privileged=true \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql mysql:5.7.27 

(2)安装nginx

​ 1. 安装

宿主机创建文件夹
mkdir /root/nginx

拉取镜像
docker pull nginx

运行nginx容器
docker run -d --name mynginx -it -p 80:80 \
--restart=always \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf:/etc/conf \
-v /root/nginx/logs:/var/log/nginx \
--privileged=true \
nginx

  1. 配置文件

    /root/nginx/conf/nginx.conf

    #user  nobody;
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    
  2. 重启nginx服务

    docker exec -i {容器ID} nginx -s reload

(3)安装RabbitMQ

docker run -d --hostname rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 4369:4369 -p 15671:15671 -p 5671:5671 -p 25672:25672 -p 15672:15672 -p 5672:5672 rabbitmq:3.8.3-management

6.镜像操作

(1)保存容器到镜像

​ docker commit -a “作者” -m “容器描述” [容器ID] [保存的镜像名]:[TAG]

docker commit -a "yangjing" -m "mysql with vim" a404c6c174a2 my-mysql:5.7.27

(2)与宿主机相互复制文件

​ docker cp [宿主机文件路径] [容器ID]:[容器路径]

docker cp /root/abc.txt  96f7f14e99ab:/var/abc.txt

​ docker cp [容器ID]:[容器路径] [宿主机文件路径]

docker cp 96f7f14e99ab:/var/abc.txt  /root/abc.txt 

(3)将镜像保存到本地文件

​ docker save -o [本地文件路径] [镜像名]:[TAG]

docker save -o /root/my-mysql.tar  my-mysql:5.7.27

(4)从本地镜像加载到docker

​ docker load < [文件名]

docker load < my-mysql.tar

7.Java构建docker镜像

(1)Dockerfile

① 基本java程序打包到容器运行

# 使用含有openjdk8的基础镜像
FROM openjdk:8
MAINTAINER jim
# 添加该文件到容器中
ADD file-test-0.0.1-SNAPSHOT.jar app.jar
# 向外部暴露端口
EXPOSE 81
# 启动时执行该命令
ENTRYPOINT ["java","-jar","/app.jar"]

(2)构建

docker build -t jim/file-test .
# 构建完成查看
docker images

(3) 运行

docker run -it -d -p 81:81 jim/file-test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值