docker环境部署

docker环境部署

1、centos7操作系统安装

参考

https://blog.csdn.net/qq_44714603/article/details/88829423

2、contos升级

yum update -y

3、关闭防火墙

systemctl stop firewalld

4、安装docker依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置docker仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
yum clean all 
yum makecache fast

6、安装docker

yum -y install docker-ce docker-ce-cli containerd.io

7、设置docker开机自启动

systemctl enable docker

8、启动docker

systemctl start docker

9、配置docker加速

vi /etc/docker/daemon.json

添加内容,其中https://4vfegp0w.mirror.aliyuncs.com为个人阿里的加速连接,如果有自己的请使用自己的连接

{"registry-mirrors":["https://4vfegp0w.mirror.aliyuncs.com"]}

systemctl daemon-reload
 
systemctl restart docker

10、安装docker compose

docker compose地址

https://github.com/docker/compose/releases

下载docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

修改权限

chmod +x /usr/local/bin/docker-compose

创建连接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

查看版本

docker-compose --version

11、安装docker可视化管理工具portainer

docker search portainer
 
docker pull portainer/portainer
 
docker images
 
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name Prtainer portainer/portainer  
[–restart=always 开机自启动容器]
docker ps -a
 
http://10.30.17.134:9000/    #密码:admin888

12、使用Dockerfile创建自己的docker镜像

sudo mkdir compose_test
sudo chmod 755 compose_test
cd compose_test/
sudo touch Dockerfile
sudo chmod 755 Dockerfile

添加Dockerfile的脚本

sudo vi Dockerfile

脚本示例

# Set the base image to CentOS
FROM centos:7
# File Auther / Maintainer
Maintainer lin 155202653@qq.com
# Install necessary tools && redis
RUN yum install -y gcc gcc-c++ make openssl openssl-devel wget\
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -zxf redis.tar.gz \
&& cd redis-5.0.3 \
&& make && make PREFIX=/usr/local/redis install \
&& mkdir -p /usr/local/redis/conf/ \
&& cp redis.conf  /usr/local/redis/conf/ \
&& sed -i  '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf \
&& sed -i  '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf
# Expose ports
EXPOSE 6379
# Set the default command to execute when creating a new container
ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

创建镜像

sudo docker build -t centos_redis . #创建镜像,.表示在当前路径下查找dockerfile

结果

[lin@VM-0-6-centos compose_test]$ sudo docker build -t centos_redis .
Sending build context to Docker daemon   2.56kB
Step 1/4 : FROM centos:7
 ---> 8652b9f0cb4c
Step 2/4 : RUN yum install -y gcc gcc-c++ make openssl openssl-devel wget&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && tar -zxf redis.tar.gz && cd redis-5.0.3 && make && make PREFIX=/usr/local/redis install && mkdir -p /usr/local/redis/conf/ && cp redis.conf  /usr/local/redis/conf/ && sed -i  '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf && sed -i  '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf
 ---> Running in 48af9d1dcabe
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
Resolving Dependencies
......
......
......
make[1]: Leaving directory `/redis-5.0.3/src'
cd src && make install
make[1]: Entering directory `/redis-5.0.3/src'
    CC Makefile.dep
