Docker 基本使用与常用环境

4 篇文章 0 订阅
3 篇文章 0 订阅

安装docker(Centos)

前期准备

我们docker 安装前应该配置一下电脑,为了方便演示docker的使用,以下操作均在centos7进行,并且使用 root 账号进行,我们先关闭防火墙。

systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止防火墙开机启动

关闭selinux(阿里云跳过)

/usr/sbin/sestatus -v #查看selinux 状态
# SELinux status: enabled 为开启

永久关闭 selinux ,编辑一下文件将 SELINUX=enforcing 改为 SELINUX=disabled 。

vi /etc/sysconfig/selinux

阿里云、腾讯云中默认关闭 selinux,不需要此操作;

微软云、自己安装的centos镜像默认开启;

不关闭可能会无法将容器中的卷挂载到磁盘或其他异常情况。记得 reboot 重启电脑

还有可能系统源不够新,可能出现问题,我们更新一下yum。

yum update -y #更新源

安装(centos7.x)

下面开始正式安装

#yum的方式安装docker
yum install docker -y
#启动docker服务
service docker start
#设置docker服务为开启启动
chkconfig docker on 

我此时演示安装的版本为 1.13.1,大家可以通过命令 docker version 查看。

基本配置

阿里加速

我们可以访问 阿里云容器服务 ,如果没有账号,那么可以注册一个。

使用 vi 编辑一下文件

vi /etc/docker/daemon.json

将其中{}中增加参数变为一下内容,为json格式,如果原来就有一些配置,那么在原来基础上添加即可。

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

或者新安装的 docker 可以直接

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

重载配置和重启docker

systemctl daemon-reload
systemctl restart docker

开启远程(用不到的跳过)

有时我们需要通过远程访问docker的方式,那么我们就要开启docker的远程访问。

  1. 编辑配置文件
vim /lib/systemd/system/docker.service
  1. 修改以下位置为
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
  1. 保存退出,然后加载配置
systemctl daemon-reload
  1. 重启服务
service docker restart
  1. 检查是否可以连接
curl http://localhost:2375/verion

也可以不在一个主机,用浏览器通过ip访问,如果主机可以访问,同网段下其他主机不能访问,请检查端口是否开放,阿里云等服务器需要配置放行。

安装与运行

常用命令

如果大家不想直接看命令可以到常用安装查看示例。这里主要简单的讲一下常见的命令,后面将会详细讲述常用功能对应的命令详细使用。

镜像操作

下面简单的介绍一下docker中镜像的查找、拉取、上传、删除、导入导出等

命令解释示例
search从仓库查找镜像docker search centos
pull从仓库获取镜像到本地docker pull centos
login登陆到仓库docker login
push上传镜像到仓库docker push centos
images查看本地镜像docker images
rmi删除本地镜像docker rmi centos
tag标记本地镜像docker tag docker.io/centos lu/centos:v1

容器操作

run
docker run centos
运行参数解释
常用参数作用解释
-e环境变量,容器启动所需要的环境变量值格式 key=value
-p端口映射,格式 8080:80 ,8080为主机端口号,80为容器端口号
-v挂载磁盘,/data:/var ,前面的是主机磁盘路径,后面为容器内路径
–name给容器起名字
-d后台运行
–restart配置重启策略:
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动

常用安装

mysql

以mysql5.7为例,: 号跟着版本,可以不进行pull,直接进行run,会自己进行下载镜像。

docker pull mysql:5.7

运行 mysql5.7

docker run --name mysql57 \
-e MYSQL_ROOT_PASSWORD=root \
--privileged=true \
-p 3306:3306 \
-d mysql:5.7 \
--lower_case_table_names=1

运行 mysql5.6

docker run --name mysql56p3306 \
-e MYSQL_ROOT_PASSWORD=root \
--privileged=true \
-p 3306:3306 \
-v /docker/mysql56p3306/data:/var/lib/mysql  \
-v /docker/mysql56p3306/conf.d:/etc/mysql/conf.d \
-d mysql:5.6 \
--lower_case_table_names=1

运行 mysql8

docker run --name mysql8 \
-e MYSQL_ROOT_PASSWORD=root \
--privileged=true \
-p 3306:3306 \
-v /docker/mysql8p3306/data:/var/lib/mysql  \
-v /docker/mysql8p3306/conf.d:/etc/mysql/conf.d \
-d mysql \
--lower_case_table_names=1

