• docker安装与简单使用


    CentOS 7 中 Docker 的安装

    Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令

    [root@localhost ~]# yum install docker

    查看docker版本

    [root@localhost ~]# docker version
    Client:
     Version:         1.13.1
     API version:     1.26
     Go version:      go1.10.3
     Git commit:      7d71120/1.13.1
     Built:           Wed Mar  2 15:25:43 2022
     OS/Arch:         linux/amd64
    
    Server:
     Version:         1.13.1
     API version:     1.26 (minimum version 1.12)
     Go version:      go1.10.3
     Git commit:      7d71120/1.13.1
     Built:           Wed Mar  2 15:25:43 2022
     OS/Arch:         linux/amd64
     Experimental:    false

    启动 Docker 服务

    安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

    [root@localhost ~]# systemctl  start docker.service
    [root@localhost ~]# systemctl  enable docker.service

    下载官方的 CentOS 镜像到本地

    [root@localhost ~]# docker pull centos:centos7
    Pulling repository centos
    192178b11d36: Download complete 
    70441cac1ed5: Download complete 
    ae0c2d0bdc10: Download complete 
    511136ea3c5a: Download complete 
    5b12ef8fd570: Download complete

    确认 CentOS 镜像已经被获取

    [root@localhost ~]# docker images centos
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/centos    latest              5d0da3dc9764        8 months ago        231 MB

    运行一个 Docker 容器

    过-it创建的容器,自动进入容器中,如果exit退出容器的话,容器也会自动停掉。

    所以t也可以换成d,d是以守护模式运行容器,不会直接进入容器。可以通过exec进入容器,退出命令也不会关闭容器。

    [root@localhost ~]# docker run -i -t centos /bin/bash
    [root@6c90089b786a /]# 

    我们可以看到 CentOS 容器已经被启动,并且我们看到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。

    若要断开与容器的连接,则输入 exit。

    [root@localhost ~]# docker run -i -t --name=vue_shop centos:7 /bin/bash
    [root@6c90089b786a /]# cat /etc/redhat-release 
    CentOS Linux release 8.4.2105
    [root@6c90089b786a /]# exit
    exit
    [root@localhost ~]# 

    显示当前正在运行容器的列表

    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    027096c4ba54        centos              "/bin/bash"         7 seconds ago       Up 6 seconds                            loving_golick
    [root@localhost ~]# 

     使docker中的项目一直后台运行

    Docker容器后台运行,就必须有一个前台进程.

    容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的

    docker容器的主线程(dockfile中CMD执行的命令)结束,容器会退出

    docker exec -id [CONTAINER_NAME or CONTAINER_ID] /bin/bash

    创建mysql容器

    [root@localhost ~]# docker pull mysql:5.7
    Trying to pull repository docker.io/library/mysql ...
    5.7: Pulling from docker.io/library/mysql
    c1ad9731b2c7: Pull complete
    54f6eb0ee84d: Pull complete
    cffcf8691bc5: Pull complete
    89a783b5ac8a: Pull complete
    6a8393c7be5f: Pull complete
    af768d0b181e: Pull complete
    810d6aaaf54a: Pull complete
    81fe6daf2395: Pull complete
    5ccf426818fd: Pull complete
    68b838b06054: Pull complete
    1b606c4f93df: Pull complete
    Digest: sha256:7e99b2b8d5bca914ef31059858210f57b009c40375d647f0d4d65ecd01d6b1d5
    Status: Downloaded newer image for docker.io/mysql:5.7

    启动mysql容器

    [root@localhost ~]# docker run mysql:5.7
    2022-05-28 09:06:01+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.38-1debian10 started.
    2022-05-28 09:06:01+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    2022-05-28 09:06:01+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.38-1debian10 started.
    2022-05-28 09:06:01+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
        You need to specify one of the following:
        - MYSQL_ROOT_PASSWORD
        - MYSQL_ALLOW_EMPTY_PASSWORD
        - MYSQL_RANDOM_ROOT_PASSWORD

    显示没有设置密码,需要设置密码(docker容器名称为 vue_shop,端口号为3318,映射宿主机的3306端口,mysql版本5.7)

    [root@localhost ~]# docker run -itd --name vue_shop -e MYSQL_ROOT_PASSWORD=admin1234 -p 3318:3306 mysql:5.7
    e958660a0cb61f4761ae06addd28d51e1c7d11a14f25ba3f487b9ab25b88cf12

     看到上面的一大串字符,说明数据库的服务已经启动,root 账号密码已更改为 admin1234

    进入mysql容器并登录mysql

    docker exec -it vue_shop bash
    
    mysql -u root -p

    开启数据库远程访问权限

    use mysql;
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin1234';
    grant all privileges on *.* to 'root'@'%';

    到此,数据库的安装完成,可以使用Navicat进行远程连接 ,连接的端口号为docker中 mysql 的端口号3318

    上面的创建的容器,修改配置时需要在docker里面修改,为方便操作,我们可以在宿主机创建配置文件,在创建容器时指定使用的配置文件,后续操作可更方便

    1、创建映射文件夹

    mkdir -p /docker/mysql/log   # 日志文件
    mkdir -p /docker/mysql/data   # 数据文件
    mkdir -p /docker/mysql/conf   # 配置文件

    2、新建配置文件my.cnf,加入如下内容

    vim /docker/mysql/conf/my.cnf  # 新建配置文件
    
    # 内容 [client] default_character_set
    =utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8

    创建并启动实例(注意容器名称不能重复,已存在时会报错):

    docker run -itd --name dockerMysql --privileged=true -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=admin1234 -p 3333:3306 mysql:5.7

     

    增加挂本地目录

    Docker容器启动时,如果要挂载宿主机上的一个目录,可以用-v参数指定

    docker run -itd --name=dockerMysql -v /usr/local/share:/usr/data centos /bin/bash

    在容器启动后,容器内会自动创建/data2的目录。

    -v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

    冒号”:”前后的路径必须是绝对路径,以下斜线“/”开头。

    宿主机目录如果不存在,则会自动生成。

    现在镜像内就可以在宿主机和docker里互相共享文件了。

    docker容器的其他操作

    1、创建容器并等待执行

    docker create --name < container-name> < image-name>

    2、运行容器

    docker run --name < container-name> < image-name>

    3、暂停容器

    docker pause < container-id/ name>

    4、取消暂停

    docker unpause < container-id/ name>

    5、启动容器

    docker start < container- id/ name>

    6、重启容器

    docker restart < container- id/ name>

    7、停止容器

    docker stop < container- id/ name>

    8、杀死容器

    docker kill < container- id/ name>

    9、销毁容器

    docker rm < container-id/ name>

    10、进入容器

    docker exec -it 容器名称 /bin/bash

    Ubuntu安装docker

    卸载旧版本

    sudo apt-get remove docker docker-engine docker.io containerd runc

    设置仓库及安装 apt 依赖包

    sudo apt-get update
    
    sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common

    添加 Docker 的官方 GPG 密钥:

    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

    9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

    sudo apt-key fingerprint 0EBFCD88
       
    pub   rsa4096 2017-02-22 [SCEA]
          9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
    uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
    sub   rsa4096 2017-02-22 [S]

    使用以下指令设置稳定版仓库

    sudo add-apt-repository \
       "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
      $(lsb_release -cs) \
      stable"

    安装 Docker Engine-Community

    sudo apt-get install docker-ce docker-ce-cli containerd.io

    安装完docker后,运行命令报docker权限问题

    Got permission denied while trying to connect to the Docker daemon socket at 。。。

    解决办法

    sudo groupadd docker    # 添加docker用户组,可能会出现 docker is exist 报错,忽略运行后面命令即可
    
    sudo gpasswd -a $USER docker  # 将登陆用户加入到docker用户组中
    
    newgrp docker  # 更新用户组,ubuntu 18.04需要重启生效
  • 相关阅读:
    无废话WPF系列9: Binding的源
    无废话WPF系列7:WPF布局控件
    无废话WPF系列6:各类控件家族详解
    无废话WPF系列13:路由事件
    无废话WPF系列4: x名称空间
    无废话WPF系列12: 依赖属性和附加属性
    用C++设计一个不能被继承的类
    HMM的介绍及实现
    C语言综合实验3—计算器四则运算
    机器学习基础
  • 原文地址:https://www.cnblogs.com/DeryKong/p/16321062.html
Copyright © 2020-2023  润新知