make[1]: Leaving directory `/redis-5.0.3/src'
make[1]: Entering directory `/redis-5.0.3/src'

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory `/redis-5.0.3/src'
Removing intermediate container 48af9d1dcabe
 ---> 7104dc2b7d37
Step 3/4 : EXPOSE 6379
 ---> Running in e19ab8864f9d
Removing intermediate container e19ab8864f9d
 ---> 6dcb88cfe64a
Step 4/4 : ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
 ---> Running in 0ed10ee51506
Removing intermediate container 0ed10ee51506
 ---> 1cca1f9d7949
Successfully built 1cca1f9d7949
Successfully tagged centos_redis:latest
[lin@VM-0-6-centos compose_test]$ sudo docker images
REPOSITORY                      TAG           IMAGE ID       CREATED         SIZE
centos_redis                    latest        1cca1f9d7949   4 minutes ago   575MB
mynginx                         v1.0          3ec26d6717bd   2 hours ago     133MB

创建并运行容器

sudo docker run -d --name myredis -p 6379:6379  centos_redis:latest

查看容器

[lin@VM-0-6-centos compose_test]$ sudo docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                       NAMES
e9f01f32e977   centos_redis:latest   "/bin/sh -c '/usr/lo…"   5 seconds ago   Up 4 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   myredis

13、通过docker-compose管理docker

vi docker-compose.yml

添加compose的脚本(待补充)

参考redmine部署

14、docker相关命令

从dockerhub中查询镜像
docker search [keyword]

运行

sudo docker search nginx

结果

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        14793     [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   2019                 [OK]

从dockerhub拉取指定镜像
docker pull [images]:[version]

运行

sudo docker pull nginx:latest

结果

latest: Pulling from library/nginx
f7ec5a41d630: Pull complete
aa1efa14b3bf: Pull complete
b78b95af9b17: Pull complete
c7d6bca2b8dc: Pull complete
cf16cd8e71e0: Pull complete
0241c68333ef: Pull complete
Digest: sha256:75a55d33ecc73c2a242450a9f1cc858499d468f077ea942867e662c247b5e412
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
查看镜像信息列表(镜像是静态的)
docker images

运行

sudo docker images

结果

REPOSITORY                      TAG           IMAGE ID       CREATED       SIZE
nginx                           latest        62d49f9bab67   2 weeks ago   133MB
给镜像打上标签
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

运行

sudo docker tag nginx mynginx:v1.0

sudo docker images

结果

REPOSITORY                      TAG           IMAGE ID       CREATED       SIZE
mynginx                         v1.0          62d49f9bab67   2 weeks ago   133MB
nginx                           latest        62d49f9bab67   2 weeks ago   133MB
创建docker容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
--privileged容器将拥有访问主机所有设备的权限

通常情况下 [command] 填下/bin/bash即可。

特殊情况下,如需要在centos镜像中使用systemctl. 则应添加–privileged并设置[command ]为init(有时候启动不了,不是必须情况不要使用)

运行(一般将配置文件和数据通过-v参数映射到宿主机)

sudo docker run -d --name mynginx -p 9292:80 -v /data/mynginx:/data  nginx:latest

结果

sudo docker ps -a

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
1b55ff302630   nginx:latest   "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   0.0.0.0:9292->80/tcp, :::9292->80/tcp   mynginx
查看运行中的所有容器
docker ps -a # -a 列出所有容器,不加-a只列出运行中的容器

运行

sudo docker ps -a

结果

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
1b55ff302630   nginx:latest   "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   0.0.0.0:9292->80/tcp, :::9292->80/tcp   mynginx
启动/停止已部署的容器服务
docker start/stop

运行停止

sudo docker stop 1b55ff302630

结果

1b55ff302630
[lin@VM-0-6-centos ~]$ sudo docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS     NAMES
1b55ff302630   nginx:latest   "/docker-entrypoint.…"   2 minutes ago   Exited (0) 2 seconds ago             mynginx

运行启动

sudo docker start 1b55ff302630

结果

1b55ff302630
[lin@VM-0-6-centos ~]$ sudo docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
1b55ff302630   nginx:latest   "/docker-entrypoint.…"   3 minutes ago   Up 6 seconds   0.0.0.0:9292->80/tcp, :::9292->80/tcp   mynginx
将宿主机内的指定文件传输至容器内部的指定地址
docker cp [YourHostFilePath] [containerID]:[DockerPath]

运行

sudo docker cp 1.txt 8b7640995472:/home/

结果

sudo docker exec -it 8b7640995472  /bin/bash
root@8b7640995472:/# ls /home/
1.txt
进入容器的终端交互模式

当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:

sudo docker exec -it [containerID] /bin/bash

运行

sudo docker exec -it 8b7640995472  /bin/bash

结果

root@8b7640995472:/# ls
bin   data  docker-entrypoint.d   etc   lib    media  opt   root  sbin  sys  usr
boot  dev   docker-entrypoint.sh  home  lib64  mnt    proc  run   srv   tmp  var

exit命令退出容器

镜像制作(将修改后的容器重新打包成镜像)
docker commit [containerID] [ImageName]:[Version]

运行

sudo docker commit -a "lin" -m "my nginx" 8b7640995472 mynginx:v1.0

结果

sha256:3ec26d6717bd9f0e9db84867056fc932841a39ebd8d9ef36b70cb2eee2f90bc9
[lin@VM-0-6-centos ~]$ sudo docker images
REPOSITORY                      TAG           IMAGE ID       CREATED         SIZE
mynginx                         v1.0          3ec26d6717bd   2 seconds ago   133MB

参数说明

-a :提交的镜像作者;
-c:使用Dockerfile指令来创建镜像;
-m:提交时的说明文字;
-p:在commit时,将容器暂停。
提交镜像到云仓库
docker push [ImageID] [repertory_address]
删除容器
docker rm [containerID]

运行

sudo docker rm 1b55ff302630

结果(运行中的容器不能直接删除,需要加参数-f)

Error response from daemon: You cannot remove a running container 1b55ff30263004803caeb1d44a1baf89e3747b574ae644d6e96156b7c972dc10. Stop the container before attempting removal or force remove

运行

[lin@VM-0-6-centos ~]$ sudo docker rm 1b55ff302630 -f

结果

1b55ff302630
[lin@VM-0-6-centos ~]$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
删除镜像
docker rmi [imageID]

运行前

[lin@VM-0-6-centos ~]$ sudo docker images
REPOSITORY                      TAG           IMAGE ID       CREATED       SIZE
mynginx                         v1.0          62d49f9bab67   2 weeks ago   133MB
nginx                           latest        62d49f9bab67   2 weeks ago   133MB

运行

sudo docker rmi 62d49f9bab67

结果(tag过image id有重复的情况下出现下面错误)

Error response from daemon: conflict: unable to delete 62d49f9bab67 (must be forced) - image is referenced in multiple repositories

解决方案:

  • 通过镜像名称和tag删除

    sudo docker rmi mynginx:v1.0

    Untagged: mynginx:v1.0

  • 通过加-f参数强制删除

    sudo docker rmi -f 62d49f9bab67

    Untagged: mynginx:v1.0
    Untagged: nginx:latest
    Untagged: nginx@sha256:75a55d33ecc73c2a242450a9f1cc858499d468f077ea942867e662c247b5e412
    Deleted: sha256:62d49f9bab67f7c70ac3395855bf01389eb3175b374e621f6f191bf31b54cd5b
    Deleted: sha256:3444fb58dc9e8338f6da71c1040e8ff532f25fab497312f95dcee0f756788a84
    Deleted: sha256:f85cfdc7ca97d8856cd4fa916053084e2e31c7e53ed169577cef5cb1b8169ccb
    Deleted: sha256:704bf100d7f16255a2bc92e925f7007eef0bd3947af4b860a38aaffc3f992eae
    Deleted: sha256:d5955c2e658d1432abb023d7d6d1128b0aa12481b976de7cbde4c7a31310f29b
    Deleted: sha256:11126fda59f7f4bf9bf08b9d24c9ea45a1194f3d61ae2a96af744c97eae71cbf
    Deleted: sha256:7e718b9c0c8c2e6420fe9c4d1d551088e314fe923dce4b2caf75891d82fb227d

15、docker-compose相关命令

构建建启动nignx容器

docker-compose up -d nginx

登录到nginx容器中

docker-compose exec nginx bash

删除所有nginx容器,镜像

docker-compose down

显示所有容器

docker-compose ps

重新启动nginx容器

docker-compose restart nginx

在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器

docker-compose run --no-deps --rm php-fpm php -v  

构建镜像

docker-compose build nginx

不带缓存的构

docker-compose build --no-cache nginx

查看nginx的日志

docker-compose logs  nginx

查看nginx的实时日志

docker-compose logs -f nginx                   

验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息

docker-compose config  -q

以json的形式输出nginx的docker日志

docker-compose events --json nginx       

暂停nignx容器

docker-compose pause nginx

恢复ningx容器

docker-compose unpause nginx

删除容器(删除前必须关闭容器)

docker-compose rm nginx   

停止nignx容器

docker-compose stop nginx

启动nignx容器

docker-compose start nginx

参考

docker命令

https://www.runoob.com/docker/docker-command-manual.html

docker命令行大全详解(更新中)

https://blog.csdn.net/talkxin/article/details/83061973

Docker入门(一)

https://blog.csdn.net/miss1181248983/article/details/82705183

Docker入门(二)

https://blog.csdn.net/miss1181248983/article/details/82774115

docker-compose教程(安装,使用, 快速入门)

https://blog.csdn.net/pushiqiang/article/details/78682323

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值