以上参数参考来源docker官网 mysql 部分,下面是部分参数解释

  • –name 指定此容器的名字为mysql57,之后使用名字进行重启、停止、删除等
  • MYSQL_ROOT_PASSWORD 用于设置root账户默认密码
  • 3306:3306 将主机的3306端口映射到容器的3306端口,当然主机端口可以修改,mysql容器端口必须为3306,这是由容器镜像决定的
  • -v 为磁盘的映射,我们可以通过此映射进行主机和容器的数据交互
  • -d 后台运行
  • –privileged=true 赋予权限,解决目录权限不足问题。
  • –lower_case_table_names=1 忽略大小写。

mysql 想要远程连接还需要设置开启远程访问

mysql -uroot -proot
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;

nginx

docker run --name nginx80 \
-p 80:80 \
--privileged=true \
-v /docker/nginx80/conf.d:/etc/nginx/conf.d \
-v /docker/nginx80/html:/usr/share/nginx/html \
-v /docker/nginx80/logs:/var/log/nginx \
-d nginx

使用 https 443 ssl

docker run --name nginx80 \
-p 80:80 \
-p 443:443 \
--privileged=true \
-v /docker/nginx80/conf.d:/etc/nginx/conf.d \
-v /docker/nginx80/html:/usr/share/nginx/html \
-v /docker/nginx80/logs:/var/log/nginx \
-v /docker/nginx80/ssl:/ssl \
-d nginx

挂载目录解释

/docker/nginx80/conf.d:/etc/nginx/conf.d 用于放置配置文件,方便在宿主机修改配置文件。

/docker/nginx80/html:/usr/share/nginx/html 用于放置html静态网页,方便在宿主机替换网页。

/docker/nginx80/logs:/var/log/nginx 日志方便在宿主机查看。

/docker/nginx80/ssl:/ssl 挂载ssl 证书路径。

创建配置到 /docker/nginx80/conf.d ,当然此配置可以根据需要自行配置,下面以默认配置为例。

vim default.conf
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

配置ssh https

新建ssh 配置文件 https_params,注意修改自己的证书路径。

listen 443 ssl;
ssl_certificate   /ssl/****.com.pem; #根据实际修改,路径为容器内路径
ssl_certificate_key  /ssl/****.com.key; #根据实际修改,路径为容器内路径
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
if ( $scheme != https )
{
	rewrite ^/(.*) https://$host/$1 permanent;
}

server {} 中添加一行

include /etc/nginx/conf.d/https_params;

注意:路径问题,以上两处配置的路径应该是容器内的路径。

配置如vue之类单页应用在 serverlocation中 添加配置:

try_files  $uri $uri/ /index.html;

mongo

docker run --name mongo27017 \
-p 27017:27017 \
-v /docker/mongo34p27017:/data/db \
-d  mongo:3.4

创建用户修改密码

#进入容器
docker exec -it mongo27017 mongo admin

#创建用户和密码
db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }); 
#验证一下对不对
db.auth("admin","123456");
#退出
exit


修改密码 
use admin;
switched to db admin
> db.changeUserPassword('admin','88889999'); 

redis

docker run --name redis6379 \
--privileged=true \
-p 6379:6379 \
-v /docker/redis6379/data:/data \
--restart=always \
-d redis

gitlab中文

docker run \
    --detach \
    --publish 8443:443 \
    --publish 10080:80 \
    --name gitlab \
    --restart unless-stopped \
    --volume /docker/gitlab/etc:/etc/gitlab \
    --volume /docker/gitlab/log:/var/log/gitlab \
    --volume /docker/gitlab/data:/var/opt/gitlab \
    beginor/gitlab-ce:11.3.0-ce.0

启动完成访问 http:ip:10080

第一次访问需要修改密码

gitea

docker run  --name=gitea \
-p 10022:22 -p 10080:3000 \
-v /data/gitea:/data \
-d gitea/gitea:latest

rabbitmq

docker run -d --hostname rabbithost \
--name rabbitmq \
-e RABBITMQ_DEFAULT_USER=guest \
-e RABBITMQ_DEFAULT_PASS=guest \
-p 15672:15672 \
-p 5672:5672 \
rabbitmq:3-management

RABBITMQ_DEFAULT_USER设置默认用户名

RABBITMQ_DEFAULT_PASS 设置默认密码

映射端口 15672 为web访问端口,5672为服务端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值