Docker常用安装与配置

898 阅读5分钟

环境:aliyun centos7.14

安装Docker

  • 安装
yum install docker
  • 检查
docker -v
  • 服务
systemctl status docker		// docker状态
systemctl stop docker		// 停止
systemctl start docker		// 启动
systemctl restart docker	// 重启
systemctl enable docker		// 开机启动
  • 检查
docker run hello-world

常用命令

与常用的linux命令一样,使用docker --help即可查看docker COMMAND,下面是即将用到的几个命令

  • 从注册中心拉取镜像或仓库
dokcer pull [image/repository name]:[verson]
  • 查看本地所有的镜像
docker images
  • 查看运行的容器
docker ps
  • 查看所有容器
docker ps -a
  • 启动容器
docker start [container]
  • 停止容器
docker stop [container]
  • 安装容器,详细命令可查看,docker run --help
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-d :在后台运行一个容器

-i : 运行容器

-t : 进入命令行模式,及伪终端

-name : 给容器取名

-v : 目录映射,宿主机与容器之间的目录映射

-p : 端口映射,宿主机与容器之间的端口映射

  • 退出容器
exit

实战: 容器部署

配置镜像源

Docker 镜像仓库配置国内镜像源,同maven一样,docker hub的远程仓库在国外,拉取速度慢,因此可以配置一个国内的镜像源

  • 编辑文件
vim /etc/docker/daemon.json
  • 配置如下:
{
    "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",
        "http://hub-mirror.c.163.com",
        "https://registry.docker-cn.com"
    ]
}

这4个地址分别对应中国国防科技,网易,docker中国

也可以配置aliyun的docker仓库,具体可参考官网进行配置属于自己的仓库

  • 配置完成后,重启docker服务
systemctl restart docker

MySql使用

安装

  • 拉取MySql镜像
docker pull mysql:5.7

具体版本可参考官网

  • 创建容器-简易版
docker run -di --name docker_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7
  • 创建容器-目录挂载版
docker run --name docker_mysql -p 3306:3306 \
-v /root/mydocker/mysql/log:/var/log/mysql \
-v /root/mydocker/mysql/data:/var/lib/mysql \
-v /root/mydocker/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql:5.7

log:日志 lib:持久化数据文件 etc:配置文件

精简配置

[client]
default-character-set = utf8mb4

[mysql]
#auto-rehash
default-character-set = utf8mb4

[mysqld]
port=3306
# 禁用主机名解析
skip-name-resolve
# 默认的数据库引擎
default-storage-engine = InnoDB

### 字符集配置
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
#行级日志
binlog_format = row

说明:

-di : 创建一个守护式容器,创建后在后台运行

--name docker_mysql : 容器命名为docker_mysql

-p 33306:3306 : 端口映射,宿主机端口端口33306对应docker中3306端口

-e MYSQL_ROOT_PASSWORD=1234 : 添加环境变量,mysql的root用户密码为1234

-mysql:5.7 : 指定运行的镜像名称及其版本

  • 查看容器中mysql运行
docker ps | grep docker_mysql
  • 查看docker_mysql信息
docker inspect docker_mysql
  • 进入docker_mysql容器,并登录mysql
[root@chet01 ~]# docker exec -it docker_mysql bash
root@8cda7c791c74:/# mysql -uroot -p

注: 如果进入容器后,没有vim,需要apt-get upate, apt-get install -y vim。如果update失败,很可能是需要配置镜像源,由于没有vim,可以用以下命令

mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
echo 'deb http://mirrors.163.com/debian/ jessie main non-free contrib' > /etc/apt/sources.list && \
echo 'deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib' >> /etc/apt/sources.list && \
echo 'deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib' >> /etc/apt/sources.list

进入容器的mysql:

docker exec -it docker_mysql mysql -uroot -p

查看日志:

docker logs -f [container]

远程连接

这里使用navicat作为图形化工具远程连接,效果如下

Nginx使用

映射目录

  • 在宿主机中创建目录
mkdir ~/mydocker/nginx/log
mkdir ~/mydocker/nginx/conf
mkdir ~/mydocker/nginx/html

三个目录分别对应nginx中日志位置(/var/log/nginx/),配置文件位置(/etc/nginx/),项目位置(/usr/share/nginx/html)

安装

  • 拉取镜像
docker pull nginx
  • 运行容器
docker run -di --name docker_nginx -d -p 80:80
 -v /root/mydocker/nginx/log:/var/log/nginx
 -v /root/mydocker/nginx/conf:/etc/nginx/conf.d
 -v /root/mydocker/nginx/nginx.conf:/etc/nginx/nginx/conf
 -v /root/mydocker/nginx/html:/lx/html nginx
  • 重启docker中nginx
docker exec -it docker_nginx nginx -s reload
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
  • 验证nginx的配置
docker exec -it docker_nginx nginx -t
  • 查看nginx挂载情况
docker inspect docker_nginx | grep Mounts -A 20

修改映射文件

  • 修改宿主机中nginx的配置文件
vim ~/mydocker/nginx/conf/app.conf

内容如下:

server {
    listen       80;
    server_name  127.0.0.1;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /lx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
  • 配置访问页面
vim ~/mydocker/nginx/html/index.html

简要内容:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to nginx!</title>
</head>
<body>
<h1>hello nginx</h1>
</body>
</html>

重启docker中的nginx,浏览器访问服务器地址

配置端口转发

现在希望用户访问我的80端口时,直接跳转到我的hexo博客端口4000,只需要简单修改配置文件即可

  • 修改app.conf

改动如下:

重启nginx,重新访问即可

如果你的aliyun配置了域名解析,访问域名也可以直接访问

Redis使用

安装

docker pull redis

启动

docker run --name docker-redis -p 6179:6379 \
-v /Users/yc/Developments/DockerDir/redis1/data:/data \
-v /Users/yc/Developments/DockerDir/redis1/conf/redis.conf:/etc/redis/redis.conf \
-d redis:5 redis-server /etc/redis/redis.conf

conf说明

  • 参考官网配置文件

  • 主要修改:

#bind 127.0.0.1
protected-mode no
requirepass [password]
daemonize yes

进入客服端

docker exec -it docker_redis redis-cli -a [password]

连接测试如图


基于运行的容器创建镜像

docker commit -a "chet" -m "v2" 26d37678b18c clamav-ups:v2

MongoDb使用

  • 安装
docker pull mongo
docker run --restart=always -p 27117:27017 --name docker-mongodb -v /Users/yc/Developments/DockerDir/mongodb1:/data/db -d mongo --auth
  • 配置
docker exec -it docker-mongodb mongo admin

db.createUser({user: 'admin', pwd: '1234', roles: [{role: "root", db: "admin"}]});

  • 登录
docker exec -it docker-mongodb mongo admin

db.auth("admin", "1234");

  • 连接