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需要重启生效

 

posted @ 2022-05-28 16:48  DeyouKong  阅读(428)  评论(0编辑  收藏  举报